From 11fe84a742776757a72fc4690dfaa3b0efca6250 Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Wed, 21 Nov 2018 18:42:50 +0100 Subject: [PATCH] Minimal switch of substrate-node to GRANDPA /Aura (#1128) * add beginnings of SRML grandpa library * get srml-grandpa compiling * tests for srml-grandpa * add optional session integration to grandpa SRML * start integration into node runtime * Allow extracting pending change from header digest * Make it compile on wasm * make tests compile again * Move Authority Key fetching into service, simplify service factory construction * Generalize Authority Consensus Setup system * Add Authority Setup Docs * Allow CLI params to be extensible - move params to structopts - split parsing and default command execution - add custom config to node - extended parsing of custom config - extending params via structop's flatten * Minor fixes on cli extension params: - added docs - re-add actual app name, rather than node-name - make strategy and subcommand optional * better cli params * synchronize GRANDPA and normal node authorities * Implement grandpa::network for gossip consensus * run_grandpa in Node * Fix missed merge error * Integrate grandpa import queue * more specific type def * link up linkhalf and import block * make grandpa future send * get compiling * Fix new params convention and license header * get it running * rebuild node runtime WASM * change logging level * Update node/cli/src/params.rs Co-Authored-By: rphmeier * Update node/cli/src/params.rs Co-Authored-By: rphmeier * Update node/cli/src/lib.rs Co-Authored-By: rphmeier * Update node/runtime/src/lib.rs Co-Authored-By: rphmeier * Update node/cli/src/lib.rs Co-Authored-By: rphmeier * Clean up and Fixme for mutable config * Move GrandpaService Integration into grandpa, feature gated but on per default * Fixing grandpa runtime module test * Update wasm runtime hashes for tests * GRANDPA: use post-header hash when logging scheduled changes * add an extra bit of logging to authorities * fixing missing constrain * remove old code * move `NewAuthorities` to an event in srml-grandpa * fix node-executor tests to use grandpa log * Remove GossipConsensus from tests, use newly provided sync-feature, fixes tests * Update to latest wasm runtimes * address grumbles * address grumbles * only derive deserialize when using std * Clean up use of Deserialize --- substrate/Cargo.lock | 301 ++++++++++------- substrate/Cargo.toml | 1 + substrate/core/cli/Cargo.toml | 7 +- substrate/core/cli/src/cli.yml | 253 --------------- substrate/core/cli/src/lib.rs | 170 +++++----- substrate/core/cli/src/params.rs | 216 +++++++++++++ .../core/consensus/common/src/block_import.rs | 40 ++- substrate/core/finality-grandpa/Cargo.toml | 8 +- .../finality-grandpa/primitives/src/lib.rs | 16 + .../core/finality-grandpa/src/authorities.rs | 14 +- substrate/core/finality-grandpa/src/lib.rs | 116 +++++-- .../src/service_integration.rs | 40 +++ substrate/core/finality-grandpa/src/tests.rs | 22 +- .../core/network/src/consensus_gossip.rs | 58 +--- substrate/core/network/src/lib.rs | 2 +- substrate/core/network/src/protocol.rs | 17 + substrate/core/network/src/service.rs | 14 +- substrate/core/network/src/test/mod.rs | 35 +- substrate/core/service/src/chain_ops.rs | 5 +- substrate/core/service/src/components.rs | 10 +- substrate/core/service/src/lib.rs | 75 ++++- .../core/sr-primitives/src/generic/digest.rs | 4 +- substrate/core/sr-primitives/src/lib.rs | 8 +- substrate/core/sr-primitives/src/testing.rs | 23 +- substrate/core/sr-primitives/src/traits.rs | 10 +- substrate/core/test-runtime/src/lib.rs | 15 +- .../substrate_test_runtime.compact.wasm | Bin 45224 -> 45224 bytes substrate/node/cli/Cargo.toml | 9 + substrate/{core => node}/cli/build.rs | 12 +- .../cli/doc/shell-completion.adoc | 0 substrate/node/cli/src/chain_spec.rs | 10 +- substrate/node/cli/src/cli.yml | 12 - substrate/node/cli/src/lib.rs | 38 ++- substrate/node/cli/src/params.rs | 33 ++ substrate/node/cli/src/service.rs | 114 ++++--- substrate/node/executor/Cargo.toml | 1 + substrate/node/executor/src/lib.rs | 57 +++- substrate/node/primitives/src/lib.rs | 2 +- substrate/node/runtime/Cargo.toml | 2 + substrate/node/runtime/src/lib.rs | 36 ++- substrate/node/runtime/wasm/Cargo.lock | 21 +- substrate/node/runtime/wasm/Cargo.toml | 6 +- .../release/node_runtime.compact.wasm | Bin 612546 -> 639289 bytes substrate/srml/balances/src/lib.rs | 2 +- substrate/srml/balances/src/mock.rs | 2 +- substrate/srml/consensus/src/lib.rs | 2 +- substrate/srml/consensus/src/mock.rs | 2 +- substrate/srml/council/src/lib.rs | 2 +- substrate/srml/democracy/src/lib.rs | 2 +- substrate/srml/grandpa/Cargo.toml | 35 ++ substrate/srml/grandpa/src/lib.rs | 303 ++++++++++++++++++ substrate/srml/grandpa/src/mock.rs | 79 +++++ substrate/srml/grandpa/src/tests.rs | 108 +++++++ substrate/srml/session/src/lib.rs | 9 + substrate/srml/staking/src/mock.rs | 2 +- substrate/srml/support/src/dispatch.rs | 3 + substrate/srml/support/src/metadata.rs | 2 +- .../srml/support/src/storage/generator.rs | 2 +- substrate/srml/system/src/lib.rs | 2 +- 59 files changed, 1694 insertions(+), 696 deletions(-) delete mode 100644 substrate/core/cli/src/cli.yml create mode 100644 substrate/core/cli/src/params.rs create mode 100644 substrate/core/finality-grandpa/src/service_integration.rs rename substrate/{core => node}/cli/build.rs (91%) rename substrate/{core => node}/cli/doc/shell-completion.adoc (100%) delete mode 100644 substrate/node/cli/src/cli.yml create mode 100644 substrate/node/cli/src/params.rs create mode 100644 substrate/srml/grandpa/Cargo.toml create mode 100644 substrate/srml/grandpa/src/lib.rs create mode 100644 substrate/srml/grandpa/src/mock.rs create mode 100644 substrate/srml/grandpa/src/tests.rs diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index 7a7ba66182..ef32ae3c9b 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -40,12 +40,11 @@ dependencies = [ [[package]] name = "aio-limited" version = "0.1.0" -source = "git+https://github.com/paritytech/aio-limited.git#a7c0bd6944902b1c9fb2bcf4f8fe1412c824b5b9" +source = "git+https://github.com/paritytech/aio-limited.git#f01b01501c87c93d3005f9120cc35d0e576fa7a3" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -85,7 +84,7 @@ name = "arrayvec" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -354,7 +353,7 @@ dependencies = [ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "simplelog 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -396,11 +395,11 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -411,21 +410,21 @@ dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-epoch" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -443,6 +442,14 @@ name = "crossbeam-utils" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crossbeam-utils" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crunchy" version = "0.1.6" @@ -516,7 +523,7 @@ dependencies = [ "chashmap 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -586,7 +593,7 @@ dependencies = [ "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -642,9 +649,9 @@ name = "failure_derive" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -710,7 +717,7 @@ name = "fs-swap" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -784,7 +791,7 @@ dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -825,6 +832,14 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "heck" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "hex" version = "0.3.2" @@ -894,12 +909,12 @@ dependencies = [ "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hyper" -version = "0.12.13" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -989,21 +1004,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "jsonrpc-core" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-http-server" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ - "hyper 0.12.13 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-server-utils 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1014,7 +1029,7 @@ dependencies = [ [[package]] name = "jsonrpc-macros" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", @@ -1024,7 +1039,7 @@ dependencies = [ [[package]] name = "jsonrpc-pubsub" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1034,12 +1049,12 @@ dependencies = [ [[package]] name = "jsonrpc-server-utils" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1050,7 +1065,7 @@ dependencies = [ [[package]] name = "jsonrpc-ws-server" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#a39139f92e7c92bddbd67372c556aad110f02e89" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", @@ -1126,11 +1141,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazy_static" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "lazycell" @@ -1196,7 +1208,7 @@ dependencies = [ "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1233,7 +1245,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1253,7 +1265,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1280,7 +1292,7 @@ dependencies = [ "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1364,7 +1376,7 @@ dependencies = [ "libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1386,7 +1398,7 @@ dependencies = [ "hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", @@ -1518,7 +1530,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1666,7 +1678,7 @@ name = "native-tls" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1704,7 +1716,9 @@ dependencies = [ name = "node-cli" version = "0.1.0" dependencies = [ + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "node-executor 0.1.0", @@ -1715,9 +1729,11 @@ dependencies = [ "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", + "structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-cli 0.3.0", "substrate-client 0.1.0", "substrate-consensus-aura 0.1.0", + "substrate-finality-grandpa 0.1.0", "substrate-keystore 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", @@ -1740,6 +1756,7 @@ dependencies = [ "srml-balances 0.1.0", "srml-consensus 0.1.0", "srml-contract 0.1.0", + "srml-grandpa 0.1.0", "srml-session 0.1.0", "srml-staking 0.1.0", "srml-support 0.1.0", @@ -1791,6 +1808,7 @@ dependencies = [ "srml-council 0.1.0", "srml-democracy 0.1.0", "srml-executive 0.1.0", + "srml-grandpa 0.1.0", "srml-session 0.1.0", "srml-staking 0.1.0", "srml-support 0.1.0", @@ -1806,7 +1824,7 @@ dependencies = [ [[package]] name = "nodrop" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1873,7 +1891,7 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1926,8 +1944,8 @@ name = "parity-codec-derive" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2091,7 +2109,7 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "0.4.20" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2099,7 +2117,7 @@ dependencies = [ [[package]] name = "protobuf" -version = "2.1.2" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2140,10 +2158,10 @@ dependencies = [ [[package]] name = "quote" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2201,7 +2219,7 @@ dependencies = [ [[package]] name = "rayon" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2215,7 +2233,7 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2247,12 +2265,12 @@ dependencies = [ [[package]] name = "regex" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2267,7 +2285,7 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2357,7 +2375,7 @@ dependencies = [ [[package]] name = "ryu" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2383,7 +2401,7 @@ name = "schannel" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2440,18 +2458,18 @@ name = "serde_derive" version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2541,7 +2559,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2588,7 +2606,7 @@ dependencies = [ "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-std 0.1.0", "substrate-primitives 0.1.0", @@ -2768,6 +2786,25 @@ dependencies = [ "substrate-primitives 0.1.0", ] +[[package]] +name = "srml-grandpa" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-session 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-finality-grandpa-primitives 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "srml-metadata" version = "0.1.0" @@ -2937,11 +2974,11 @@ name = "stdweb-derive" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2950,13 +2987,13 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base-x 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2982,6 +3019,26 @@ name = "strsim" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "structopt" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt-derive 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "structopt-derive" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "subkey" version = "0.1.0" @@ -3016,12 +3073,13 @@ dependencies = [ "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", + "structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-client 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", @@ -3159,7 +3217,7 @@ dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3193,6 +3251,7 @@ dependencies = [ "substrate-keyring 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", + "substrate-service 0.3.0", "substrate-test-client 0.1.0", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3214,7 +3273,7 @@ name = "substrate-keyring" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", ] @@ -3228,7 +3287,7 @@ dependencies = [ "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3276,7 +3335,7 @@ dependencies = [ "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3325,7 +3384,7 @@ dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-version 0.1.0", "substrate-client 0.1.0", @@ -3355,7 +3414,7 @@ name = "substrate-serializer" version = "0.1.0" dependencies = [ "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3365,13 +3424,13 @@ dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", @@ -3440,7 +3499,7 @@ dependencies = [ name = "substrate-telemetry" version = "0.3.0" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3559,18 +3618,18 @@ name = "syn" version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.16" +version = "0.15.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3579,9 +3638,9 @@ name = "synstructure" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3592,7 +3651,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3683,7 +3742,7 @@ name = "thread_local" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3780,7 +3839,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3819,7 +3878,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3847,7 +3906,7 @@ name = "tokio-threadpool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4033,6 +4092,11 @@ name = "unicode-normalization" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "unicode-segmentation" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-width" version = "0.1.5" @@ -4075,7 +4139,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "url" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4126,7 +4190,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "wabt-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4177,7 +4241,7 @@ dependencies = [ "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tls 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4239,7 +4303,7 @@ dependencies = [ "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4257,7 +4321,7 @@ dependencies = [ "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4282,7 +4346,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "yamux" version = "0.1.0" -source = "git+https://github.com/paritytech/yamux#966f2730f7a32150f282eef29fd2aecb14d7b9fa" +source = "git+https://github.com/paritytech/yamux#8f3d16e7645447645d3552a52159d56c8a01de27" dependencies = [ "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4343,11 +4407,12 @@ dependencies = [ "checksum criterion-stats 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c71521cb4c7b7eac76b540e75447fb0172c4234d6333729001b886aaa21d6da4" "checksum crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "bd66663db5a988098a89599d4857919b3acf7f61402e61365acfd3919857b9be" "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" -"checksum crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3486aefc4c0487b9cb52372c97df0a48b8c249514af1ee99703bf70d2f2ceda1" +"checksum crossbeam-deque 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4fe1b6f945f824c7a25afe44f62e25d714c0cc523f8e99d8db5cd1026e1269d3" "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" -"checksum crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30fecfcac6abfef8771151f8be4abc9e4edc112c2bcb233314cafde2680536e9" +"checksum crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2449aaa4ec7ef96e5fb24db16024b935df718e9ae1cec0a1e68feeca2efca7b8" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" "checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" +"checksum crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c55913cc2799171a550e307918c0a360e8c16004820291bf3b638969b4a01816" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" "checksum crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c240f247c278fa08a6d4820a6a222bfc6e0d999e51ba67be94f44c905b2161f2" "checksum crypto-mac 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0999b4ff4d3446d4ddb19a63e9e00c1876e75cd7000d20e57a693b4b3f08d958" @@ -4394,6 +4459,7 @@ dependencies = [ "checksum hash-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" +"checksum heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea04fa3ead4e05e51a7c806fc07271fdbde4e246a6c6d1efd52e72230b771b82" "checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" "checksum hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4da5f0e01bd8a71a224a4eedecaacfcabda388dbb7a80faf04d3514287572d95" "checksum hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d340b6514f232f6db1bd16db65302a5278a04fef9ce867cb932e7e5fa21130a" @@ -4402,7 +4468,7 @@ dependencies = [ "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e" "checksum hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "df0caae6b71d266b91b4a83111a61d2b94ed2e2bea024c532b933dcff867e58c" -"checksum hyper 0.12.13 (registry+https://github.com/rust-lang/crates.io-index)" = "95ffee0d1d30de4313fdaaa485891ce924991d45bbc18adfc8ac5b1639e62fbb" +"checksum hyper 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2f60ae467ef4fc5eba9a34d31648c9c8ed902faf45a217f6734ce9ea64779ac7" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" "checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" @@ -4425,7 +4491,7 @@ dependencies = [ "checksum kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "06cf755dc587839ba34d3cbe3f12b6ad55850fbcdfe67336157a021a1a5c43ae" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" -"checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7" +"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" "checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" "checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" @@ -4470,7 +4536,7 @@ dependencies = [ "checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" -"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nohash-hasher 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "27593c72432b8cec9ae79e92792a73c38341064d525b6b612a9fccf8b7d17407" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" @@ -4505,28 +4571,28 @@ dependencies = [ "checksum proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c725b36c99df7af7bf9324e9c999b9e37d92c8f8caf106d82e1d7953218d2d8" "checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" "checksum proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1b06e2f335f48d24442b35a19df506a835fb3547bc3c06ef27340da9acf5cae7" -"checksum proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "3d7b7eaaa90b4a90a932a9ea6666c95a389e424eff347f0f793979289429feee" -"checksum protobuf 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8e95ac45a1e122e1b62c3f23bbe51574c39d06d1c8c5a2a5676de497d0a84a34" +"checksum proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)" = "88dae56b29da695d783ea7fc5a90de281f79eb38407e77f6d674dd8befc4ac47" +"checksum protobuf 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "671a9cce836bd3635b40b2b0a72783481755ee988c493891f4e974b45264cc9d" "checksum pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07" "checksum pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "efd695333cfae6e9dbe2703a6d040e252b57a6fc3b9a65c712615ac042b2e0c5" "checksum quick-error 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb6ccf8db7bbcb9c2eae558db5ab4f3da1c2a87e4e597ed394726bc8ea6ca1d" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" -"checksum quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "63b5829244f52738cfee93b3a165c1911388675be000c888d2fae620dee8fa5b" +"checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c" "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" "checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" "checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" "checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" -"checksum rayon 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "df7a791f788cb4c516f0e091301a29c2b71ef680db5e644a7d68835c8ae6dbfa" +"checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" "checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" "checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" -"checksum regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2069749032ea3ec200ca51e4a31df41759190a88edca0d2d86ee8bedf7073341" +"checksum regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ee84f70c8c08744ea9641a731c7fadb475bf2ecc52d7f627feb833e0b3990467" "checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" -"checksum regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "747ba3b235651f6e2f67dfa8bcdcd073ddb7c243cb21c442fc12395dfcac212d" +"checksum regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fbc557aac2b708fe84121caf261346cc2eed71978024337e42eb46b8a252ac6e" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" "checksum rhododendron 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a09bc21b21795c366c8bf0e87afb71175f5f736b3a5b279b6f4e81839d0a877b" "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" @@ -4537,7 +4603,7 @@ dependencies = [ "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" -"checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" +"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" "checksum safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347" "checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" "checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" @@ -4550,7 +4616,7 @@ dependencies = [ "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef" "checksum serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "225de307c6302bec3898c51ca302fc94a7a1697ef0845fcee6448f33c032249c" -"checksum serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)" = "43344e7ce05d0d8280c5940cabb4964bea626aa58b1ec0e8c73fa2a8512a38ce" +"checksum serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "c37ccd6be3ed1fdf419ee848f7c758eb31b054d7cd3ae3600e3bae0adf569811" "checksum sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cc30b1e1e8c40c121ca33b86c23308a090d19974ef001b4bf6e61fd1a0fb095c" "checksum sha1 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "171698ce4ec7cbb93babeb3190021b4d72e96ccb98e33d277ae4ea959d6f2d9e" "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" @@ -4575,11 +4641,13 @@ dependencies = [ "checksum stream-cipher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "30dc6118470d69ce0fdcf7e6f95e95853f7f4f72f80d835d4519577c323814ab" "checksum string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00caf261d6f90f588f8450b8e1230fa0d5be49ee6140fdfbcb55335aff350970" "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" +"checksum structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "41c4a2479a078509940d82773d90ff824a8c89533ab3b59cd3ce8b0c0e369c02" +"checksum structopt-derive 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "5352090cfae7a2c85e1a31146268b53396106c88ca5d6ccee2e3fae83b6e35c2" "checksum subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc7f6353c2ee5407358d063a14cccc1630804527090a6fb5a9489ce4924280fb" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum syn 0.13.11 (registry+https://github.com/rust-lang/crates.io-index)" = "14f9bf6292f3a61d2c716723fdb789a41bbe104168e6f496dc6497e531ea1b9b" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" -"checksum syn 0.15.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0b78d53b5e1b6e63129140b1336877c3bddbae398c7956150396bdad0e28676c" +"checksum syn 0.15.20 (registry+https://github.com/rust-lang/crates.io-index)" = "8886c8d2774e853fcd7d9d2131f6e40ba46c9c0e358e4d57178452abd6859bb0" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum sysinfo 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "11c5f6e8a7a7146f26ffed9a5ff8bab2706f1ac8a413a415e1d211b819d5c24d" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" @@ -4627,13 +4695,14 @@ dependencies = [ "checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" +"checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum unsigned-varint 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5c1441164e5da61f00acd15f5a9e61939693c2c6e8b9fae36a220b82de7e212" "checksum unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb8abc4b7d8158bdfbbaaccc35331ed3c30c2673e99000d7ae665a2eb6576f4" "checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" -"checksum url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2a321979c09843d272956e73700d12c4e7d3d92b2ee112b31548aef0d4efc5a6" +"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" diff --git a/substrate/Cargo.toml b/substrate/Cargo.toml index 7be891ec59..98c433f605 100644 --- a/substrate/Cargo.toml +++ b/substrate/Cargo.toml @@ -48,6 +48,7 @@ members = [ "srml/democracy", "srml/example", "srml/executive", + "srml/grandpa", "srml/metadata", "core/sr-primitives", "srml/session", diff --git a/substrate/core/cli/Cargo.toml b/substrate/core/cli/Cargo.toml index 1552791b26..871daef9f3 100644 --- a/substrate/core/cli/Cargo.toml +++ b/substrate/core/cli/Cargo.toml @@ -3,10 +3,9 @@ name = "substrate-cli" version = "0.3.0" authors = ["Parity Technologies "] description = "Substrate CLI interface." -build = "build.rs" [dependencies] -clap = { version = "~2.32", features = ["yaml"] } +clap = "~2.32" backtrace = "0.3" env_logger = "0.5" error-chain = "0.12" @@ -30,6 +29,4 @@ substrate-primitives = { path = "../../core/primitives" } substrate-service = { path = "../../core/service" } substrate-telemetry = { path = "../../core/telemetry" } names = "0.11.0" - -[build-dependencies] -clap = "~2.32" +structopt = "0.2.13" diff --git a/substrate/core/cli/src/cli.yml b/substrate/core/cli/src/cli.yml deleted file mode 100644 index fed66ad91d..0000000000 --- a/substrate/core/cli/src/cli.yml +++ /dev/null @@ -1,253 +0,0 @@ -name: {name} -author: {author} -about: {description} -args: - - log: - short: l - long: log - value_name: LOG_PATTERN - help: Sets a custom logging filter - takes_value: true - - base-path: - long: base-path - short: d - value_name: PATH - help: Specify custom base path - takes_value: true - - keystore-path: - long: keystore-path - value_name: PATH - help: Specify custom keystore path - takes_value: true - - key: - long: key - value_name: STRING - help: Specify additional key seed - takes_value: true - - node-key: - long: node-key - value_name: KEY - help: Specify node secret key (64-character hex string) - takes_value: true - - validator: - long: validator - help: Enable validator mode - takes_value: false - - light: - long: light - help: Run in light client mode - takes_value: false - - dev: - long: dev - help: Run in development mode; implies --chain=dev --validator --key Alice - takes_value: false - - listen-addr: - long: listen-addr - value_name: LISTEN_ADDR - help: Listen on this multiaddress - takes_value: true - multiple: true - - port: - long: port - value_name: PORT - help: Specify p2p protocol TCP port. Only used if --listen-addr is not specified. - takes_value: true - - rpc-external: - long: rpc-external - help: Listen to all RPC interfaces (default is local) - takes_value: false - - ws-external: - long: ws-external - help: Listen to all Websocket interfaces (default is local) - takes_value: false - - rpc-port: - long: rpc-port - value_name: PORT - help: Specify HTTP RPC server TCP port - takes_value: true - - ws-port: - long: ws-port - value_name: PORT - help: Specify WebSockets RPC server TCP port - takes_value: true - - bootnodes: - long: bootnodes - value_name: URL - help: Specify a list of bootnodes - takes_value: true - multiple: true - - reserved-nodes: - long: reserved-nodes - value_name: URL - help: Specify a list of reserved node addresses - takes_value: true - multiple: true - - out-peers: - long: out-peers - value_name: OUT_PEERS - help: Specify the number of outgoing connections we're trying to maintain - takes_value: true - - in-peers: - long: in-peers - value_name: IN_PEERS - help: Specify the maximum number of incoming connections we're accepting - takes_value: true - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification (one of dev, local or staging) - takes_value: true - - pruning: - long: pruning - value_name: PRUNING_MODE - help: Specify the pruning mode, a number of blocks to keep or "archive". Default is 256. - takes_value: true - - name: - long: name - value_name: NAME - help: The human-readable name for this node, as reported to the telemetry server, if enabled - takes_value: true - - telemetry: - short: t - long: telemetry - help: Should connect to the Substrate telemetry server (telemetry is off by default on local chains) - takes_value: false - - no-telemetry: - long: no-telemetry - help: Should not connect to the Substrate telemetry server (telemetry is on by default on global chains) - takes_value: false - - telemetry-url: - long: telemetry-url - value_name: TELEMETRY_URL - help: The URL of the telemetry server. Implies --telemetry - takes_value: true - - execution: - long: execution - value_name: STRATEGY - help: The means of execution used when calling into the runtime. Can be either wasm, native or both. -subcommands: - - build-spec: - about: Build a spec.json file, outputing to stdout - args: - - raw: - long: raw - help: Force raw genesis storage output. - takes_value: false - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification (one of dev, local or staging) - takes_value: true - - dev: - long: dev - help: Specify the development chain - takes_value: false - - export-blocks: - about: Export blocks to a file - args: - - OUTPUT: - index: 1 - help: Output file name or stdout if unspecified. - required: false - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification. - takes_value: true - - dev: - long: dev - help: Specify the development chain - takes_value: false - - base-path: - long: base-path - short: d - value_name: PATH - help: Specify custom base path. - takes_value: true - - from: - long: from - value_name: BLOCK - help: Specify starting block number. 1 by default. - takes_value: true - - to: - long: to - value_name: BLOCK - help: Specify last block number. Best block by default. - takes_value: true - - json: - long: json - help: Use JSON output rather than binary. - takes_value: false - - import-blocks: - about: Import blocks from file. - args: - - INPUT: - index: 1 - help: Input file or stdin if unspecified. - required: false - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification. - takes_value: true - - dev: - long: dev - help: Specify the development chain - takes_value: false - - base-path: - long: base-path - short: d - value_name: PATH - help: Specify custom base path. - takes_value: true - - execution: - long: execution - value_name: STRATEGY - help: The means of execution used when executing blocks. Can be either wasm, native or both. - - api-execution: - long: api-execution - value_name: STRATEGY - help: The means of execution used when calling into the runtime. Can be either wasm, native or both. - - max-heap-pages: - long: max-heap-pages - value_name: COUNT - help: The maximum number of 64KB pages to ever allocate for Wasm execution. Don't alter this unless you know what you're doing. - - revert: - about: Revert chain to the previous state - args: - - NUM: - index: 1 - help: Number of blocks to revert. Default is 256. - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification. - takes_value: true - - dev: - long: dev - help: Specify the development chain - takes_value: false - - base-path: - long: base-path - short: d - value_name: PATH - help: Specify custom base path. - takes_value: true - - purge-chain: - about: Remove the whole chain data. - args: - - chain: - long: chain - value_name: CHAIN_SPEC - help: Specify the chain specification. - takes_value: true - - dev: - long: dev - help: Specify the development chain - takes_value: false - - base-path: - long: base-path - short: d - value_name: PATH - help: Specify custom base path. - takes_value: true diff --git a/substrate/core/cli/src/lib.rs b/substrate/core/cli/src/lib.rs index 8aec489457..a435a53d51 100644 --- a/substrate/core/cli/src/lib.rs +++ b/substrate/core/cli/src/lib.rs @@ -50,7 +50,10 @@ extern crate clap; extern crate error_chain; #[macro_use] extern crate log; +#[macro_use] +extern crate structopt; +mod params; pub mod error; pub mod informant; mod panic_hook; @@ -72,6 +75,8 @@ use std::path::{Path, PathBuf}; use std::str::FromStr; use names::{Generator, Name}; use regex::Regex; +use structopt::StructOpt; +pub use params::{CoreParams, CoreCommands, ExecutionStrategy}; use futures::Future; @@ -90,11 +95,11 @@ pub struct VersionInfo { } /// CLI Action -pub enum Action { +pub enum Action { /// Substrate handled the command. No need to do anything. ExecutedInternally, /// Service mode requested. Caller should start the service. - RunService((FactoryFullConfiguration, E)), + RunService(E), } /// Something that can be converted into an exit signal. @@ -117,7 +122,7 @@ fn load_spec(matches: &clap::ArgMatches, factory: F) -> Result PathBuf { - matches.value_of("base-path") + matches.value_of("base_path") .map(|x| Path::new(x).to_owned()) .unwrap_or_else(default_base_path) } @@ -145,84 +150,42 @@ fn is_node_name_valid(_name: &str) -> Result<(), &str> { Ok(()) } -/// Parse command line arguments and execute commands or return service configuration. -/// -/// IANA unassigned port ranges that we could use: -/// 6717-6766 Unassigned -/// 8504-8553 Unassigned -/// 9556-9591 Unassigned -/// 9803-9874 Unassigned -/// 9926-9949 Unassigned -pub fn prepare_execution( - args: I, - exit: E, - version: VersionInfo, - spec_factory: S, - impl_name: &'static str, -) -> error::Result> +/// Parse command line arguments +pub fn parse_args_default<'a, I, T>(args: I, version: VersionInfo) -> clap::ArgMatches<'a> where I: IntoIterator, T: Into + Clone, - E: IntoExit, - F: ServiceFactory, - S: FnOnce(&str) -> Result>>, String>, { - panic_hook::set(); - let full_version = service::config::full_version_from_strs( version.version, version.commit ); - let yaml = format!(include_str!("./cli.yml"), - name = version.executable_name, - description = version.description, - author = version.author, - ); - let yaml = &clap::YamlLoader::load_from_str(&yaml).expect("Invalid yml file")[0]; - let matches = match clap::App::from_yaml(yaml) + + match CoreParams::clap() + .name(version.executable_name) + .author(version.author) + .about(version.description) .version(&(full_version + "\n")[..]) .get_matches_from_safe(args) { Ok(m) => m, Err(e) => e.exit(), - }; - - // TODO [ToDr] Split parameters parsing from actual execution. - let log_pattern = matches.value_of("log").unwrap_or(""); - init_logger(log_pattern); - fdlimit::raise_fd_limit(); - - if let Some(matches) = matches.subcommand_matches("build-spec") { - let spec = load_spec(&matches, spec_factory)?; - build_spec::(matches, spec)?; - return Ok(Action::ExecutedInternally); } +} - if let Some(matches) = matches.subcommand_matches("export-blocks") { - let spec = load_spec(&matches, spec_factory)?; - export_blocks::(matches, spec, exit.into_exit())?; - return Ok(Action::ExecutedInternally); - } - - if let Some(matches) = matches.subcommand_matches("import-blocks") { - let spec = load_spec(&matches, spec_factory)?; - import_blocks::(matches, spec, exit.into_exit())?; - return Ok(Action::ExecutedInternally); - } - - if let Some(matches) = matches.subcommand_matches("revert") { - let spec = load_spec(&matches, spec_factory)?; - revert_chain::(matches, spec)?; - return Ok(Action::ExecutedInternally); - } - - if let Some(matches) = matches.subcommand_matches("purge-chain") { - let spec = load_spec(&matches, spec_factory)?; - purge_chain::(matches, spec)?; - return Ok(Action::ExecutedInternally); - } +/// Parse clap::Matches into config and chain specification +pub fn parse_matches<'a, F, S>( + spec_factory: S, + version: VersionInfo, + impl_name: &'static str, + matches: &clap::ArgMatches<'a> +) -> error::Result<(ChainSpec<::Genesis>, FactoryFullConfiguration)> +where + F: ServiceFactory, + S: FnOnce(&str) -> Result>>, String>, +{ let spec = load_spec(&matches, spec_factory)?; - let mut config = service::Configuration::default_with_spec(spec); + let mut config = service::Configuration::default_with_spec(spec.clone()); config.impl_name = impl_name; config.impl_commit = version.commit; @@ -284,14 +247,14 @@ where config.network.config_path = Some(network_path(&base_path, config.chain_spec.id()).to_string_lossy().into()); config.network.net_config_path = config.network.config_path.clone(); config.network.reserved_nodes.extend(matches - .values_of("reserved-nodes") + .values_of("reserved_nodes") .map_or(Default::default(), |v| v.map(|n| n.to_owned()).collect::>())); if !config.network.reserved_nodes.is_empty() { config.network.non_reserved_mode = NonReservedPeerMode::Deny; } config.network.listen_addresses = Vec::new(); - for addr in matches.values_of("listen-addr").unwrap_or_default() { + for addr in matches.values_of("listen_addr").unwrap_or_default() { let addr = addr.parse().map_err(|_| "Invalid listen multiaddress")?; config.network.listen_addresses.push(addr); } @@ -310,17 +273,17 @@ where config.network.public_addresses = Vec::new(); config.network.client_version = config.client_id(); - config.network.use_secret = match matches.value_of("node-key").map(H256::from_str) { + config.network.use_secret = match matches.value_of("node_key").map(H256::from_str) { Some(Ok(secret)) => Some(secret.into()), Some(Err(err)) => return Err(format!("Error parsing node key: {}", err).into()), None => None, }; - let in_peers = match matches.value_of("in-peers") { + let in_peers = match matches.value_of("in_peers") { Some(in_peers) => in_peers.parse().map_err(|_| "Invalid in-peers value specified.")?, None => 25, }; - let out_peers = match matches.value_of("out-peers") { + let out_peers = match matches.value_of("out_peers") { Some(out_peers) => out_peers.parse().map_err(|_| "Invalid out-peers value specified.")?, None => 25, }; @@ -334,20 +297,73 @@ where config.keys.push("Alice".into()); } - let rpc_interface: &str = if matches.is_present("rpc-external") { "0.0.0.0" } else { "127.0.0.1" }; - let ws_interface: &str = if matches.is_present("ws-external") { "0.0.0.0" } else { "127.0.0.1" }; + let rpc_interface: &str = if matches.is_present("rpc_external") { "0.0.0.0" } else { "127.0.0.1" }; + let ws_interface: &str = if matches.is_present("ws_external") { "0.0.0.0" } else { "127.0.0.1" }; - config.rpc_http = Some(parse_address(&format!("{}:{}", rpc_interface, 9933), "rpc-port", &matches)?); - config.rpc_ws = Some(parse_address(&format!("{}:{}", ws_interface, 9944), "ws-port", &matches)?); + config.rpc_http = Some(parse_address(&format!("{}:{}", rpc_interface, 9933), "rpc_port", &matches)?); + config.rpc_ws = Some(parse_address(&format!("{}:{}", ws_interface, 9944), "ws_port", &matches)?); // Override telemetry - if matches.is_present("no-telemetry") { + if matches.is_present("no_telemetry") { config.telemetry_url = None; - } else if let Some(url) = matches.value_of("telemetry-url") { + } else if let Some(url) = matches.value_of("telemetry_url") { config.telemetry_url = Some(url.to_owned()); } - Ok(Action::RunService((config, exit))) + Ok((spec, config)) +} + +// +// IANA unassigned port ranges that we could use: +// 6717-6766 Unassigned +// 8504-8553 Unassigned +// 9556-9591 Unassigned +// 9803-9874 Unassigned +// 9926-9949 Unassigned + +/// execute default commands or return service configuration +pub fn execute_default<'a, F, E>( + spec: ChainSpec>, + exit: E, + matches: &clap::ArgMatches<'a> +) -> error::Result> +where + E: IntoExit, + F: ServiceFactory, +{ + + panic_hook::set(); + + let log_pattern = matches.value_of("log").unwrap_or(""); + init_logger(log_pattern); + fdlimit::raise_fd_limit(); + + if let Some(matches) = matches.subcommand_matches("build_spec") { + build_spec::(matches, spec)?; + return Ok(Action::ExecutedInternally); + } + + if let Some(matches) = matches.subcommand_matches("export_blocks") { + export_blocks::(matches, spec, exit.into_exit())?; + return Ok(Action::ExecutedInternally); + } + + if let Some(matches) = matches.subcommand_matches("import_blocks") { + import_blocks::(matches, spec, exit.into_exit())?; + return Ok(Action::ExecutedInternally); + } + + if let Some(matches) = matches.subcommand_matches("revert") { + revert_chain::(matches, spec)?; + return Ok(Action::ExecutedInternally); + } + + if let Some(matches) = matches.subcommand_matches("purge_chain") { + purge_chain::(matches, spec)?; + return Ok(Action::ExecutedInternally); + } + + Ok(Action::RunService(exit)) } fn build_spec(matches: &clap::ArgMatches, spec: ChainSpec>) -> error::Result<()> diff --git a/substrate/core/cli/src/params.rs b/substrate/core/cli/src/params.rs new file mode 100644 index 0000000000..a6e56f33f2 --- /dev/null +++ b/substrate/core/cli/src/params.rs @@ -0,0 +1,216 @@ +// Copyright 2018 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use std::path::PathBuf; +use structopt::StructOpt; + +#[derive(Debug, StructOpt)] +#[structopt(name = "Substrate")] +pub struct CoreParams { + #[structopt(short = "l", long = "log", value_name = "LOG_PATTERN", help = "Sets a custom logging filter")] + log: Option, + + #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path", parse(from_os_str))] + base_path: Option, + + #[structopt(long = "keystore-path", value_name = "PATH", help = "Specify custom keystore path", parse(from_os_str))] + keystore_path: Option, + + #[structopt(long = "key", value_name = "STRING", help = "Specify additional key seed")] + key: Option, + + #[structopt(long = "node-key", value_name = "KEY", help = "Specify node secret key (64-character hex string)")] + node_key: Option, + + #[structopt(long = "validator",help = "Enable validator mode")] + validator: bool, + + #[structopt(long = "light", help = "Run in light client mode")] + light: bool, + + #[structopt(long = "dev", help = "Run in development mode; implies --chain=dev --validator --key Alice")] + dev: bool, + + #[structopt(long = "listen-addr", value_name = "LISTEN_ADDR", help = "Listen on this multiaddress")] + listen_addr: Vec, + + #[structopt(long = "port", value_name = "PORT", help = "Specify p2p protocol TCP port. Only used if --listen-addr is not specified.")] + port: Option, + + #[structopt(long = "rpc-external", help = "Listen to all RPC interfaces (default is local)")] + rpc_external: bool, + + #[structopt(long = "ws-external", help = "Listen to all Websocket interfaces (default is local)")] + ws_external: bool, + + #[structopt(long = "rpc-port", value_name = "PORT", help = "Specify HTTP RPC server TCP port")] + rpc_port: Option, + + #[structopt(long = "ws-port", value_name = "PORT", help = "Specify WebSockets RPC server TCP port")] + ws_port: Option, + + #[structopt(long = "bootnodes", value_name = "URL", help = "Specify a list of bootnodes")] + bootnodes: Vec, + + #[structopt(long = "reserved-nodes", value_name = "URL", help = "Specify a list of reserved node addresses")] + reserved_nodes: Vec, + + #[structopt(long = "out-peers", value_name = "OUT_PEERS", help = "Specify the number of outgoing connections we're trying to maintain")] + out_peers: Option, + + #[structopt(long = "in-peers", value_name = "IN_PEERS", help = "Specify the maximum number of incoming connections we're accepting")] + in_peers: Option, + + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification (one of dev, local or staging)")] + chain: Option, + + #[structopt(long = "pruning", value_name = "PRUNING_MODE", help = "Specify the pruning mode, a number of blocks to keep or 'archive'. Default is 256.")] + pruning: Option, + + #[structopt(long = "name", value_name = "NAME", help = "The human-readable name for this node, as reported to the telemetry server, if enabled")] + name: Option, + + #[structopt(short = "t", long = "telemetry", help = "Should connect to the Substrate telemetry server (telemetry is off by default on local chains)")] + telemetry: bool, + + #[structopt(long = "no-telemetry", help = "Should not connect to the Substrate telemetry server (telemetry is on by default on global chains)")] + no_telemetry: bool, + + #[structopt(long = "telemetry-url", value_name = "TELEMETRY_URL", help = "The URL of the telemetry server. Implies --telemetry")] + telemetry_url: Option, + + #[structopt(long = "execution", value_name = "STRATEGY", help = "The means of execution used when calling into the runtime. Can be either wasm, native or both.")] + execution: Option, + + #[structopt(subcommand)] + cmds: Option, +} + +#[derive(Debug, StructOpt)] +pub enum ExecutionStrategy { + Native, + Wasm, + Both, +} + +impl Default for ExecutionStrategy { + fn default() -> Self { + ExecutionStrategy::Both + } +} + +impl std::str::FromStr for ExecutionStrategy { + type Err = String; + fn from_str(input: &str) -> Result { + match input { + "native" => Ok(ExecutionStrategy::Native), + "wasm" | "webassembly" => Ok(ExecutionStrategy::Wasm), + "both" => Ok(ExecutionStrategy::Both), + _ => Err("Please specify either 'native', 'wasm' or 'both".to_owned()) + + } + } +} + +#[derive(Debug, StructOpt)] +pub enum CoreCommands { + #[structopt(name = "build-spec", about = "Build a spec.json file, outputing to stdout")] + BuildSpec { + #[structopt(long = "raw", help = "Force raw genesis storage output.")] + raw: bool, + + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification (one of dev, local or staging)")] + chain: Option, + + #[structopt(long = "dev", help = "Specify the development chain")] + dev: bool, + }, + + #[structopt(name = "export-blocks", about = "Export blocks to a file")] + ExportBlocks { + #[structopt(help = "Output file name or stdout if unspecified.", parse(from_os_str))] + OUTPUT: Option, + + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + chain: Option, + + #[structopt(long = "dev", help = "Specify the development chain")] + dev: bool, + + #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.")] + base_path: Option, + + #[structopt(long = "from", value_name = "BLOCK", help = "Specify starting block number. 1 by default.")] + from: Option, + + #[structopt(long = "to", value_name = "BLOCK", help = "Specify last block number. Best block by default.")] + to: Option, + + #[structopt(long = "json", help = "Use JSON output rather than binary.")] + json: bool, + }, + + #[structopt(name = "import-blocks", about = "Import blocks from file.")] + ImportBlocks { + #[structopt(help = "Input file or stdin if unspecified.", parse(from_os_str))] + INPUT: Option, + + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + chain: Option, + + #[structopt(long = "dev", help = "Specify the development chain")] + dev: bool, + + #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.", parse(from_os_str))] + base_path: Option, + + #[structopt(long = "execution", value_name = "STRATEGY", help = "The means of execution used when executing blocks. Can be either wasm, native or both.")] + execution: ExecutionStrategy, + + #[structopt(long = "api-execution", value_name = "STRATEGY", help = "The means of execution used when calling into the runtime. Can be either wasm, native or both.")] + api_execution: ExecutionStrategy, + + #[structopt(long = "max-heap-pages", value_name = "COUNT", help = "The maximum number of 64KB pages to ever allocate for Wasm execution. Don't alter this unless you know what you're doing.")] + max_heap_pages: Option, + }, + + #[structopt(name = "revert", about = "Revert chain to the previous state")] + Revert { + #[structopt(help = "Number of blocks to revert. Default is 256.")] + NUM: Option, + + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + chain: Option, + + #[structopt(long = "dev", help = "Specify the development chain")] + dev: bool, + + #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.", parse(from_os_str))] + base_path: Option, + }, + + #[structopt(name = "purge-chain", about = "Remove the whole chain data.")] + PurgeChain { + #[structopt(long = "chain", value_name = "CHAIN_SPEC", help = "Specify the chain specification.")] + chain: Option, + + #[structopt(long = "dev", help = "Specify the development chain")] + dev: bool, + + #[structopt(long = "base-path", short = "d", value_name = "PATH", help = "Specify custom base path.", parse(from_os_str))] + base_path: Option + } +} diff --git a/substrate/core/consensus/common/src/block_import.rs b/substrate/core/consensus/common/src/block_import.rs index 566e5bfb02..e92a691879 100644 --- a/substrate/core/consensus/common/src/block_import.rs +++ b/substrate/core/consensus/common/src/block_import.rs @@ -1,7 +1,25 @@ +// Copyright 2017-2018 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Block import helpers. use primitives::AuthorityId; -use runtime_primitives::traits::{Block as BlockT, DigestItemFor}; +use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, DigestItemFor}; use runtime_primitives::Justification; +use std::borrow::Cow; /// Block import result. #[derive(Debug)] @@ -89,6 +107,24 @@ impl ImportBlock { self.auxiliary, ) } + + /// Get a handle to full header (with post-digests applied). + pub fn post_header(&self) -> Cow { + use runtime_primitives::traits::Digest; + + if self.post_digests.is_empty() { + Cow::Borrowed(&self.header) + } else { + Cow::Owned({ + let mut hdr = self.header.clone(); + for digest_item in &self.post_digests { + hdr.digest_mut().push(digest_item.clone()); + } + + hdr + }) + } + } } @@ -101,4 +137,4 @@ pub trait BlockImport { block: ImportBlock, new_authorities: Option> ) -> Result; -} \ No newline at end of file +} diff --git a/substrate/core/finality-grandpa/Cargo.toml b/substrate/core/finality-grandpa/Cargo.toml index 9c03c2bc10..9fe2776744 100644 --- a/substrate/core/finality-grandpa/Cargo.toml +++ b/substrate/core/finality-grandpa/Cargo.toml @@ -4,13 +4,15 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -futures = "0.1.17" +futures = "0.1" parity-codec = "2.1" parity-codec-derive = "2.0" sr-primitives = { path = "../sr-primitives" } substrate-consensus-common = { path = "../consensus/common" } substrate-primitives = { path = "../primitives" } substrate-client = { path = "../client" } +substrate-network = { path = "../network" } +substrate-service = { path = "../service", optional = true } log = "0.4" parking_lot = "0.4" tokio = "0.1.7" @@ -25,3 +27,7 @@ substrate-network = { path = "../network", features = ["test-helpers"] } substrate-keyring = { path = "../keyring" } substrate-test-client = { path = "../test-client"} env_logger = "0.5" + +[features] +default = ["service-integration"] +service-integration = ["substrate-service"] diff --git a/substrate/core/finality-grandpa/primitives/src/lib.rs b/substrate/core/finality-grandpa/primitives/src/lib.rs index aaca423ecd..4940574533 100644 --- a/substrate/core/finality-grandpa/primitives/src/lib.rs +++ b/substrate/core/finality-grandpa/primitives/src/lib.rs @@ -17,6 +17,10 @@ //! Primitives for GRANDPA integration, suitable for WASM compilation. #![cfg_attr(not(feature = "std"), no_std)] +#![cfg_attr(not(feature = "std"), feature(alloc))] + +#[cfg(not(feature = "std"))] +extern crate alloc; extern crate substrate_primitives; extern crate sr_primitives; @@ -57,6 +61,14 @@ pub mod id { pub const GRANDPA_API: ApiId = *b"fgrandpa"; } +/// Well-known storage keys for GRANDPA. +pub mod well_known_keys { + /// The key for the authorities and weights vector in storage. + pub const AUTHORITY_PREFIX: &[u8] = b":grandpa:auth:"; + /// The key for the authorities count. + pub const AUTHORITY_COUNT: &[u8] = b":grandpa:auth:len"; +} + decl_runtime_apis! { /// APIs for integrating the GRANDPA finality gadget into runtimes. /// This should be implemented on the runtime side. @@ -76,6 +88,10 @@ decl_runtime_apis! { /// /// No change should be scheduled if one is already and the delay has not /// passed completely. + /// + /// This should be a pure function: i.e. as long as the runtime can interpret + /// the digest type it should return the same result regardless of the current + /// state. fn grandpa_pending_change(digest: DigestFor) -> Option>>; diff --git a/substrate/core/finality-grandpa/src/authorities.rs b/substrate/core/finality-grandpa/src/authorities.rs index c97769cb43..bdb6220fd6 100644 --- a/substrate/core/finality-grandpa/src/authorities.rs +++ b/substrate/core/finality-grandpa/src/authorities.rs @@ -50,7 +50,9 @@ impl SharedAuthoritySet { } impl SharedAuthoritySet - where N: Add + Ord + Clone + Debug +where + N: Add + Ord + Clone + Debug, + H: Debug { /// Get the earliest limit-block number, if any. pub(crate) fn current_limit(&self) -> Option { @@ -103,7 +105,9 @@ impl AuthoritySet { } impl AuthoritySet - where N: Add + Ord + Clone + Debug, +where + N: Add + Ord + Clone + Debug, + H: Debug { /// Note an upcoming pending transition. pub(crate) fn add_pending_change(&mut self, pending: PendingChange) { @@ -152,7 +156,11 @@ impl AuthoritySet // check if the block that signalled the change is canonical in // our chain. - if canonical(change.canon_height.clone())? == change.canon_hash { + let canonical_at_height = canonical(change.canon_height.clone())?; + debug!(target: "afg", "Evaluating potential set change at block {:?}. Our canonical hash is {:?}", + (&change.canon_height, &change.canon_hash), canonical_at_height); + + if canonical_at_height == change.canon_hash { // apply this change: make the set canonical info!(target: "finality", "Applying authority set change scheduled at block #{:?}", change.canon_height); diff --git a/substrate/core/finality-grandpa/src/lib.rs b/substrate/core/finality-grandpa/src/lib.rs index 85f2377670..956b87df0e 100644 --- a/substrate/core/finality-grandpa/src/lib.rs +++ b/substrate/core/finality-grandpa/src/lib.rs @@ -55,6 +55,7 @@ extern crate futures; extern crate substrate_client as client; extern crate sr_primitives as runtime_primitives; extern crate substrate_consensus_common as consensus_common; +extern crate substrate_network as network; extern crate substrate_primitives; extern crate tokio; extern crate parking_lot; @@ -64,8 +65,8 @@ extern crate substrate_finality_grandpa_primitives as fg_primitives; #[macro_use] extern crate log; -#[cfg(test)] -extern crate substrate_network as network; +#[cfg(feature="service-integration")] +extern crate substrate_service as service; #[cfg(test)] extern crate substrate_keyring as keyring; @@ -86,7 +87,7 @@ use client::{Client, error::Error as ClientError, ImportNotifications, backend:: use client::blockchain::HeaderBackend; use client::runtime_api::TaggedTransactionQueue; use codec::{Encode, Decode}; -use consensus_common::{BlockImport, ImportBlock, ImportResult}; +use consensus_common::{BlockImport, ImportBlock, ImportResult, Authorities}; use runtime_primitives::traits::{ NumberFor, Block as BlockT, Header as HeaderT, DigestFor, ProvideRuntimeApi }; @@ -98,6 +99,8 @@ use tokio::timer::Interval; use grandpa::Error as GrandpaError; use grandpa::{voter, round::State as RoundState, Equivocation, BlockNumberOps}; +use network::{Service as NetworkService, ExHashT}; +use network::consensus_gossip::{ConsensusMessage}; use std::collections::{VecDeque, HashMap}; use std::sync::Arc; use std::time::{Instant, Duration}; @@ -108,6 +111,11 @@ pub use fg_primitives::ScheduledChange; mod authorities; +#[cfg(feature="service-integration")] +mod service_integration; +#[cfg(feature="service-integration")] +pub use service_integration::{LinkHalfForService, BlockImportForService}; + #[cfg(test)] mod tests; @@ -173,7 +181,7 @@ impl From for Error { /// handle to a gossip service or similar. /// /// Intended to be a lightweight handle such as an `Arc`. -pub trait Network: Clone { +pub trait Network : Clone { /// A stream of input messages for a topic. type In: Stream,Error=()>; @@ -188,6 +196,52 @@ pub trait Network: Clone { fn drop_messages(&self, round: u64, set_id: u64); } +/// Bridge between NetworkService, gossiping consensus messages and Grandpa +pub struct NetworkBridge, H: ExHashT> { + service: Arc> +} + +impl, H: ExHashT> NetworkBridge { + /// Create a new NetworkBridge to the given NetworkService + pub fn new(service: Arc>) -> Self { + NetworkBridge { service } + } +} + + +impl, H: ExHashT> Clone for NetworkBridge { + fn clone(&self) -> Self { + NetworkBridge { + service: Arc::clone(&self.service) + } + } +} + +fn message_topic(round: u64, set_id: u64) -> B::Hash { + use runtime_primitives::traits::Hash as HashT; + <::Hashing as HashT>::hash(format!("{}-{}", set_id, round).as_bytes()) +} + +impl, H: ExHashT> Network for NetworkBridge { + type In = mpsc::UnboundedReceiver; + fn messages_for(&self, round: u64, set_id: u64) -> Self::In { + self.service.consensus_gossip().write().messages_for(message_topic::(round, set_id)) + } + + fn send_message(&self, round: u64, set_id: u64, message: Vec) { + let topic = message_topic::(round, set_id); + let gossip = self.service.consensus_gossip(); + self.service.with_spec(move |_s, context|{ + gossip.write().multicast(context, topic, message); + }); + } + + fn drop_messages(&self, round: u64, set_id: u64) { + let topic = message_topic::(round, set_id); + self.service.consensus_gossip().write().collect_garbage(|t| t == &topic); + } +} + /// Something which can determine if a block is known. pub trait BlockStatus { /// Return `Ok(Some(number))` or `Ok(None)` depending on whether the block @@ -523,7 +577,7 @@ impl, B, E, N, RA> grandpa::Chain { @@ -583,22 +637,22 @@ impl, N, RA> voter::Environment + 'static, E: CallExecutor + 'static + Send + Sync, - N: Network + 'static, - N::In: 'static, + N: Network + 'static + Send, + N::In: 'static + Send, RA: 'static + Send + Sync, NumberFor: BlockNumberOps, { - type Timer = Box>; + type Timer = Box + Send>; type Id = AuthorityId; type Signature = ed25519::Signature; - type In = Box, Self::Signature, Self::Id>, Error = Self::Error, - >>; - type Out = Box + Send>; + type Out = Box>, SinkError = Self::Error, - >>; + > + Send>; type Error = ExitOrError>; #[allow(unreachable_code)] @@ -689,6 +743,8 @@ impl, N, RA> voter::Environment, N, RA> voter::Environment, RA, PRA> BlockImport // until the block is written to prevent a race if we need to restore // the old authority set on error. let just_in_case = maybe_change.map(|change| { - let hash = block.header.hash(); + let hash = block.post_header().hash(); let number = block.header.number().clone(); let mut authorities = self.authority_set.inner().write(); @@ -834,12 +888,38 @@ impl, RA, PRA> BlockImport } } +impl, RA, PRA> Authorities for GrandpaBlockImport +where + B: Backend + 'static, + E: CallExecutor + 'static + Clone + Send + Sync, + RA: TaggedTransactionQueue, // necessary for client to import `BlockImport`. +{ + + type Error = as Authorities>::Error; + fn authorities(&self, at: &BlockId) -> Result, Self::Error> { + self.inner.authorities_at(at) + } +} + /// Half of a link between a block-import worker and a the background voter. // This should remain non-clone. pub struct LinkHalf, RA> { client: Arc>, authority_set: SharedAuthoritySet>, } +impl, RA> Clone for LinkHalf +where + B: Backend + 'static, + E: CallExecutor + 'static + Clone + Send + Sync, + RA: TaggedTransactionQueue, // necessary for client to import `BlockImport`. +{ + fn clone(&self) -> Self { + LinkHalf { + client: self.client.clone(), + authority_set: self.authority_set.clone() + } + } +} /// Make block importer and link half necessary to tie the background voter /// to it. @@ -895,12 +975,12 @@ pub fn run_grandpa, N, RA>( config: Config, link: LinkHalf, network: N, -) -> ::client::error::Result> where +) -> ::client::error::Result + Send + 'static> where Block::Hash: Ord, B: Backend + 'static, E: CallExecutor + Send + Sync + 'static, - N: Network + 'static, - N::In: 'static, + N: Network + Send + Sync + 'static, + N::In: Send + 'static, NumberFor: BlockNumberOps, DigestFor: Encode, RA: Send + Sync + 'static, diff --git a/substrate/core/finality-grandpa/src/service_integration.rs b/substrate/core/finality-grandpa/src/service_integration.rs new file mode 100644 index 0000000000..c4f5398312 --- /dev/null +++ b/substrate/core/finality-grandpa/src/service_integration.rs @@ -0,0 +1,40 @@ +// Copyright 2018 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +/// Integrate grandpa finality with substrate service + +use client; +use service::{FullBackend, FullExecutor, ServiceFactory}; + +pub type BlockImportForService = ::GrandpaBlockImport< + FullBackend, + FullExecutor, + ::Block, + ::RuntimeApi, + client::Client< + FullBackend, + FullExecutor, + ::Block, + ::RuntimeApi + >, +>; + +pub type LinkHalfForService = ::LinkHalf< + FullBackend, + FullExecutor, + ::Block, + ::RuntimeApi +>; \ No newline at end of file diff --git a/substrate/core/finality-grandpa/src/tests.rs b/substrate/core/finality-grandpa/src/tests.rs index 967686a925..ef5228e0fc 100644 --- a/substrate/core/finality-grandpa/src/tests.rs +++ b/substrate/core/finality-grandpa/src/tests.rs @@ -158,11 +158,15 @@ fn make_topic(round: u64, set_id: u64) -> Hash { } impl Network for MessageRouting { - type In = Box,Error=()>>; + type In = Box,Error=()> + Send>; fn messages_for(&self, round: u64, set_id: u64) -> Self::In { - let messages = self.inner.lock().peer(self.peer_id) - .with_spec(|spec, _| spec.gossip.messages_for(make_topic(round, set_id))); + let inner = self.inner.lock(); + let peer = inner.peer(self.peer_id); + let mut gossip = peer.consensus_gossip().write(); + let messages = peer.with_spec(move |_, _| { + gossip.messages_for(make_topic(round, set_id)) + }); let messages = messages.map_err( move |_| panic!("Messages for round {} dropped too early", round) @@ -179,8 +183,12 @@ impl Network for MessageRouting { fn drop_messages(&self, round: u64, set_id: u64) { let topic = make_topic(round, set_id); - self.inner.lock().peer(self.peer_id) - .with_spec(|spec, _| spec.gossip.collect_garbage(|t| t == &topic)); + let inner = self.inner.lock(); + let peer = inner.peer(self.peer_id); + let mut gossip = peer.consensus_gossip().write(); + peer.with_spec(move |_, _| { + gossip.collect_garbage(|t| t == &topic) + }); } } @@ -318,6 +326,8 @@ fn finalize_3_voters_no_observers() { .take_while(|n| Ok(n.header.number() < &20)) .for_each(|_| Ok(())) ); + fn assert_send(_: &T) { } + let voter = run_grandpa( Config { gossip_duration: TEST_GOSSIP_DURATION, @@ -328,6 +338,8 @@ fn finalize_3_voters_no_observers() { MessageRouting::new(net.clone(), peer_id), ).expect("all in order with client and network"); + assert_send(&voter); + runtime.spawn(voter); } diff --git a/substrate/core/network/src/consensus_gossip.rs b/substrate/core/network/src/consensus_gossip.rs index 882d2f02fd..794efc3c98 100644 --- a/substrate/core/network/src/consensus_gossip.rs +++ b/substrate/core/network/src/consensus_gossip.rs @@ -24,14 +24,11 @@ use rand::{self, Rng}; use network_libp2p::NodeIndex; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, Hash, HashFor}; use runtime_primitives::generic::BlockId; -use message::generic::{Message, ConsensusMessage}; +pub use message::generic::{Message, ConsensusMessage}; use protocol::Context; use config::Roles; -use specialization::NetworkSpecialization; -use StatusMessage; -use generic_message; -// TODO: Add additional spam/DoS attack protection. +// FIXME: Add additional spam/DoS attack protection: https://github.com/paritytech/substrate/issues/1115 const MESSAGE_LIFETIME: Duration = Duration::from_secs(600); struct PeerConsensus { @@ -55,10 +52,7 @@ pub struct ConsensusGossip { session_start: Option, } -impl ConsensusGossip -where - B::Header: HeaderT -{ +impl ConsensusGossip { /// Create a new instance. pub fn new() -> Self { ConsensusGossip { @@ -262,52 +256,6 @@ where } } -impl NetworkSpecialization for ConsensusGossip where - Block::Header: HeaderT -{ - fn status(&self) -> Vec { - Vec::new() - } - - fn on_connect(&mut self, ctx: &mut Context, who: NodeIndex, status: StatusMessage) { - self.new_peer(ctx, who, status.roles); - } - - fn on_disconnect(&mut self, ctx: &mut Context, who: NodeIndex) { - self.peer_disconnected(ctx, who); - } - - fn on_message( - &mut self, - ctx: &mut Context, - who: NodeIndex, - message: &mut Option<::message::Message> - ) { - match message.take() { - Some(generic_message::Message::Consensus(topic, msg)) => { - trace!(target: "gossip", "Consensus message from {}: {:?}", who, msg); - self.on_incoming(ctx, who, topic, msg); - } - r => *message = r, - } - } - - fn on_abort(&mut self) { - self.abort(); - } - - fn maintain_peers(&mut self, _ctx: &mut Context) { - self.collect_garbage(|_| true); - } - - fn on_block_imported( - &mut self, - _ctx: &mut Context, - _hash: ::Hash, - _header: &::Header) - {} -} - #[cfg(test)] mod tests { use runtime_primitives::testing::{H256, Block as RawBlock, ExtrinsicWrapper}; diff --git a/substrate/core/network/src/lib.rs b/substrate/core/network/src/lib.rs index a8ad20496f..de3a30402e 100644 --- a/substrate/core/network/src/lib.rs +++ b/substrate/core/network/src/lib.rs @@ -65,7 +65,7 @@ pub mod specialization; pub mod test; pub use chain::Client as ClientHandle; -pub use service::{Service, FetchFuture, TransactionPool, ManageNetwork, SyncProvider}; +pub use service::{Service, FetchFuture, TransactionPool, ManageNetwork, SyncProvider, ExHashT}; pub use protocol::{ProtocolStatus, PeerInfo, Context}; pub use sync::{Status as SyncStatus, SyncState}; pub use network_libp2p::{NodeIndex, ProtocolId, Severity, Protocol}; diff --git a/substrate/core/network/src/protocol.rs b/substrate/core/network/src/protocol.rs index 932e724bfe..9b3a3965c1 100644 --- a/substrate/core/network/src/protocol.rs +++ b/substrate/core/network/src/protocol.rs @@ -27,6 +27,7 @@ use codec::{Encode, Decode}; use message::{self, Message}; use message::generic::Message as GenericMessage; +use consensus_gossip::ConsensusGossip; use specialization::NetworkSpecialization; use sync::{ChainSync, Status as SyncStatus, SyncState}; use service::{TransactionPool, ExHashT}; @@ -57,6 +58,7 @@ pub struct Protocol, H: ExHashT> { genesis_hash: B::Hash, sync: Arc>>, specialization: RwLock, + consensus_gossip: RwLock>, context_data: ContextData, // Connected peers pending Status message. handshaking_peers: RwLock>, @@ -207,6 +209,7 @@ impl, H: ExHashT> Protocol { genesis_hash: info.chain.genesis_hash, sync: Arc::new(RwLock::new(sync)), specialization: RwLock::new(specialization), + consensus_gossip: RwLock::new(ConsensusGossip::new()), handshaking_peers: RwLock::new(HashMap::new()), transaction_pool: transaction_pool, }; @@ -221,6 +224,11 @@ impl, H: ExHashT> Protocol { &self.sync } + + pub(crate) fn consensus_gossip<'a>(&'a self) -> &'a RwLock> { + &self.consensus_gossip + } + /// Returns protocol status pub fn status(&self) -> ProtocolStatus { let sync = self.sync.read(); @@ -278,6 +286,9 @@ impl, H: ExHashT> Protocol { GenericMessage::RemoteHeaderResponse(response) => self.on_remote_header_response(io, who, response), GenericMessage::RemoteChangesRequest(request) => self.on_remote_changes_request(io, who, request), GenericMessage::RemoteChangesResponse(response) => self.on_remote_changes_response(io, who, response), + GenericMessage::Consensus(topic, msg) => { + self.consensus_gossip.write().on_incoming(&mut ProtocolContext::new(&self.context_data, io), who, topic, msg); + }, other => self.specialization.write().on_message(&mut ProtocolContext::new(&self.context_data, io), who, &mut Some(other)), } } @@ -297,6 +308,7 @@ impl, H: ExHashT> Protocol { pub fn on_peer_disconnected(&self, io: &mut SyncIo, peer: NodeIndex) { trace!(target: "sync", "Disconnecting {}: {}", peer, io.peer_debug_info(peer)); + // lock all the the peer lists so that add/remove peer events are in order let mut sync = self.sync.write(); let mut spec = self.specialization.write(); @@ -309,6 +321,7 @@ impl, H: ExHashT> Protocol { }; if removed { let mut context = ProtocolContext::new(&self.context_data, io); + self.consensus_gossip.write().peer_disconnected(&mut context, peer); sync.peer_disconnected(&mut context, peer); spec.on_disconnect(&mut context, peer); self.on_demand.as_ref().map(|s| s.on_disconnect(peer)); @@ -391,6 +404,7 @@ impl, H: ExHashT> Protocol { /// Perform time based maintenance. pub fn tick(&self, io: &mut SyncIo) { + self.consensus_gossip.write().collect_garbage(|_| true); self.maintain_peers(io); self.on_demand.as_ref().map(|s| s.maintain_peers(io)); } @@ -478,6 +492,7 @@ impl, H: ExHashT> Protocol { let mut context = ProtocolContext::new(&self.context_data, io); self.on_demand.as_ref().map(|s| s.on_connect(who, status.roles, status.best_number)); self.sync.write().new_peer(&mut context, who); + self.consensus_gossip.write().new_peer(&mut context, who, status.roles); self.specialization.write().on_connect(&mut context, who, status); } @@ -555,10 +570,12 @@ impl, H: ExHashT> Protocol { let mut spec = self.specialization.write(); let mut peers = self.context_data.peers.write(); let mut handshaking_peers = self.handshaking_peers.write(); + let mut consensus_gossip = self.consensus_gossip.write(); sync.clear(); spec.on_abort(); peers.clear(); handshaking_peers.clear(); + consensus_gossip.abort(); } pub fn stop(&self) { diff --git a/substrate/core/network/src/service.rs b/substrate/core/network/src/service.rs index 0b3d0f3f32..d5552f8520 100644 --- a/substrate/core/network/src/service.rs +++ b/substrate/core/network/src/service.rs @@ -19,11 +19,12 @@ use std::sync::Arc; use std::{io, thread}; use std::time::Duration; use futures::{self, Future, Stream, stream, sync::oneshot}; -use parking_lot::Mutex; +use parking_lot::{Mutex, RwLock}; use network_libp2p::{ProtocolId, PeerId, NetworkConfiguration, ErrorKind}; use network_libp2p::{start_service, Service as NetworkService, ServiceEvent as NetworkServiceEvent}; use network_libp2p::{RegisteredProtocol, parse_str_addr, Protocol as Libp2pProtocol}; use io::NetSyncIo; +use consensus_gossip::ConsensusGossip; use protocol::{self, Protocol, ProtocolContext, Context, ProtocolStatus}; use config::Params; use error::Error; @@ -44,6 +45,7 @@ pub trait SyncProvider: Send + Sync { fn status(&self) -> ProtocolStatus; } +/// Minimum Requirements for a Hash within Networking pub trait ExHashT: ::std::hash::Hash + Eq + ::std::fmt::Debug + Clone + Send + Sync + 'static {} impl ExHashT for T where T: ::std::hash::Hash + Eq + ::std::fmt::Debug + Clone + Send + Sync + 'static {} @@ -82,9 +84,8 @@ impl, H: ExHashT> Service>( params: Params, protocol_id: ProtocolId, - import_queue: I, + import_queue: Arc, ) -> Result>, Error> { - let import_queue = Arc::new(import_queue); let handler = Arc::new(Protocol::new( params.config, params.chain, @@ -101,7 +102,7 @@ impl, H: ExHashT> Service, H: ExHashT> Service(&'a self) -> &'a RwLock> { + self.handler.consensus_gossip() + } } impl, H: ExHashT> ::consensus::SyncOracle for Service { diff --git a/substrate/core/network/src/test/mod.rs b/substrate/core/network/src/test/mod.rs index d591896159..6120cd2035 100644 --- a/substrate/core/network/src/test/mod.rs +++ b/substrate/core/network/src/test/mod.rs @@ -58,31 +58,23 @@ impl ExecuteInContext for DummyContextExecutor { } /// The test specialization. -pub struct DummySpecialization { - /// Consensus gossip handle. - pub gossip: ConsensusGossip, -} +pub struct DummySpecialization { } impl NetworkSpecialization for DummySpecialization { fn status(&self) -> Vec { vec![] } - fn on_connect(&mut self, ctx: &mut Context, peer_id: NodeIndex, status: ::message::Status) { - self.gossip.new_peer(ctx, peer_id, status.roles); + fn on_connect(&mut self, _ctx: &mut Context, _peer_id: NodeIndex, _status: ::message::Status) { } - fn on_disconnect(&mut self, ctx: &mut Context, peer_id: NodeIndex) { - self.gossip.peer_disconnected(ctx, peer_id); + fn on_disconnect(&mut self, _ctx: &mut Context, _peer_id: NodeIndex) { } fn on_message( &mut self, - ctx: &mut Context, - peer_id: NodeIndex, - message: &mut Option<::message::Message> + _ctx: &mut Context, + _peer_id: NodeIndex, + _message: &mut Option<::message::Message> ) { - if let Some(::message::generic::Message::Consensus(topic, data)) = message.take() { - self.gossip.on_incoming(ctx, peer_id, topic, data); - } } } @@ -179,6 +171,10 @@ impl, D> Peer { self.sync.on_peer_connected(&mut TestIo::new(&self.queue, Some(other)), other); } + pub fn consensus_gossip(&self) -> &RwLock> { + self.sync.consensus_gossip() + } + /// Called on disconnect from other indicated peer. fn on_disconnect(&self, other: NodeIndex) { let mut io = TestIo::new(&self.queue, Some(other)); @@ -233,9 +229,10 @@ impl, D> Peer { /// Push a message into the gossip network and relay to peers. /// `TestNet::sync_step` needs to be called to ensure it's propagated. pub fn gossip_message(&self, topic: Hash, data: Vec) { - self.sync.with_spec(&mut TestIo::new(&self.queue, None), |spec, ctx| { - spec.gossip.multicast(ctx, topic, data); - }) + let gossip = self.sync.consensus_gossip(); + self.sync.with_spec(&mut TestIo::new(&self.queue, None), move |_s, context|{ + gossip.write().multicast(context, topic, data); + }); } /// Add blocks to the peer -- edit the block before adding @@ -363,9 +360,7 @@ pub trait TestNetFactory: Sized { let (block_import, data) = self.make_block_import(client.clone()); let import_queue = Arc::new(SyncImportQueue::new(verifier, block_import)); - let specialization = DummySpecialization { - gossip: ConsensusGossip::new(), - }; + let specialization = DummySpecialization { }; let sync = Protocol::new( config.clone(), client.clone(), diff --git a/substrate/core/service/src/chain_ops.rs b/substrate/core/service/src/chain_ops.rs index 4f2f10a39c..3d2a6bdea4 100644 --- a/substrate/core/service/src/chain_ops.rs +++ b/substrate/core/service/src/chain_ops.rs @@ -87,14 +87,15 @@ pub fn export_blocks(config: FactoryFullConfiguration, exit: E, mut } /// Import blocks from a binary stream. -pub fn import_blocks(config: FactoryFullConfiguration, exit: E, mut input: R) -> error::Result<()> +pub fn import_blocks(mut config: FactoryFullConfiguration, exit: E, mut input: R) -> error::Result<()> where F: ServiceFactory, E: Future + Send + 'static, R: Read, { struct DummyLink; impl Link for DummyLink { } let client = new_client::(&config)?; - let queue = components::FullComponents::::build_import_queue(&config, client.clone())?; + // FIXME: this shouldn't need a mutable config. https://github.com/paritytech/substrate/issues/1134 + let queue = components::FullComponents::::build_import_queue(&mut config, client.clone())?; queue.start(DummyLink)?; let (exit_send, exit_recv) = std::sync::mpsc::channel(); diff --git a/substrate/core/service/src/components.rs b/substrate/core/service/src/components.rs index 379e592238..b7d1781f3f 100644 --- a/substrate/core/service/src/components.rs +++ b/substrate/core/service/src/components.rs @@ -266,7 +266,7 @@ pub trait ServiceFactory: 'static + Sized { /// ImportQueue for a full client fn build_full_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, _client: Arc> ) -> Result { if let Some(name) = config.chain_spec.consensus_engine() { @@ -281,7 +281,7 @@ pub trait ServiceFactory: 'static + Sized { /// ImportQueue for a light client fn build_light_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, _client: Arc> ) -> Result { if let Some(name) = config.chain_spec.consensus_engine() { @@ -336,7 +336,7 @@ pub trait Components: Sized + 'static { /// instance of import queue for clients fn build_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, client: Arc> ) -> Result; } @@ -409,7 +409,7 @@ impl Components for FullComponents { } fn build_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, client: Arc> ) -> Result { Factory::build_full_import_queue(config, client) @@ -485,7 +485,7 @@ impl Components for LightComponents { } fn build_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, client: Arc> ) -> Result { Factory::build_light_import_queue(config, client) diff --git a/substrate/core/service/src/lib.rs b/substrate/core/service/src/lib.rs index 9b0283795f..aebf447149 100644 --- a/substrate/core/service/src/lib.rs +++ b/substrate/core/service/src/lib.rs @@ -103,6 +103,8 @@ pub struct Service { keystore: Keystore, exit: ::exit_future::Exit, signal: Option, + /// Configuration of this Service + pub config: FactoryFullConfiguration, proposer: Arc, Components::TransactionPoolApi>>, _rpc_http: Option, _rpc_ws: Option>, // WsServer is not `Sync`, but the service needs to be. @@ -129,7 +131,7 @@ impl Service { /// Creates a new service. pub fn new( - config: FactoryFullConfiguration, + mut config: FactoryFullConfiguration, task_executor: TaskExecutor, ) -> Result @@ -159,7 +161,7 @@ impl Service }; let (client, on_demand) = Components::build_client(&config, executor)?; - let import_queue = Components::build_import_queue(&config, client.clone())?; + let import_queue = Arc::new(Components::build_import_queue(&mut config, client.clone())?); let best_header = client.best_block_header()?; let version = config.full_version(); @@ -168,7 +170,7 @@ impl Service let network_protocol = ::build_network_protocol(&config)?; let transaction_pool = Arc::new( - Components::build_transaction_pool(config.transaction_pool, client.clone())? + Components::build_transaction_pool(config.transaction_pool.clone(), client.clone())? ); let transaction_pool_adapter = TransactionPoolAdapter:: { imports_external_transactions: !(config.roles == Roles::LIGHT), @@ -177,19 +179,30 @@ impl Service }; let network_params = Components::CreateNetworkParams::create_network_params( - client.clone(), config.roles, config.network, on_demand.clone(), - transaction_pool_adapter, network_protocol + client.clone(), + config.roles, + config.network.clone(), + on_demand.clone(), + transaction_pool_adapter, + network_protocol, ); - let mut protocol_id = network::ProtocolId::default(); - let protocol_id_full = config.chain_spec.protocol_id().unwrap_or(DEFAULT_PROTOCOL_ID).as_bytes(); - if protocol_id_full.len() > protocol_id.len() { - warn!("Protocol ID truncated to {} chars", protocol_id.len()); - } - let id_len = protocol_id_full.len().min(protocol_id.len()); - &mut protocol_id[0..id_len].copy_from_slice(&protocol_id_full[0..id_len]); + let protocol_id = { + let protocol_id_full = config.chain_spec.protocol_id().unwrap_or(DEFAULT_PROTOCOL_ID).as_bytes(); + let mut protocol_id = network::ProtocolId::default(); + if protocol_id_full.len() > protocol_id.len() { + warn!("Protocol ID truncated to {} chars", protocol_id.len()); + } + let id_len = protocol_id_full.len().min(protocol_id.len()); + &mut protocol_id[0..id_len].copy_from_slice(&protocol_id_full[0..id_len]); + protocol_id + }; - let network = network::Service::new(network_params, protocol_id, import_queue)?; + let network = network::Service::new( + network_params, + protocol_id, + import_queue + )?; on_demand.map(|on_demand| on_demand.set_service_link(Arc::downgrade(&network))); { @@ -244,7 +257,7 @@ impl Service }); // Telemetry - let telemetry = match config.telemetry_url { + let telemetry = match config.telemetry_url.clone() { Some(url) => { let is_authority = config.roles == Roles::AUTHORITY; let pubkey = format!("{}", public_key); @@ -276,6 +289,7 @@ impl Service transaction_pool: transaction_pool, signal: Some(signal), keystore: keystore, + config, proposer, exit, _rpc_http: rpc_http, @@ -283,6 +297,23 @@ impl Service _telemetry: telemetry, }) } + + /// give the authority key, if we are an authority and have a key + pub fn authority_key(&self) -> Option { + if self.config.roles != Roles::AUTHORITY { return None } + let keystore = &self.keystore; + if let Ok(Some(Ok(key))) = keystore.contents().map(|keys| keys.get(0) + .map(|k| keystore.load(k, ""))) + { + Some(key) + } else { + None + } + } + + pub fn config(&self) -> &FactoryFullConfiguration { + &self.config + } } impl Service where Components: components::Components { @@ -466,6 +497,9 @@ impl network::TransactionPool, ComponentBlock< /// Configuration = (), /// FullService = Service> /// { |config, executor| Service::>::new(config, executor) }, +/// // Setup as Consensus Authority (if the role and key are given) +/// AuthoritySetup = { +/// |service: Self::FullService, executor: TaskExecutor, key: Arc| { Ok(service) }}, /// LightService = Service> /// { |config, executor| Service::>::new(config, executor) }, /// // Declare the import queue. The import queue is special as it takes two initializers. @@ -491,6 +525,7 @@ macro_rules! construct_service_factory { Genesis = $genesis:ty, Configuration = $config:ty, FullService = $full_service:ty { $( $full_service_init:tt )* }, + AuthoritySetup = { $( $authority_setup:tt )* }, LightService = $light_service:ty { $( $light_service_init:tt )* }, FullImportQueue = $full_import_queue:ty { $( $full_import_queue_init:tt )* }, @@ -539,14 +574,14 @@ macro_rules! construct_service_factory { } fn build_full_import_queue( - config: &$crate::FactoryFullConfiguration, + config: &mut $crate::FactoryFullConfiguration, client: $crate::Arc<$crate::FullClient>, ) -> $crate::Result { ( $( $full_import_queue_init )* ) (config, client) } fn build_light_import_queue( - config: &FactoryFullConfiguration, + config: &mut FactoryFullConfiguration, client: Arc<$crate::LightClient>, ) -> Result { ( $( $light_import_queue_init )* ) (config, client) @@ -565,7 +600,13 @@ macro_rules! construct_service_factory { executor: $crate::TaskExecutor ) -> Result { - ( $( $full_service_init )* ) (config, executor) + ( $( $full_service_init )* ) (config, executor.clone()).and_then(|service| { + if let Some(key) = (&service).authority_key() { + ($( $authority_setup )*)(service, executor, Arc::new(key)) + } else { + Ok(service) + } + }) } } } diff --git a/substrate/core/sr-primitives/src/generic/digest.rs b/substrate/core/sr-primitives/src/generic/digest.rs index c71ee4c7aa..ea2dafb758 100644 --- a/substrate/core/sr-primitives/src/generic/digest.rs +++ b/substrate/core/sr-primitives/src/generic/digest.rs @@ -24,7 +24,7 @@ use traits::{self, Member, DigestItem as DigestItemT, MaybeSerializeDebug}; use substrate_primitives::hash::H512 as Signature; #[derive(PartialEq, Eq, Clone, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug, Serialize))] pub struct Digest { pub logs: Vec, } @@ -57,7 +57,7 @@ impl traits::Digest for Digest where /// Digest item that is able to encode/decode 'system' digest items and /// provide opaque access to other items. #[derive(PartialEq, Eq, Clone)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug, Serialize))] pub enum DigestItem { /// System digest item announcing that authorities set has been changed /// in the block. Contains the new set of authorities. diff --git a/substrate/core/sr-primitives/src/lib.rs b/substrate/core/sr-primitives/src/lib.rs index d1cd43242a..9ad97cf28c 100644 --- a/substrate/core/sr-primitives/src/lib.rs +++ b/substrate/core/sr-primitives/src/lib.rs @@ -354,7 +354,7 @@ macro_rules! impl_outer_log { /// Wrapper for all possible log entries for the `$trait` runtime. Provides binary-compatible /// `Encode`/`Decode` implementations with the corresponding `generic::DigestItem`. #[derive(Clone, PartialEq, Eq)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[cfg_attr(feature = "std", derive(Debug, Serialize))] $(#[$attr])* #[allow(non_camel_case_types)] pub struct $name($internal); @@ -362,7 +362,7 @@ macro_rules! impl_outer_log { /// All possible log entries for the `$trait` runtime. `Encode`/`Decode` implementations /// are auto-generated => it is not binary-compatible with `generic::DigestItem`. #[derive(Clone, PartialEq, Eq, Encode, Decode)] - #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] + #[cfg_attr(feature = "std", derive(Debug, Serialize))] $(#[$attr])* #[allow(non_camel_case_types)] pub enum InternalLog { @@ -482,7 +482,7 @@ mod tests { use super::RuntimeT; pub type Log = RawLog<::AuthorityId>; - #[derive(Serialize, Deserialize, Debug, Encode, Decode, PartialEq, Eq, Clone)] + #[derive(Serialize, Debug, Encode, Decode, PartialEq, Eq, Clone)] pub enum RawLog { A1(AuthorityId), AuthoritiesChange(Vec), A3(AuthorityId) } } @@ -490,7 +490,7 @@ mod tests { use super::RuntimeT; pub type Log = RawLog<::AuthorityId>; - #[derive(Serialize, Deserialize, Debug, Encode, Decode, PartialEq, Eq, Clone)] + #[derive(Serialize, Debug, Encode, Decode, PartialEq, Eq, Clone)] pub enum RawLog { B1(AuthorityId), B2(AuthorityId) } } diff --git a/substrate/core/sr-primitives/src/testing.rs b/substrate/core/sr-primitives/src/testing.rs index cd1ca5cb4a..31be26d3a9 100644 --- a/substrate/core/sr-primitives/src/testing.rs +++ b/substrate/core/sr-primitives/src/testing.rs @@ -26,7 +26,7 @@ pub use substrate_primitives::{H256, AuthorityId}; pub type DigestItem = GenDigestItem; -#[derive(Default, PartialEq, Eq, Clone, Serialize, Deserialize, Debug, Encode, Decode)] +#[derive(Default, PartialEq, Eq, Clone, Serialize, Debug, Encode, Decode)] pub struct Digest { pub logs: Vec, } @@ -48,7 +48,7 @@ impl traits::Digest for Digest { } } -#[derive(PartialEq, Eq, Clone, Serialize, Deserialize, Debug, Encode, Decode)] +#[derive(PartialEq, Eq, Clone, Serialize, Debug, Encode, Decode)] #[serde(rename_all = "camelCase")] #[serde(deny_unknown_fields)] pub struct Header { @@ -98,15 +98,30 @@ impl traits::Header for Header { } } -#[derive(PartialEq, Eq, Clone, Serialize, Deserialize, Debug, Encode, Decode)] +impl<'a> Deserialize<'a> for Header { + fn deserialize>(de: D) -> Result { + let r = >::deserialize(de)?; + Decode::decode(&mut &r[..]).ok_or(DeError::custom("Invalid value passed into decode")) + } +} + +#[derive(PartialEq, Eq, Clone, Debug, Encode, Decode)] pub struct ExtrinsicWrapper(Xt); -impl traits::Extrinsic for ExtrinsicWrapper where Xt: Serialize { +impl traits::Extrinsic for ExtrinsicWrapper { fn is_signed(&self) -> Option { None } } +#[cfg(feature = "std")] +impl serde::Serialize for ExtrinsicWrapper +{ + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + self.using_encoded(|bytes| seq.serialize_bytes(bytes)) + } +} + impl From for ExtrinsicWrapper { fn from(xt: Xt) -> Self { ExtrinsicWrapper(xt) diff --git a/substrate/core/sr-primitives/src/traits.rs b/substrate/core/sr-primitives/src/traits.rs index fe1c6756e2..85ce07ff4b 100644 --- a/substrate/core/sr-primitives/src/traits.rs +++ b/substrate/core/sr-primitives/src/traits.rs @@ -544,8 +544,8 @@ pub trait Applyable: Sized + Send + Sync { /// Something that acts like a `Digest` - it can have `Log`s `push`ed onto it and these `Log`s are /// each `Codec`. -pub trait Digest: Member + MaybeSerializeDebug + Default { - type Hash: Member + MaybeSerializeDebug; +pub trait Digest: Member + MaybeSerializeDebugButNotDeserialize + Default { + type Hash: Member + MaybeSerializeDebugButNotDeserialize; type Item: DigestItem; /// Get reference to all digest items. @@ -567,9 +567,9 @@ pub trait Digest: Member + MaybeSerializeDebug + Default { /// for casting member to 'system' log items, known to substrate. /// /// If the runtime does not supports some 'system' items, use `()` as a stub. -pub trait DigestItem: Codec + Member + MaybeSerializeDebug { - type Hash: Member + MaybeSerializeDebug; - type AuthorityId: Member + MaybeSerializeDebug; +pub trait DigestItem: Codec + Member + MaybeSerializeDebugButNotDeserialize { + type Hash: Member + MaybeSerializeDebugButNotDeserialize; + type AuthorityId: Member + MaybeSerializeDebugButNotDeserialize; /// Returns Some if the entry is the `AuthoritiesChange` entry. fn as_authorities_change(&self) -> Option<&[Self::AuthorityId]>; diff --git a/substrate/core/test-runtime/src/lib.rs b/substrate/core/test-runtime/src/lib.rs index 686bb14e57..65d122b498 100644 --- a/substrate/core/test-runtime/src/lib.rs +++ b/substrate/core/test-runtime/src/lib.rs @@ -18,6 +18,9 @@ #![cfg_attr(not(feature = "std"), no_std)] +#[cfg(feature = "std")] +extern crate serde; + extern crate sr_std as rstd; extern crate parity_codec as codec; extern crate sr_primitives as runtime_primitives; @@ -89,7 +92,7 @@ pub fn native_version() -> NativeVersion { /// Calls in transactions. #[derive(Clone, PartialEq, Eq, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug))] pub struct Transfer { pub from: AccountId, pub to: AccountId, @@ -99,12 +102,20 @@ pub struct Transfer { /// Extrinsic for test-runtime. #[derive(Clone, PartialEq, Eq, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(Debug))] pub struct Extrinsic { pub transfer: Transfer, pub signature: Ed25519Signature, } +#[cfg(feature = "std")] +impl serde::Serialize for Extrinsic +{ + fn serialize(&self, seq: S) -> Result where S: ::serde::Serializer { + self.using_encoded(|bytes| seq.serialize_bytes(bytes)) + } +} + impl BlindCheckable for Extrinsic { type Checked = Self; diff --git a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index f03d9469f583d2ea892f985efffa9ef3c4e2e746..f24c5400ee268183525fd8c98aa36a3830b9e2b6 100644 GIT binary patch delta 735 zcmZ{hUr5tY6vywmzim3l4}ap{BJIbvq+DfF7#8LF5d~I+f)CN8Ooy>qES!O04-3jE zIx9~jx26v|V};P-zDA6Sh&>b}^b!@m*TaZlJ!G8=1}o~}-tRe|-#OoNF2Bq=&#d$8 zE8t)fd1wdd6dT;9@N880Ea`HoP+4D58=1;6!=!V~Zd{k4O@>%#s}_g1I4tlM{o9v$ zZcp z;-Y(^7|X^P%t<-Jimq#+fJ$ zu>Unc=SBvC#;j-?eO;%P44#P!b^4A4^0;)nDD6^n6ClumN9kW+5Z$WEbTFpn)?C{r zl9&fE693LcY`zO{c;1dr?>1w9azDOH3}GUx_|;AR&8#sG^{t}1*b1xS&|;zrk7tiryd&qFCwoy(*J0t&X}pzf F_ysKQ)4%`# delta 729 zcmZ`$Ur3Wt6u;+w-==eX?2~D;X!fzKD5Xrr5m8$oksyH-^wdU_im};Px`G}p%qbz% zj#2K9L`uv(*y09z>0w}?^-vE|Zxuq(%OVB^61X}aELc$w_x#TJ-E)4wbGg|Kp55U2 zHQ+Lcm(UI17Zo0m`0SJjm>25}1e>FwxiVE`x~y^4rQevQ)M}(y?y`$x+udgPhC{m+ z_(oh*bn(crws*;2 z1J_>$8rQQB*7Kt4%ByWkjq%EaP;Skdp@a|bY#MUu#3Z~yH=dxsz%X`-C42#j!Zgso z8lS?|onrLv4~|dgTw>&YA7D>%7>oBjIG&Od$sSB4Gs2sC1dzdZX@}*3tg;5iSTAm+ z{ipjSm3gSL6DowK=x{n3)q89BV3q&KRn}3%4_5gx>Tjn!gEJXNC_)~FN|3OTuq-iV zBAlVxPWXF=5HKeHgOB`&AFcA=O)B%!Tn?4_4#"] description = "Substrate node implementation in Rust." +build = "build.rs" [dependencies] log = "0.4" tokio = "0.1.7" +futures = "0.1" exit-future = "0.1" substrate-cli = { path = "../../core/cli" } parity-codec = { version = "2.1" } @@ -22,9 +24,16 @@ substrate-service = { path = "../../core/service" } substrate-transaction-pool = { path = "../../core/transaction-pool" } substrate-network = { path = "../../core/network" } substrate-consensus-aura = { path = "../../core/consensus/aura" } +substrate-finality-grandpa = { path = "../../core/finality-grandpa" } sr-primitives = { path = "../../core/sr-primitives" } node-executor = { path = "../executor" } +structopt = "0.2.13" substrate-keystore = { path = "../../core/keystore" } [dev-dependencies] substrate-service-test = { path = "../../core/service/test" } + +[build-dependencies] +substrate-cli = { path = "../../core/cli" } +structopt = "0.2.13" +clap = "~2.32" diff --git a/substrate/core/cli/build.rs b/substrate/node/cli/build.rs similarity index 91% rename from substrate/core/cli/build.rs rename to substrate/node/cli/build.rs index 61929bee63..b42b397de1 100644 --- a/substrate/core/cli/build.rs +++ b/substrate/node/cli/build.rs @@ -17,11 +17,18 @@ #[macro_use] extern crate clap; +extern crate substrate_cli as cli; + +#[macro_use] +extern crate structopt; + use std::fs; use std::env; use clap::Shell; use std::path::Path; +include!("src/params.rs"); + fn main() { build_shell_completion(); } @@ -37,7 +44,6 @@ fn build_shell_completion() { /// Build the shell auto-completion for a given Shell fn build_completion(shell: &Shell) { - let yml = load_yaml!("src/cli.yml"); let outdir = match env::var_os("OUT_DIR") { None => return, @@ -51,9 +57,9 @@ fn build_completion(shell: &Shell) { fs::create_dir(&path).ok(); - let mut app = clap::App::from_yaml(&yml); + let mut app = Params::clap(); app.gen_completions( - "polkadot", + "substrate-node", *shell, &path); } diff --git a/substrate/core/cli/doc/shell-completion.adoc b/substrate/node/cli/doc/shell-completion.adoc similarity index 100% rename from substrate/core/cli/doc/shell-completion.adoc rename to substrate/node/cli/doc/shell-completion.adoc diff --git a/substrate/node/cli/src/chain_spec.rs b/substrate/node/cli/src/chain_spec.rs index ea634ab06e..fd53d64612 100644 --- a/substrate/node/cli/src/chain_spec.rs +++ b/substrate/node/cli/src/chain_spec.rs @@ -20,7 +20,7 @@ use primitives::{AuthorityId, ed25519}; use node_primitives::AccountId; use node_runtime::{ConsensusConfig, CouncilSeatsConfig, CouncilVotingConfig, DemocracyConfig, SessionConfig, StakingConfig, TimestampConfig, BalancesConfig, TreasuryConfig, - UpgradeKeyConfig, ContractConfig, Permill, Perbill}; + UpgradeKeyConfig, ContractConfig, GrandpaConfig, Permill, Perbill}; pub use node_runtime::GenesisConfig; use substrate_service; @@ -140,6 +140,10 @@ fn staging_testnet_config_genesis() -> GenesisConfig { key: endowed_accounts[0].clone(), _genesis_phantom_data: Default::default(), }), + grandpa: Some(GrandpaConfig { + authorities: initial_authorities.clone().into_iter().map(|k| (k, 1)).collect(), + _genesis_phantom_data: Default::default(), + }) } } @@ -269,6 +273,10 @@ pub fn testnet_genesis( key: upgrade_key, _genesis_phantom_data: Default::default(), }), + grandpa: Some(GrandpaConfig { + authorities: initial_authorities.clone().into_iter().map(|k| (k, 1)).collect(), + _genesis_phantom_data: Default::default(), + }) } } diff --git a/substrate/node/cli/src/cli.yml b/substrate/node/cli/src/cli.yml deleted file mode 100644 index 6c1fe186e7..0000000000 --- a/substrate/node/cli/src/cli.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: substrate-node -author: "Parity Team " -about: Substrate Node Rust Implementation -args: - - log: - short: l - value_name: LOG_PATTERN - help: Sets a custom logging - takes_value: true -subcommands: - - validator: - about: Run validator node diff --git a/substrate/node/cli/src/lib.rs b/substrate/node/cli/src/lib.rs index 8a56e2edfa..7e691047df 100644 --- a/substrate/node/cli/src/lib.rs +++ b/substrate/node/cli/src/lib.rs @@ -34,6 +34,7 @@ extern crate substrate_transaction_pool as transaction_pool; extern crate substrate_network as network; extern crate substrate_consensus_aura as consensus; extern crate substrate_client as client; +extern crate substrate_finality_grandpa as grandpa; extern crate node_primitives; #[macro_use] extern crate substrate_service; @@ -42,14 +43,19 @@ extern crate substrate_keystore; #[macro_use] extern crate log; +#[macro_use] +extern crate structopt; pub use cli::error; pub mod chain_spec; mod service; +mod params; use tokio::runtime::Runtime; pub use cli::{VersionInfo, IntoExit}; use substrate_service::{ServiceFactory, Roles as ServiceRoles}; +use params::{Params as NodeParams}; +use structopt::StructOpt; use std::ops::Deref; /// The chain specification option. @@ -100,9 +106,37 @@ pub fn run(args: I, exit: E, version: cli::VersionInfo) -> error::Resul T: Into + Clone, E: IntoExit, { - match cli::prepare_execution::(args, exit, version, load_spec, "substrate-node")? { + let full_version = substrate_service::config::full_version_from_strs( + version.version, + version.commit + ); + + let matches = match NodeParams::clap() + .name(version.executable_name) + .author(version.author) + .about(version.description) + .version(&(full_version + "\n")[..]) + .get_matches_from_safe(args) { + Ok(m) => m, + Err(e) => e.exit(), + }; + + let (spec, mut config) = cli::parse_matches::(load_spec, version, "substrate-node", &matches)?; + + if matches.is_present("grandpa_authority_only") { + config.custom.grandpa_authority = true; + config.custom.grandpa_authority_only = true; + // Authority Setup is only called if validator is set as true + config.roles = ServiceRoles::AUTHORITY; + } else if matches.is_present("grandpa_authority") { + config.custom.grandpa_authority = true; + // Authority Setup is only called if validator is set as true + config.roles = ServiceRoles::AUTHORITY; + } + + match cli::execute_default::(spec, exit, &matches)? { cli::Action::ExecutedInternally => (), - cli::Action::RunService((config, exit)) => { + cli::Action::RunService(exit) => { info!("Substrate Node"); info!(" version {}", config.full_version()); info!(" by Parity Technologies, 2017, 2018"); diff --git a/substrate/node/cli/src/params.rs b/substrate/node/cli/src/params.rs new file mode 100644 index 0000000000..f092887587 --- /dev/null +++ b/substrate/node/cli/src/params.rs @@ -0,0 +1,33 @@ +// Copyright 2018 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use structopt::StructOpt; +use cli::CoreParams; + +/// Extend params for Node +#[derive(Debug, StructOpt)] +pub struct Params { + /// Should run as a GRANDPA authority node + #[structopt(long = "grandpa-authority", help = "Run Node as a GRANDPA authority, implies --validator")] + grandpa_authority: bool, + + /// Should run as a GRANDPA authority node only + #[structopt(long = "grandpa-authority-only", help = "Run Node as a GRANDPA authority only, don't as a usual validator, implies --grandpa-authority")] + grandpa_authority_only: bool, + + #[structopt(flatten)] + core: CoreParams +} diff --git a/substrate/node/cli/src/service.rs b/substrate/node/cli/src/service.rs index b232beb538..1bd61bc6c4 100644 --- a/substrate/node/cli/src/service.rs +++ b/substrate/node/cli/src/service.rs @@ -24,12 +24,14 @@ use node_runtime::{GenesisConfig, ClientWithApi}; use node_primitives::Block; use substrate_service::{ FactoryFullConfiguration, LightComponents, FullComponents, FullBackend, - FullClient, LightClient, LightBackend, FullExecutor, LightExecutor, - Roles, TaskExecutor, + FullClient, LightClient, LightBackend, FullExecutor, LightExecutor, TaskExecutor }; use node_executor; use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue, NothingExtra}; +use primitives::ed25519::Pair; use client; +use std::time::Duration; +use grandpa; const AURA_SLOT_DURATION: u64 = 6; @@ -38,6 +40,29 @@ construct_simple_protocol! { pub struct NodeProtocol where Block = Block { } } +/// Node specific configuration +pub struct NodeConfig { + /// should run as a grandpa authority + pub grandpa_authority: bool, + /// should run as a grandpa authority only, don't validate as usual + pub grandpa_authority_only: bool, + /// grandpa connection to import block + + // FIXME: rather than putting this on the config, let's have an actual intermediate setup state + // https://github.com/paritytech/substrate/issues/1134 + pub grandpa_link_half: Option>, +} + +impl Default for NodeConfig where F: substrate_service::ServiceFactory { + fn default() -> NodeConfig { + NodeConfig { + grandpa_authority: false, + grandpa_authority_only: false, + grandpa_link_half: None + } + } +} + construct_service_factory! { struct Factory { Block = Block, @@ -49,49 +74,62 @@ construct_service_factory! { LightTransactionPoolApi = transaction_pool::ChainApi, LightExecutor, Block, ClientWithApi>, Block> { |config, client| Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(client))) }, Genesis = GenesisConfig, - Configuration = (), + Configuration = NodeConfig, FullService = FullComponents - { |config: FactoryFullConfiguration, executor: TaskExecutor| { - let is_auth = config.roles == Roles::AUTHORITY; - FullComponents::::new(config, executor.clone()).map(move |service|{ - if is_auth { - if let Ok(Some(Ok(key))) = service.keystore().contents() - .map(|keys| keys.get(0).map(|k| service.keystore().load(k, ""))) - { - info!("Using authority key {}", key.public()); - let task = start_aura( - AuraConfig { - local_key: Some(Arc::new(key)), - slot_duration: AURA_SLOT_DURATION, - }, - service.client(), - service.proposer(), - service.network(), - ); + { |config: FactoryFullConfiguration, executor: TaskExecutor| + FullComponents::::new(config, executor) }, + AuthoritySetup = { + |service: Self::FullService, executor: TaskExecutor, key: Arc| { + if service.config.custom.grandpa_authority { + info!("Running Grandpa session as Authority {}", key.public()); + let link_half = service.config().custom.grandpa_link_half.as_ref().take() + .expect("Link Half is present for Full Services or setup failed before. qed"); + let grandpa_fut = grandpa::run_grandpa( + grandpa::Config { + gossip_duration: Duration::new(4, 0), // FIXME: make this available through chainspec? + local_key: Some(key.clone()), + name: Some(service.config().name.clone()) + }, + (*link_half).clone(), + grandpa::NetworkBridge::new(service.network()) + )?; - executor.spawn(task); - } - } - - service - }) + executor.spawn(grandpa_fut); + } + if !service.config.custom.grandpa_authority_only { + info!("Using authority key {}", key.public()); + executor.spawn(start_aura( + AuraConfig { + local_key: Some(key), + slot_duration: AURA_SLOT_DURATION, + }, + service.client(), + service.proposer(), + service.network(), + )); + } + Ok(service) } }, LightService = LightComponents { |config, executor| >::new(config, executor) }, - FullImportQueue = AuraImportQueue, NothingExtra> - { |config, client| Ok(import_queue( - AuraConfig { - local_key: None, - slot_duration: 5 - }, - client, - NothingExtra, - )) - }, + FullImportQueue = AuraImportQueue, NothingExtra> + { |config: &mut FactoryFullConfiguration , client: Arc>| { + let (block_import, link_half) = grandpa::block_import::<_, _, _, ClientWithApi, FullClient>(client.clone(), client)?; + config.custom.grandpa_link_half = Some(link_half); + + Ok(import_queue( + AuraConfig { + local_key: None, + slot_duration: 5 + }, + Arc::new(block_import), + NothingExtra, + )) + }}, LightImportQueue = AuraImportQueue, NothingExtra> - { |config, client| Ok(import_queue( - AuraConfig { + { |ref mut config, client| Ok( + import_queue(AuraConfig { local_key: None, slot_duration: 5 }, diff --git a/substrate/node/executor/Cargo.toml b/substrate/node/executor/Cargo.toml index 4c8f5c1030..620682d4ed 100644 --- a/substrate/node/executor/Cargo.toml +++ b/substrate/node/executor/Cargo.toml @@ -28,6 +28,7 @@ srml-consensus = { path = "../../srml/consensus" } srml-timestamp = { path = "../../srml/timestamp" } srml-treasury = { path = "../../srml/treasury" } srml-contract = { path = "../../srml/contract" } +srml-grandpa = { path = "../../srml/grandpa" } wabt = "0.4" [features] diff --git a/substrate/node/executor/src/lib.rs b/substrate/node/executor/src/lib.rs index d6fc59d7d7..ed5d1363b5 100644 --- a/substrate/node/executor/src/lib.rs +++ b/substrate/node/executor/src/lib.rs @@ -36,6 +36,7 @@ extern crate node_runtime; #[cfg(test)] extern crate srml_timestamp as timestamp; #[cfg(test)] extern crate srml_treasury as treasury; #[cfg(test)] extern crate srml_contract as contract; +#[cfg(test)] extern crate srml_grandpa as grandpa; #[cfg(test)] extern crate node_primitives; #[cfg(test)] extern crate parity_codec as codec; #[cfg(test)] extern crate sr_io as runtime_io; @@ -66,7 +67,7 @@ mod tests { use system::{EventRecord, Phase}; use node_runtime::{Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances, BuildStorage, GenesisConfig, BalancesConfig, SessionConfig, StakingConfig, System, - SystemConfig, Event, Log}; + SystemConfig, GrandpaConfig, Event, Log}; use wabt; const BLOATY_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.wasm"); @@ -262,14 +263,26 @@ mod tests { treasury: Some(Default::default()), contract: Some(Default::default()), upgrade_key: Some(Default::default()), + grandpa: Some(GrandpaConfig { + authorities: vec![ // set these so no GRANDPA events fire when session changes + (Alice.to_raw_public().into(), 1), + (Bob.to_raw_public().into(), 1), + (Charlie.to_raw_public().into(), 1), + ], + _genesis_phantom_data: Default::default(), + }), }.build_storage().unwrap().0) } + fn changes_trie_log(changes_root: Hash) -> Log { + Log::from(system::RawLog::ChangesTrieRoot::(changes_root)) + } + fn construct_block( number: BlockNumber, parent_hash: Hash, state_root: Hash, - changes_root: Option, + logs: Vec, extrinsics: Vec ) -> (Vec, Hash) { use trie::ordered_trie_root; @@ -281,8 +294,8 @@ mod tests { .into(); let mut digest = generic::Digest::::default(); - if let Some(changes_root) = changes_root { - digest.push(Log::from(system::RawLog::ChangesTrieRoot::(changes_root))); + for item in logs { + digest.push(item); } let header = Header { @@ -302,14 +315,16 @@ mod tests { 1, GENESIS_HASH.into(), if support_changes_trie { - hex!("a998cf2956b526aecc0887903df66457e640bb2debfd7976b5c7696da31cdaef").into() + hex!("df90128fe9ee27bd61d90308cc25ad262e518d4ba09e5077558be2389780d8e5").into() } else { - hex!("2caffd5fcc42934e6b758613ff0a7e624a8c5b7c67b7c405bf6985a7e3a19701").into() + hex!("3cb0654b6c47c6532108695327fc68e22f2e67a4b20029c3c9d05a285f9e80a2").into() }, if support_changes_trie { - Some(hex!("1f8f44dcae8982350c14dee720d34b147e73279f5a2ce1f9781195a991970978").into()) + vec![changes_trie_log( + hex!("1f8f44dcae8982350c14dee720d34b147e73279f5a2ce1f9781195a991970978").into(), + )] } else { - None + vec![] }, vec![ CheckedExtrinsic { @@ -328,8 +343,14 @@ mod tests { construct_block( 2, block1(false).1, - hex!("72b2afc379ce2161aef95ef6f86a2321867f12b046703ea0af5aed158c2a4f30").into(), - None, + hex!("612d3e3c542b4ce62105f2f1fbc4fef1652d5ba38401795115042bee56a50752").into(), + vec![ // session changes here, so we add a grandpa change signal log. + Log::from(::grandpa::RawLog::AuthoritiesChangeSignal(0, vec![ + (Keyring::One.to_raw_public().into(), 1), + (Keyring::Two.to_raw_public().into(), 1), + ([3u8; 32].into(), 1), + ])) + ], vec![ CheckedExtrinsic { signed: None, @@ -351,8 +372,8 @@ mod tests { construct_block( 1, GENESIS_HASH.into(), - hex!("5f4461c584ce91dd6862313fd075ffc26dc702fcc1183634ee7b0c5de8b5b4d1").into(), - None, + hex!("17df8f360a4a1bd8d5dc23f05b044f5b14ece43555f97d2058ded47d5e7fb64d").into(), + vec![], vec![ CheckedExtrinsic { signed: None, @@ -460,6 +481,14 @@ mod tests { phase: Phase::Finalization, event: Event::staking(staking::RawEvent::Reward(0)) }, + EventRecord { + phase: Phase::Finalization, + event: Event::grandpa(::grandpa::RawEvent::NewAuthorities(vec![ + (Keyring::One.to_raw_public().into(), 1), + (Keyring::Two.to_raw_public().into(), 1), + ([3u8; 32].into(), 1), + ])), + }, EventRecord { phase: Phase::Finalization, event: Event::treasury(treasury::RawEvent::Spending(0)) @@ -633,8 +662,8 @@ mod tests { let b = construct_block( 1, GENESIS_HASH.into(), - hex!("9885d4297ce0341ec07957d1de32848460565a17ef2ea400df0e2326634914ae").into(), - None, + hex!("81f45b36d1c8f667ac948bc48f8fb61d12aae87d841b6303ab0320ca906d01d2").into(), + vec![], vec![ CheckedExtrinsic { signed: None, diff --git a/substrate/node/primitives/src/lib.rs b/substrate/node/primitives/src/lib.rs index 2e436e31de..e9b32db752 100644 --- a/substrate/node/primitives/src/lib.rs +++ b/substrate/node/primitives/src/lib.rs @@ -77,7 +77,7 @@ pub type BlockId = generic::BlockId; /// Opaque, encoded, unchecked extrinsic. #[derive(PartialEq, Eq, Clone, Default, Encode, Decode)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] pub struct UncheckedExtrinsic(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); impl traits::Extrinsic for UncheckedExtrinsic { diff --git a/substrate/node/runtime/Cargo.toml b/substrate/node/runtime/Cargo.toml index 6faf6fc64e..6ca724a81b 100644 --- a/substrate/node/runtime/Cargo.toml +++ b/substrate/node/runtime/Cargo.toml @@ -23,6 +23,7 @@ srml-contract = { path = "../../srml/contract" } srml-council = { path = "../../srml/council" } srml-democracy = { path = "../../srml/democracy" } srml-executive = { path = "../../srml/executive" } +srml-grandpa = { path = "../../srml/grandpa" } sr-primitives = { path = "../../core/sr-primitives" } srml-session = { path = "../../srml/session" } srml-staking = { path = "../../srml/staking" } @@ -46,6 +47,7 @@ std = [ "srml-council/std", "srml-democracy/std", "srml-executive/std", + "srml-grandpa/std", "sr-primitives/std", "srml-session/std", "srml-staking/std", diff --git a/substrate/node/runtime/src/lib.rs b/substrate/node/runtime/src/lib.rs index 90306a8e52..7b59135351 100644 --- a/substrate/node/runtime/src/lib.rs +++ b/substrate/node/runtime/src/lib.rs @@ -47,6 +47,7 @@ extern crate srml_contract as contract; extern crate srml_council as council; extern crate srml_democracy as democracy; extern crate srml_executive as executive; +extern crate srml_grandpa as grandpa; extern crate srml_session as session; extern crate srml_staking as staking; extern crate srml_system as system; @@ -56,7 +57,6 @@ extern crate srml_upgrade_key as upgrade_key; #[macro_use] extern crate sr_version as version; extern crate node_primitives; -extern crate substrate_finality_grandpa_primitives; #[cfg(feature = "std")] use codec::{Encode, Decode}; @@ -65,6 +65,7 @@ use substrate_primitives::u32_trait::{_2, _4}; use node_primitives::{ AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, SessionKey, Signature }; +use grandpa::fg_primitives::{runtime::GrandpaApi, ScheduledChange, id::*}; #[cfg(feature = "std")] use node_primitives::Block as GBlock; use client::{block_builder::api::runtime::*, runtime_api::{runtime::*, id::*}}; @@ -85,7 +86,6 @@ use council::seats as council_seats; #[cfg(any(feature = "std", test))] use version::NativeVersion; use substrate_primitives::OpaqueMetadata; -use substrate_finality_grandpa_primitives::{runtime::GrandpaApi, ScheduledChange}; #[cfg(any(feature = "std", test))] pub use runtime_primitives::BuildStorage; @@ -109,7 +109,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { apis: apis_vec!([ (BLOCK_BUILDER, 1), (TAGGED_TRANSACTION_QUEUE, 1), - (METADATA, 1) + (METADATA, 1), + (GRANDPA_API, 1), ]), }; @@ -165,7 +166,7 @@ impl Convert for SessionKeyConversion { impl session::Trait for Runtime { type ConvertAccountIdToSessionKey = SessionKeyConversion; - type OnSessionChange = Staking; + type OnSessionChange = (Staking, grandpa::SyncedAuthorities); type Event = Event; } @@ -209,6 +210,12 @@ impl upgrade_key::Trait for Runtime { type Event = Event; } +impl grandpa::Trait for Runtime { + type SessionKey = SessionKey; + type Log = Log; + type Event = Event; +} + construct_runtime!( pub enum Runtime with Log(InternalLog: DigestItem) where Block = Block, @@ -225,6 +232,7 @@ construct_runtime!( CouncilVoting: council_voting, CouncilMotions: council_motions::{Module, Call, Storage, Event, Origin}, CouncilSeats: council_seats::{Config}, + Grandpa: grandpa::{Module, Storage, Config, Log(), Event}, Treasury: treasury, Contract: contract::{Module, Call, Config, Event}, UpgradeKey: upgrade_key, @@ -463,15 +471,23 @@ impl_runtime_apis! { } } - - impl GrandpaApi for ClientWithApi { - fn grandpa_pending_change(_digest: DigestFor) - -> Option>> { - unimplemented!("Robert, where is the impl?") + impl GrandpaApi for Runtime { + fn grandpa_pending_change(digest: DigestFor) + -> Option>> + { + for log in digest.logs.iter().filter_map(|l| match l { + Log(InternalLog::grandpa(grandpa_signal)) => Some(grandpa_signal), + _=> None + }) { + if let Some(change) = Grandpa::scrape_digest_change(log) { + return Some(change); + } + } + None } fn grandpa_authorities() -> Vec<(SessionKey, u64)> { - unimplemented!("Robert, where is the impl?") + Grandpa::grandpa_authorities() } } } diff --git a/substrate/node/runtime/wasm/Cargo.lock b/substrate/node/runtime/wasm/Cargo.lock index 3a032be99a..83b4a4cc4a 100644 --- a/substrate/node/runtime/wasm/Cargo.lock +++ b/substrate/node/runtime/wasm/Cargo.lock @@ -513,6 +513,7 @@ dependencies = [ "srml-council 0.1.0", "srml-democracy 0.1.0", "srml-executive 0.1.0", + "srml-grandpa 0.1.0", "srml-session 0.1.0", "srml-staking 0.1.0", "srml-support 0.1.0", @@ -521,7 +522,6 @@ dependencies = [ "srml-treasury 0.1.0", "srml-upgrade-key 0.1.0", "substrate-client 0.1.0", - "substrate-finality-grandpa-primitives 0.1.0", "substrate-primitives 0.1.0", ] @@ -1061,6 +1061,25 @@ dependencies = [ "srml-system 0.1.0", ] +[[package]] +name = "srml-grandpa" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-session 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-finality-grandpa-primitives 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "srml-metadata" version = "0.1.0" diff --git a/substrate/node/runtime/wasm/Cargo.toml b/substrate/node/runtime/wasm/Cargo.toml index 50f9da3592..e460fcf234 100644 --- a/substrate/node/runtime/wasm/Cargo.toml +++ b/substrate/node/runtime/wasm/Cargo.toml @@ -12,7 +12,6 @@ safe-mix = { version = "1.0", default-features = false } parity-codec-derive = { version = "2.1" } parity-codec = { version = "2.1", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } -substrate-finality-grandpa-primitives = { path = "../../../core/finality-grandpa/primitives", default-features = false } substrate-client = { path = "../../../core/client", default-features = false } sr-std = { path = "../../../core/sr-std", default-features = false } srml-support = { path = "../../../srml/support", default-features = false } @@ -29,6 +28,7 @@ srml-system = { path = "../../../srml/system", default-features = false } srml-timestamp = { path = "../../../srml/timestamp", default-features = false } srml-treasury = { path = "../../../srml/treasury", default-features = false } srml-upgrade-key = { path = "../../../srml/upgrade-key", default-features = false } +srml-grandpa = { path = "../../../srml/grandpa", default-features = false } sr-version = { path = "../../../core/sr-version", default-features = false } node-primitives = { path = "../../primitives", default-features = false } @@ -39,8 +39,8 @@ std = [ "parity-codec/std", "substrate-primitives/std", "substrate-client/std", - "substrate-finality-grandpa-primitives/std", "sr-std/std", + "sr-primitives/std", "srml-support/std", "srml-balances/std", "srml-consensus/std", @@ -48,13 +48,13 @@ std = [ "srml-council/std", "srml-democracy/std", "srml-executive/std", - "sr-primitives/std", "srml-session/std", "srml-staking/std", "srml-system/std", "srml-timestamp/std", "srml-treasury/std", "srml-upgrade-key/std", + "srml-grandpa/std", "sr-version/std", "node-primitives/std", ] diff --git a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index e095fb95e655705e21e80e729955aa74510dcff2..130019eb4ffb27f8d3641503af2a81e278384352 100644 GIT binary patch literal 639289 zcmeFa3z!|(ao^dGd+*%m%*9{;3@`wA?j=ADNPqxe0AG^O5J3V2DUuRpDYhJvq9Bn2 ziqDZOCk_EyG@~Srqc}>eB#xtOoTZYOiDElh?XL4JBx@5nenfF(Teg*$c4SA+Yw7*8 z8#|vj+TXwGbl<)+0}>Kx%l^L1d^6pB`n;-6Rh>FjbxtP_KKnH8mfZ1wSEMz1c_t9L&7;F;6c+<(pWhwnfA*!$jl`l$z3PrvK_)u$dgeg9LBKfanY zm2*}(pLmL*_rGuT-8Up{B@QNu6ihlw>nm;b+aCYG{a0UeLy{|LPDxKsI^Z>KQtCsG zo__GDvSaHiefabTJZ)$-#O_z#D&y{F&%_*370|6`}WEy+}3X@i%m^zB`bf7@e@#%=W+k39DD>VuE1J_4$e zp2}NSo{p72^4R+yKXW?i>&341#U46+|8&(3#|IvHdiCiF7uKtdy39yAkQ==O%l>lF znvEEH=-~$+d(Y{oeK-f|l_AuT|HM%BWR8bim7RYcDL)2mPprl;t+Vw!y#Vte{TQ9RRgN?smK1ocyRYAY9tHYoXmi$ z`CWN716w>z*5ntm-h=O3efaUG9$9_l^wY^NW-#yRhu*h(8vcL$p)<)Bvf(3-@$SJ# zA9=b=`=zY?-qWiOsjXv+sW7v3h|oW}6>*?BUZ- zokmPl`JPVxO*Z$?!>1oQ0|fr^>Ez#Ly{F)o$KQ)!IQ_2VSF?rpQxPq}8@zb>K?5*( zG28kc<$L16`=0=wM;?36{Z7ouuVtIdH+8svJ?s4CG);=MchAag_kPDCANck^`Ipo0 zOus+<=6{|3sb@Z)emwho+27B8IC~-c2iZT&K9T*S>_@V{kv;k7dmnr1zoj3{emDKS z^c_E+{bKq{>E~dF|D65V^ar#5lKq+V3+c~fKb`$t`mfR-$o_iv`RwPipG|)z{apGl z(|?)$Z1x-3m$Ltq{m1OP(`VDami^W2KV-j^eK7rn^ykx`%Kl>Z{n__s-4_DHl4r)a@y^s%+ar^k7 zNf{of;tR>6^dJlQsiom>XFEb~nD(=tXK(8+mdHs9?Za7O{SF{(Mr5hm9oZ{gW*1 zp1m|FhG)jv9xpt~RY!XaVunjTC?U0)i{(dYQ-d>V(nBya+!-=quT>6SX!1CoArmmR zb)TLAl|Eh_4O1FAE8}iRPYzmPM#GebF25Hxt|*8*=~YW&cj2pr&-5;*( zNg_hiA{9daN;7Rhv%vX=QwCI0WUIq4$4I>LFQv|%OAQ$np_eqBpDD7t8Tq`(XkXMk zTT*i)=y}O$msHWJMtjsWN(6*Ca`3>&OsKXA)wVzhO`bc~P}S*1jq-*vyzxc{8#YR+ z#^T}{Z8IY3U8B#4q(wdq7i?MJmMsh4#=KMDl6ri=08W8BdjW7eRm%V#`#^8Rt{_Qo zo%w`_V5}9fFLu?fVPAv-!dF0Dwpyf5-JC!JWhFBgRY}9BZBj}0)Zuz1!pkf7q+W>? zkBn_}NKdD(zmaFmpU=S2FDAy)B{hZ=sR8NaPZsHIl9mI|ELJbll~LM<@S}W%!y|!= z;74IZ?Cagk#8600M_LlH;jdcJtVj-L?T{TykK~EBNVg2z;IPPUO2`|lIQE^;;qXXC zGC6YbI^0I*l&LWkDR7&Xjbz8Zi~NE7HZuEi$i3)#-BcO!gGs{3FfO1nG>;^reG{$O zu|G@6kEJR~$6?~(E@1gwvLe|;11^;`%#@+xBl$ff_E(H#EV;yKNd@X0o+Oa$17_Y-$p`#D)fJBe~c% z)j|{_;X6?+rleC;B&MZPQ}nojFxE`vaxtn9$Rx>~SC$0rnm7R`)f8_uvL2p|v?xt3 zFiSPL(DMzXZG^`ZqiS+_8F(yXqg06;9++99tWHF6;ru3vB8s$5D2Iv1)TC=&vi;<` z@rm$QY0<1kRozED3h-P6h3X_wAlSxQ9S;ax(FsPH3KFKn#>zcQLQJTLJ(m zmDZ*qRDOY?P6!nGf%HIT#Gz?8+y1KyfkMYsUcfZY1REMUwKAq}f(O~Y3fVQ)*9kl( zGOe5NF7Py^2cTODk%BzJgECXW(=6d3uffx-hGq($MubP5P!8G!9>hF)(lkh4$LM*gaMiR`>?97OcX`H2{qx;j{rY;D` zrsoDLq{bnUn$r8_Mw(p!>)BEL8idHst|_Iny+Jw{46?k@9JB^hbRYrZ+XsChvbEH4 zyEOtFra)efTw2WBHkgq}oSo_SlTNqa>+9`MqIA0>#*z#dJ?Ht1xAc>vH0jH%QZl8lBuoKEHPph z5}CB3DbNZ(%nW8Lk*YV68+Cle;v&xtk_Gez$yE=9fZp#7F38a(Z8=Kko-78Cm%2SW zi?y)PY|XSgv)x`_q#Q};_+Y@Tt>RU?p~mRU5ffi{x}(gNm=T+X9WBO^Vvi%b&uy4O z^aiz&$LewlHJnt98~o+CSo4P3#_9#fg`pTa{-2oOKej63o(Ap$^|NCBI>wz9sECFY zXgTh&UGYiPF8486T(Uv3xMPE45q_0yBjcTqBVezXnV{5F^hTrFTq>p!HFrogIyb?b zShb_MIIg0Kukw>WX@gicgj8LJ&D>JxfEIsLs{*QC18+-{&@jD??nXG97wCCpH><@u zw{T&!(~$*7@1yI`>&6Z1LZsOXU}h(Zb;OKwR)w6#Yl9raN`xA$OwgDkdPb?ej14!)(*&|!3xs;YXd33Nz7RTl@!cNd37O5kfggPp#CV0l;m^`D2ZK5 zak$aF&6LZzD~`o zg)26KC$v^q>l4y2nxljf!fMG)jgnhY?MrabX+o=H=Jk^m>ZyV1onAM2eqG(D=1O7J z5Fp%?_W~t~6(#q61NR1YlTxSkHFfsFI6t-^ zT-L_@Mz3g~v1YDmqd+26LR7eACP9(DjENH5Xlaim%~nUPA{otu=BSY!WpGr#8Be7r zb_&yL+iq9JoKRs~^$66VgIWw$)Kvrql7iXw&H%=tOQ6L@c49XNO1=`GvswwG9VsLvR+$kuzf=u*8v*EHgPm_kpKBveimN8+Nt| z<4p}93#+dS#HK)OMi4Q4!FU%5;{P_&%#bJjv)MDb{3|cHH5PtiotX{~NO-LM73y$6 zLFfQ9&R-ZejxE77Ea{Im5k5_EYA!lTLzCq&{b9v_e2~e$p2z}ANg6WiVv&NF91(wmp#ufPxr@|UmH;1b0P^=4fY=%CJ z5^QKz#shlV!v@lSfkB4?++*2zempR1mhy{41`xpJt4O zeV+naqCCl3pXDkVjDrsfTmqljI>008H zgt?U>HBma$?BushUd-71I|a(?m5%s$xCA4lz z+VHSeVPFGGW^CIPD)O~y{;2|S09VntaTQKB?(&o4bjhsxE<0ryMX(gv``s1SvO85S zRV6}qbJ_yOv})p%)~beD){sPw!Kv;Tu-0|i=>gVeR{@!Z>|k1J0HvW-m}@asI06*M zrJ*HZ=#3 zzkqe{cM=3KK(zUjxb7f!yNF$TOGgnG#fP!QdhVAJ8Dy&mc{?D%toQ`Z${GAi_O@{> zzt`mHmlKtvG_)Se$=0ddF)uK8LRUfvEmIWSLmIUaLR|;GAEi+L`7xL#ZbAiwp&sI8 zASr~%bE_r9Dj|t0#V^3J%C6paOfMzu*HH9MPaO)bF zDaB8Bt@yFXi;NL=2V2GO*4I|?A!_M>)DHH@j@8+r?vFn+nc|5ws02f-#RNmob<&^8 zQ8Xc;7%Y)VC`dMdb}3h~nIId)t+$VxLbZ_-Bu$TvqcG7cX2nP!ZMtbvq7)1g2Tp$n zl6;((5&~SCj1a$J5T#KYYnoPIKyq{1=YrFc1s3ej-^uaJ(ztCSEv92++Go5)LR*Z3 zW^fq5rxZMp%ofAdr;7G!$e)s2fSp}R7;svh^t@_7k|Mr?>abbMnrc-ys;b>h%`hXy z4&bs}QzaJqeA0jx6Os!Ikwc@Qg!{d%hJ?n+ahp(wIv9D?R&HRlC2pkKdZ#l? z=A|}i0H2!}VC9E1W4MY2MD4o%&_Y8R+VE^k-tvz%qEvwVUQRGbKVw8(Lld>+FPKOZ z)7rWkL5#p{9Fq-f?t|Pgfs3V@FB}WcJqxgSRgrlm6&spg0*>M(LQ?8fM2)wPJz$8T z#ii^h=RTr=!8SCY4=@KFNM1@&5x<(?-@l!NX0f3SNEHF&Gaq_WNdUAt^rw=5X<=Fmeu)^2^BHPUlZ>SvY&!84 z4O7SU;H|pvhE2+|P4~Spulq&a_k-!N+jTz(rr+++eOA0^BN%E=47lays4Ag|fX2fApsBvG7G^6e^+Jn-vtHov8?y-4wy0Uyy z8H{;SQBo3T+*eY|*_9O=3>mf^oBQB%?%@e(V9e* zP^r-h08_%W27W%%K=e$Yv|u*mE%}(YT~N5hfQ4L8DBT2w(rbc3=_V+YUK12bH$kEF ziJ&MxhA^;nC%=jTly3DXy;hIXtzD(p+Euy2?K8!&70EEl!i`;%p=0H;+ph}y42ycwn+^&vg_+RT9M`VRRA0Z|Se^Z0Rhe~k| zR;C8KkC`p39GzwFOvEBCL@ffihF=L=WQ)i~Z)&ya4T4DYqc^o4=ncKr@as(tn|gzY z6GiC_L|9G)dV@R^Y3a?O={Jb~x%lRW>WvWj0TXD3Q=+*f2pY$-HxFQi4JI@#EE!{k zp*j&N0b*!Xz3`=H$fpt@uZi5YpA`m^TqJqS^M)}M)D}-Ckg!k>I=Ic}fV7+3! zEN+QOPGgqznIxupy_WXVWt!8KrG36kbBeOGFIw99#OTFRzGNw%oup{e`2gKwDtUqq zoC6~^DJ5DDly>>=F+7PV9jWx&bfn&&Z?&W)_W08kP4RQDXvx!f)$Mr44t*W#N06$R znF3?G#WAoE2hV_W?*I^}|3b;%?}h`W~90i^4H@L8G}jE{HeF8W0!6W>k`0c2)~wR76T> z9o_T=F`C2>BZ@DGqxsg%ayyRXYBP*82kcf6F)5JjY&GyUE8OE2ZL?xSBC^kz72E98 z9k+B(OxTovtu5LeUkO+nvu@EIx<#9<1{021XVEs+=|jq_bvI+9?mO#DTeLTqtYa4K z&9KgbSZ4v&*=(${*;xk@H>|VSSx4DQTN13Z*;yb-!sd!O>;dK|jo6#PY-Q{2!BEB` zFih-V&7!@I70hqTR9wYuLkKQ^qNt4uwNn^kNGgnt?$is0CYrjL3!@F3o^Nc?RuxDv zrby2jE!@*35fwFycAc?fUyW@yyG8r^*acTNT%lGR$ZW+w`L9{aLU6cZ_LSj(m6n`M zao>cmXy6x{Ys_N}`)D7MjB0J0eOMDkE4dUf;4mw>Ot)B%y9}&ukyele|J-nl?6Tlp z?Bb&?LJAwC1TP`w%GN<-&p=W@@Ad z(%)*khA>^qscjy(-0%NEtMU-0|HDK0htxxeYG6{%`H_{&l!tIwlYvtnLdbO5t2c{6 zu%TBEZ>ihUO$N?Fua#GinTFq4Cu{Tx$a>agpt6-R5U(C~U}-JT_N-)JDfY1J#zlv{ zf&NPuUsp2lReSZIa0DGn`?OEblPlp>PQ9KyEyGYtR@-?(2i z(9f`L50=KWraGXnh1sY&Fy3a|Kp0}Eb$R0{XU#d z+27aAPCieqTUilV6A*M3-i@V$CSz^#C0bX+7DNG(|VLn*S$o*4c68F>;LHrB?{RyacJ-FzxEcYhS zAZ-o^9o`Babxaxz_eAU+s<*Ki#{L)6WoSTyuX6|BEee6laS!xD9pi`%8U00f)Y+YBb z3s`nV)zz}G7BsE9TJ8}jKDFF4@7FpdHm>I);e$<4TxH^^NpPiC=AfDgS2`UjWqB#_ zrNQ0<-fH?!T@j7#)z^=|lA93kypl31c3-2AzLr9~yGDq+N?Xctako~5a=?q-;Xkk} zD+w!x%!NC7orfjf`YRIZ5H#z3Gn)_r${j+!w`Apvq%5QA6CeyoXEdX)Z zvsR|p{o^(5mibKD?XRWmsI0rkX?$v-u||A*JX?Kp^5)LA{>0*sqB9yfT3m2JI?rZTQF)FZYL_SgqmQxt{kG-OJV{z_NSxUQcZEw-`}s-LT1ye1 zBEC3;CQsxDo8Hea+$f`LOze@c2*6mx!eHX$EdP@RKL$DzcViA_t>CQ7w<$y!qZA~l zY|R6S+O`=kGlL@g-{Qg~DwKgbcOq}j{q0ouO3ko4_o6#)|?Ra{JFHF&!aTAVa#8eC_ zo@>>Cp)JqFy(pYmCpB%G#n}u%W@kqKP4!BF2#D2`e{nj{euU7KT+Ss7JAMaDZMzFS zPeAl4+yXq{pP~FRu~4jAO#)e>vMD1zf*+2#qst6EuXja?n?J`01uJ_LbqwFObvCFmTDI^K(*tGrC{-BuLfH=yHLS*tO4J<$FU24HBR zuwJnO1#~y4bSx`C+R?DZy6Q!Vvn8i@Va~eiU6}FKyWVi8*5=V#n-hd0FMGHR_y@`F z%Y#MvTdjPBlO%wX;y3?a2=m(E>ylo995MTlWCVLVbpKRp3!_6- zw4$vk0}L%U&rYH;#nTxZB+EMz_LK0@4}Y3WL+(ge;PR0l{}c&}K$+2v!`ZUkEpr!0 zL2LdPC5C5`-hWOT=`#&;bs-!PB^lhE*LgcbrYbnyCO0-)l>A*}?;E#Fd6_XLC;sI5 zF~+kK20+>x7$u&m^g-o;Zsn%NYppLL&=fIGG zITH1Pt`aF=+rL~G!mjJauHz1-@{NsM9>*?Dr(F?**r$##j@LF+e57C3JXyp_xfj+4`C3nAq&Xv(wQvv(wAvTss#HeJ&bm z-v;o}JCV{PvdvO7u~m^0KHrF{CUcX|VJ_ceJerwYeIBdLO$)WTX-jQx+FF|@rst-0 zb7;E=OxQU2+jpUSXm%8G!q!Op-D)nIv7ooAqc($00J|7~RQ7_CvZQ~7_%*ZGQI(v` zV)jtZV)jtZV)g(<*v#Azt9^s#vtE5di$+^hdS{%qztUmt-|+2F1W}AwVyyqw4!eN9 zTOCtXprED_w+pr<-40v04Y8_?U`BLek__-Ar=+YPC*7=NiJ(qeyb_zjtR>oQG9py2#urCPwzy zd|~Ua{1biF?kp3TRe@rRUM)zh&n0xF`3rzc*lI~7WTh~N#v$J2=y8*Y zs?E%a!z^n3rgLuG>9t+vG{tX7mkD35y39n+Twd!mhZ3lt?DurHq>Zo87(s#YMD#3Ylm#@c�*jYmqpNazMp zsx#A^Zl(xd?fxMp{Ayf4$G&{on8_7^I2e%Z+VL>9jf@nB#0a}e0&Oxh`!j@Uh&G0( zs?w<1xQqEqUa)fYs-*gQu4;@;$)TTUjMim1r5x_{^x%!u=!F5FqNim&mz|PJ*vPc^ ze|&e^?4n`bdNwyt$2hkI`uWb8;(;f%fL<>H*QXRi)CgZm7wpl3n0dy;r(oy&U~;Z? zbE56v2V|+iej-)3rHn%^Sa9;?9>KkMCi|v(T;`*1@BBuGz*5m0>H8$KN*D zqRQ`oRHh+my&cXak)wX?FLN4QlsV}>?bhjPN=Y*uub>spfx}TdoLW@|4i)QHgyog&Ix5R+|V;z1_Rl9DIv5H-pe|`&A6<8z1uPY{0pq0kbUZe8+1+k)@nwHP`mZW!t;>sRBJxFgUN?;kw&wa5os_ehZD9S z#UmIKg`DO4vU3p0lj;m;`RPzuJ!#-KSFgJv89`gjmZxjCIRBGE`P%nX3) zG!tEa_(s`h7If$r;U`YBBMq6+lp;80oq$W)W%aG))hp6#ZuDBwrrEM|3NBHB>I3S( z%yw-^pUNQc<1(@Jj0-nSzEmbdW@z%A_qp_0zt#yUbl&#AS zMrGbQHy3XGfylS(I2B{a+P3ZJ9ShePHGPAn2vL5k;R{f=-08DnFmb2PPKyHp2gN|R zn>cYbY%27CSw9SYIn@|#3Pa%UVUQYf0>;W{9z<@o!5b~u$gyK%(`ajsoFN#c^C)*oG(Lq2or4pNog85hxLI=ofX z{A>#txt_x|bQ>nptzuu%e2-8!3?Q4sR+&V$hI!ZJN@8Cu_K&ugOfcSde6XoM>=pYN z2~gvZ6v=Y(@4oXWhsgpMx<;}u`IYZHD)X6mUXTB}e3S;eFZrqRv2Bk(Q9knOf4BR7 zziL9>B_>{)_+O@*_=jaFZ{qp#(VO_2<)b(8{pBM~`~|!3_j<){heAzkwVwQcWj3$m zzm|_)$^TV8Qpvx!`(r>D_KB*0aOSa(yAgo7XchG|bHyQf24f=f^hrV(tLNrbw zs$^g)_PdFW_ik{C=}^G*``w=J*bmd{`R0g&^Jqxg2A%=TjBdEIo$~_(EZS{Y4BNtX z&SBa?@3aesqpD`PeTjnsmz+Y__C4AeZ?QS-inp*Z$DJ0R;DEtPxc(T|!1X*=S-wBR zby2E$!u2MuAEN4;xjxJF7Oo%V`Z}&3;re>6ALsf8uAk(3l4 z)u(}JA?Qz<8t?#4UWKjVe2kT=<84fQRipSQ#nI5lxhxXLs+z+3G#9Vtw!cLsV;7LQ6mC8Y`3eTZ^s>WwqVY%q3l6|J0hAZ6lb)~nu-&;N4 ztzPB*JXrjq_4APT^J>pySY2>sW?q}eZ{R z^r2I7=yGriJAM$WmYE2$Q@CCA@B|gm6RIYH)@l`Dc`lI>m70A)9hbQoMXZZZ2Y*vN zwDXVDLqM|m!)n>0NqasVm$k(d@ul%8$IrNXrf9sMvvAsdqG`9{b~zp_o~;>9ibS#Q zcKV#LzD+cYwta?)&&V8vY1}|DKrFF08dToNVXU5pOo;9Y4JMi3C6|gNU6)Ug>Q`iC z{KS8kGeeZ8H&C7g;7h*wT;qIBC)d8DoY1SDTPwrcHIIHc7rWB#K86>Oe*qyZ#+#RF zGA~)(pYIhPqeb!X@C1_oC(fNuv`0uzo0oW@FDl@?y%ROPnB&5U8Z9mi--rwT%-vi# zpW^z_o#<&38Sp>ue!npg?wno8nytJs)1I5(yk*%DJ& z)7_`;JaO{)ZO7jDhNHK;VKbN82gDLVGCyKxnsgBYclQ4grH#fz zcX&t0+3DXfsf0M@?I(B(hq1@mER+^8X1U?5XbvHUUi|MXramn+DfbU4rxxLGZ{HdG zIIl&)|A5yg^qQj>R>pVfZd+J5qp57A_;vB{3*=bPUh95XI63&SwD@;Q{b5qKX+^w% zXwjRc@tbN(_8(1)FDcvKCmUALz+VoIt#Xb-VyGGW&h{0T)+P=dgw*}7-x=9^zZ1MN4ee=-o#)K zbaH3^hpfVR!J@f=FxYSh+taxn{@*NF%1LBi-D!_8HomjyQ0#A047tF7t!ix>rJn6@ zFsWyv{Gt9kUuL*(8@#RPQq|w0stJL-O^Rr@=<(uj@?xX0f1v2|_6K?U3S+O;BebQ( zMnwP*n5g<2W!1{TGS;TRW4H`WdLmLy$RjylY7hWmiU>2?>UgsvUP%5*V{}K@qUr4T z;DKUDcYc5xjb;`qnweM5kK_!Ji(taln`cI86~C$%e}xxKDCv~z1oO;&r)re+ePy|3|C@Vd(G!FNQ1mb9ovS&KlIBTO2@n#1 z#VBHaMUP;OO{e^iyuH{;sqdv!*R5HjZE8Tq z9A?CRFeTBmB`X5k{x`_m1M{)jx@Tp_s1IWFX}nDXhbV3F!!D z8A4+bw3BZx#-u!BDd;OL=O*o68_V7#I{D_}QnLK1D7%GW5f|17yGr>IkrjK$^c|+% zxzV85OTwR|;sa>yQe59&{G7V?CqzKfyQVw;_Tpdb?YCP`o+XOExQxdS^ujI%NyXpB zj!06ztt>vRVZN>SS9<&YUbx-izMQA`^}_C0`kRWM)%(?6xTZd&-&FidB|qH@*LtyK zo}TK3OJcFNqIr?>WG`G-FZR~rXOv7Ba`0mNczV1SMzPp^#lO(|$9m!Vda?V8pHlLB zdtvOwuHcEe`O;YIEyZW`{!A|%t`~bt@smnk>4iOB>`I;<>4m+q*qe)gruPr`!jXEh zHy8h0$?xff8@$+lp5EOHm&IcD7N61k)4gzGz1Y3Q|EXjqvYWiv0iGV}h09~Hdx}r% zJ#);>^~6v*NV&fkURN)6ckwAD|M6aUy%#&k)3^4* zaxC_y;`JoJjBluydQCM!l78`j^Z#0_w>T8^+IT8EL_KF#vj%m~X zo&CZSkM;`H@&>*E#O3u~?sdIlz|$=~lchKJicLJ-)GIUv-ROxo^lZ8~(kp&R?H=y& z9XYPo_e|bi*E6wrtzWM3#H;=3kUt&lVM(CGRi1jFXTo*AU#|3iT;c1ReZJaR?iHU` ziOc=*vYv^%y?)u#GZA!Y&qUL>X98v9m(VLDATIIC?p`6j-{qH`y+Z7~W2j$hinLc}xU7d%L!3Ko94u<-je0nf_sMO|6?{g$q2&oxhiYA)mzBz0J zOek{wOnKwfWaW*sC;;R?p3&$+Ap~2q5joUxj2@c2SSc@!+TlvMP`X%paQ|t}RSc}& zG_{hWIn=Izb*W+LvC~r z%d4II9pLX?{*xg3L3FK{{wH0dR118$J%HRKSdy7F8Yw1c2dpv}gJv z^WJwz4;Z8W-4ZqpW}rYTP81-YwejLj74J$ljK%3XVSx+_HBS|9LAhZ!EsoTY6!q;= zY(z35EAjHF#7qq>goBEcSb(O`;88q>BVYhi3k0-`K^0XHXh^#$LD(W!ubO72q0 zM%bm2&9KW#@E_$9h0(dz_%eBS+F{;Smf8`+4m{-}=|IvS zb*y)w26dZew=%#;p>(uWMz}UrKgf z=?zTw1W)SS;p_w4;d=cJYlx&58<6-pIFW%=mM=9%CnO9$q75c=MEf&NfPGG$l=t42 zjdGAi_WK?`ve6oWgRLVkLX#SokvR#WC*{Xa-{-8@@m`QNBDARdhA6MiRgT*WGA)wg zY?1mbyA^NS5@2uU0O_rA_qSmPpznxg2;&nb5isnOko$ZuG=2h-B0+v(x{T;yd;mmD z$cfk-tWKw2<5eeGdS~MXO1^060xnE!$1s8Y&&yZw`#5N>DC@zKC z;mvZ-x5HbGWTNEzY-OfysJB?`nYj!$Rn|vCM&j;E68g<5U595SYM4WoJXt5T3NBB+ zC8oZ`Qy=zJdf8VM0BcYyHK$>QCZ{*~+qn=Xd=Hnm9LZ0>K7;2?DvDli6|HhTD(muP z#|N{TS&evtSSvW;a1lmutW6OP!{}0+d2%n^{+_Iw^h~(37CTAuvsLmXJpEo;W#Z7S z>?;J~or5&luz^boDkDUmf8cnlaQ5w>T;l@cbZGxNz57VUcnI|*;#w#OHlS|-e~9eN za(vLAtHa)CPxB=Da(g&Al>{~15iTi{ggas@I1|ozi-??4Vq>Q^qZzj2MM@COZ1rBY zBPB%If!-_H*$l0VcC_5na6@I&WYek0rsHJOakA+c*+_VaK>x(bc*$DU1Nbn~Wwohb zp!~_OwW3@6+iLqnSh8k?8a3MjZ=loKCUYcNMXfu@w!H0@x81U~Whzqvr&+Lyfk{~1 z6Rs}tWl3Q5ig5c>5?I|I?kJOlRh_bDRw}Ihs^prmr+h63fYhk#!WC0VRC0aTUnZ#% z*-Ot^5US5bh!jTWVA>ch$da5F6k|Sd%|q;;dhEImW*D zjHD$oJH!_|!E+HR33D$A{>LRL5mLBG0uIl;Aa_FUCwZz<`PL~a-&#>Q#YNtbEQ%%Q zg|-<`&5f%32<<`OTaCc`8YmKPBoP@%>L>W$7B!rR`NwFeM*DCLv=3t=K@$XiKaA~o zTPX*USU0B}sN!EFk$qUA7UI=TR##>xyfR^t4LJj_%ke*14f`eQNBbO|p*xOiY|_R` zTg6HoR;q>t!dQwdkK8Tkg&|}dHlGghOLsseP#x6lZuF}`{77Q%YD(Z z(G;0wyK-u>2O2Rt(nF*pZjXnt!7s@HzH{mMOPX1DLobh0i^v4zov7IBcnInYjHk(D ztMY#|M~8&`%-jR}sm{&9HUq7^rXOkR?`9CqG>4UeObnr98c^F~qyRB$M}%=gLZV+a z+j1P-$k+?~8>!T}y3AK+=n@IqiBcg!I(&r$n@?aSdUqnI3ia8j2-K@r$5)C+SMWVE zCMOU$h6W;fs{WjCGys$2V<(XR_t>UvAvlrVB5KzX9S2J}y5qOCp4*#pjo-%M6VBP8G{z1 zA&j~ZLuo1^YO@4}4FVL+$%rOhL=a+HO&*z$+R~iv(#W24UZP1Po|pi@@QM#8^O!NT z&~K?mU8p^p#)2+PzomMLKlPq)*ZCo3LuEW)iC-iM6CMk>rf;Y?=i)<2##R?SZCjYSn{bhpm@of7QRzrGra>nY|dg&ndw&5NJZdXlR& zvX8Jl*uwo!lXiluLZr0Rk_~{UDFq$r7I+j7rMM`TlNJwkDObfq5f)(aPu@#X+em&a)UP7E1RV6*{^y-v1Ey3TRULk8!VHCf$F6d&NfS{yg`J zi_-mPxL2T)Vx<%#rC6zxToo&&z^CtL4p3l|p!_&_71Z?OKq(7{(mqL=g28nES?(3& zBy9@w0}6Wa1IW&Ts}!L<9_pl93^KQp`op}vi|a=LP*GKizEU)mqOTN1rRXa~PbvE9 zja(IdwVkV?uinH}(N_viQ}or{Torva!&T8&w{cZ;)go6#SG|?1qN`G5KT(%YnB;dCX$rY(t6Zom1x$c>?nE6-eh}0abDUg(HuEw zC#(|r&nl6Hq?=95Bt`RRp>dViaZ|}GebDAq6l1LtVPy<4NK}bZ3w)Kq3TfQ5DbiF# z^tDCm&J3XrDYIg-*5~Ht19@XUIjjC~^47@TA+wK0e*NfiaVOW=W7}n)63~SlL zu=aUC)s-Gzb&bbPl|ff!5Y}~NfR)vL(5t=PdvqwqS)KGA9rmnrp6#pBle>!M-AOd> zZlZY`<>6SnP128cX;37bF!Z6%VkF6B{b6X3S2B6FiB4?!SEkHTc&3=+O9guK@jpwT z%(+y7G9b@C>BhLDOA@}MN`rlH1Z$8Ek?x+PeeRi1FsCs}m}}~h{&X%z`tPyXEM zLI_!J<{VR{;&L;tgF09M#~rgc%lv+QmhhF8FnAVBcIe5LT7QYJ==T?D2_;}y%W)G` zEpz8Xx0UqyS~^a)J|3h=M*MnxV(UxL`B0ucRU_Lb0qwd3i94@&nRNJkUHT&F3ix!2 zYQ(3qy0Y{((ve{6N{>lL60A$-2onWnR_Qni`-vFs@K>(Naw%1b5{ zl;SS=q>XVaTZ%0XiZ9xPgP6!!1x}_Otr`dg=Tj(JI}(n4%gyN*xs~F_e@#=~oF_>q z9e0jd6yWRJ+H}h2HCGi;N5}JV>lfHxas}fATQs#oF>MmfbbQ>4zM**0!og9oZRt|w z;i&v^kbjO(2?!zG2nKrjLAs}KAY48S_5qI)GJU~L+~gA`lGV0#aH3T7&?NA$a-NUi z7f@6RfiZl)op}^Dx*lP6zK~*~RvfStA#87^_%~LD(r76f!I;7dnzvfrWwA8ufmqVh zo|qGL-MZvH7oxxPq<%=ZMz7c773O^y?Y9j_W}wzf76W>DmBpN(2^{wrs;yTi1Gx+| z$oyYBM*boW8x(G;75Zlqu9CTYJrE@&NiB6EL<_js+OJT>`&IG4zDM=dzj^e7xHaB< zZ27s-n`zy&C^#9-8sd+78N(KLhcXa=h`mM@8&y@sS=E^K3255nFNO%|A5@R@rE*wM zD%yrn0l_*NCX(B^LF_@?nK?h4Sr%5HYUr(S()7eYe4+{*bBo5UPU?4sJx(WMg2Op9 ztsqF8-4tbe)IHQH#+RQO$4DzUk920v*08{tIrKg+mfdYz-HP6hnb>Qpq5XSuY>qTrrd77w;kvt=++Vu3uh zEO%73TvpZc#_3wNS6MEvvbyQj10{1WeO8FQ3`+orQP?5yLftYyeh zi7i&Y(?t|6=CziALS!3JdeBWl)gq0IH+*tyPwj6;jv@ zUC(mZv*1lkUQ^k5~u`bcCsC?#Y7i1Dl-`1%O-Mb}rdnLsO*%N^G`8SC^M$<-(_~>BeLUK3guj z+i*Q|A+DO1`GrQDXjxlyqpT^W1PIGTw^^!LH?!#GKZ|ZHr&*5Rnq@7+v`=lFxagj> zRb$wSoX}cQUSSs9oKr-V(~Iu*WYO)*Pr9s)qzcEBbpSTivI|R3)EUecUIK4hMH`${ z+q8HQi}8?%U-TVY+zmM$$=V#v0r~8hh-7s{0rB*=j+u@b8`c>lT5VorAWTLlE|u9gvt9dUw%caPh8?2+@jr(V;CizGU@NfDI4Hul zP)=S|yDZ~wOOcmljb;O$y=Xk%3$uKzqq_M>nNr?BcveS!zm8AtO)Z>l=Vxu>(f1&k zk^d49ADP^8NSJLoI{(#Ap{Sh`!(cUM%MlE!;1131KG{fb+i2I3u<1tu2)BmgdDi_S zR<1lrty6pjHGSCwgzqVZ#ZC!}Lqko{IYvCFQX*toscg_%yLq&!Z%c-KFFdR9@r{G> zJZe*`jRSSKxgX{w22@qe6Uu^c(gz9rjGp0}2{E%14)i)oZx!!t)tKw#2WwV$Qd@gJ zabrHqxfbOib@`sej(6qjr^JWpTU9Q=TCzCLyq0!`KiImE4xHbWaw;EzZJZ-5JF3JL zjMM?l_5swTxL4jFY0O zosHgh|g?Ytd^qHiQ( zRyu%A+l7d9ERCFsd9iDHnQ}1Mb#od_R|Q#b(8|ua2`37MHZ%FQ=`sho^@F~>L8TnS ziRyX#nB$2XGy_ewb-5`~4m-0Lv+}_-+?;T17&f)g0@bz*GwU!@5KUlC#K^_O!!dP_ zQl)KNGyd4W;?ZzT6!?Pyzzt53#2|zVxe>h#(Ju@@2d-HsMar>4{ zvxDBYt#iZ1)K9bg>F#Lp(@v_N+HIA_O`hlJ^v{MVB$oMf%TFwnUFZkf$^?tqkRTzj zIJm+QXcklU?VlW6Dbn@9W+e#`K!OUOzJvw%MitZS71|JlCE4sI6_iLkK3MD@l!pR@p>Y;7QUf zEQXoF;dYtwDq>0%!sblNbwidV-F5;)fw>E8>5!>v<@l77gKyFOD(AxLs}pk=T!vd`sB${CG|#Y_c66;Cxf$FkfABTl+gG!UHv6m#5M&7sDtu_e>E>g=tO@m_`&z z$cBj8CR3y}H!IuS1T*-`HpI-9J`t0XY@92wVYUUC466YsQRybQnp}|AF3Jn_f{h>z zK1CZTUQ>1{Oe)Cm?+G$EAP(WF3-n;~G-^r`7|5x(u2vj%)A+jm0{EI2meyCm8A<&^ z7lW6f44)g7ABZr^xh7Jcqf4h2!2D&WZN?G&5_ELB#8w1>5Kn)_T*Is&Btd@1FMy<3 zBByIrPqkYcCOKu-3{%;xT%S()n5LM@CCUr+;S?7U7Q{kFi`3?$X)d#v2^F`AP3xUK zm;>cM9NY1-lj1tu!Q#cq5NBH5AkD<0kS|-DS_`y%SA@_7W1Y#YTBJK=mp^>^y4yboSw(j`B z0Bb8inU%9=GMEt@oLQ!^)`onfro@jUD9RO{f`yuf$2~Jw00Jt^Qoh_57g~A zYq2-n%9?TXkbmDtUkXGUy@8I+qt+crKK5ntur$`Pa=bt+&V>PFf^0+Vg8 z8D!T2@C|DAa)Mg?rJFBKQ% zyEiYoZEfEy+dlHD+qMm&7v1)${+(6ZhhKHucl1vIw@a2+B+bFe{vGVPbXvQfww-@| zyQDSepZ`!kI{*B7`RM%f%jF|P`g4B&3jE`Qd4jF67e7F^_fJ$vy6#mY={7dvUVPif zwO@CeBk5Y&=A)*-`r{?sj)s3+KJw~?^=SBhiIM5~!_jbS|9AzMDt~oU|3)?wU;OAF z>%Z}9$X#e_a+FI~S3Uh|4esAv5BCM-(ouFeUwlvB&_DV$4A|@0FMaXD`#QE&UwrOc z`mg&Ma^K7*?TfGbrapVQBZjZ6F#PpO{u|j6e(`PJz|QfDACDt_Hke12*!Nnq#Nj^M z)*~8J`Kx1z>$Um)HLLA9w$NWZQm^f^(>|hU`L#yVHT`S9hOS)QzvgSmeW-u+*O2?5 ztOyr9-(7{xpd64ruX=b7a6-Ywx4pm5K?ac+E`8N)UrEg3YggM9eU4Rl&HA>FxXF_A z1nFx!X)UuJf9<+@xk5HCntU$P0TU5T<5xX|dkO!1?P}YjpwWwlJ)wJ{6k#(6Y@!Lxbr@8v>|9-$QE+@5qjZ3~P@a942DnBZWkmdo-?n?1>;k z+X$#nEBGECq0d|6j1q56p(*ZMpk{pUv`pMb1EUcgQ-gTvh|l6+!`PU|CRn_IfgwjS zBh>>mI*%Rc-rj%D(w06!7{84s@HYBP8Q*T+_|>JM6q=r zz?wz04!t(p6eB}GiL#d|@|@53_f;F5ZDEiiRB_dbrbyCzrvc~zI61ymSjG`fK+TMz z4q6I-_K&d1Bklpu8o(xWz~(YzkXX#dz`yurw&F}yFTUw!)%j=LSes$!(`om18Vv4t z-)==xbyN&rN3oZS8caYd&VA>nJ>&2_^qgTe(}l=}_zs!Ez@^AYAKj33Yxr=&L8s?F zov_6wk+e|6z;kK!ZMqz{Kc8YVQ(TC4G2FzQ;%Z+WHIFI}WFQ~0DCHe*Wi$OK-I2Y~ z0u*Ga{Ng7SYcZrwSO8)Sy3;4?l%V5o7rD|^`(E9{S;|*6oDfnvlI$a{Dbq!tjNxL$ zFR%?Jq9Kmtiy>9SD@IJ@Mr>`?`TB&`VfiINa zIUtT*L41L448z+JImZVJ3Qa_CL2~p{33q-%fb*77gY1wp< zE4Go6)uxNqvtY7APw=3Y6*k#)k;$Q1C6s{eCLNdLy7aB2v+1HrXVXO{-{T~qM*^EJ zBItR1sxa9mflU`x{<6Vk(%E#eE`5=7ykxPuMtmx(D@$)9oecr&N{>nJY>>W(bT(a7 z`Pp=l$<0$Glocl36jMc6ipoRjD&`ETrj|LbC@Dv zJ{^ArdE(h@F=T5p|`onpY(xTm%)ppZ}9nMMOUYp+SfDg9As z$nwfKQy1xwsW$edY$9`)2_kOOaH`6lxtil(EdUHtJgEZkgxvv{Luj91DgoT-03x!)?AD_s8v3OZ@numM z+Pm2M-R1PKbmR~7jou7Kmm1Bk9dz~#J*tZF)8lgW;)dxL^r9>R+~w_;xW$-#ju1iG z%ZmSGuk7~s>aXAk;r`h)s$ZFJP0Gr`Ib^3KK1{63A-|lkOZE=GtWv>;$_iq9sxN2| zJelz_WNe0X?MY^|MmTUePAnO5;12QG?B?N5+l~kP=>Whv{)YT*QgMiXGZ9Oh>dOZ$ zz!b|N8G@%A?%|m7Ia|jpCwn+^AYD!ZM}}}&WIsEX1$Ml18S1+`%N*LaLzngl##l~t z+FnXH0JwFxDOg3x;o*qTXXhqXp~(B zLoqOEaca;TEr%2+EWC`^2Ea+o;{__<99_L0@{S$_P%sKRI8I@S0}^(QhVTsa%y|=I zznog~0_F|1LrRh1u0#)r%7PbZO zPur6J%PO1<-}!KxtG}t z0Z82of&|ux7**F9d+)l%OLx8NSH!L_)671)*5z5?TltUzSB}--+ zJgC~@?%t_!>{I1Isy@WnC{&2NY$r*$T&*IUwQClJP3%RB2$NP)A|`pw5F@rQ#F#lm zO~>H~0NpYJ3@@kb`~&JIE=;gpt7}sHP{0CTEM;z zusb{(xpNgUR6rAf?t@PtjDWsgmCS_eBhWK{*nvK5{dJ%ZM4+z+=)(X#vj%7(C3OzS zWY&?8LRh&3SW-pWy#W#yb)8szoWoLG41VLdnla*(a&-%wHRzem1{a1I*rsL! zCMpj3wxZhPCfIZyaSgUVlw8euEDV!+4A_}V4hCAgO}ap7bV!lF%k5YvcVnql*JlN2|U!LUiL2H6C4 zU#F~vqK_Km3WAgekR+Cz45ITTTVOP)u$FO6W|ObZm3h--WbXz2> zW(^Qq-77@~3|^M$%Vo~Yw@{Yp*G2}}!~3u7PXrlz>q0!L297UJlB(OYo*U;?OG5PmcX z*6>poRjAhAc-6Lsx)&?JBI>?e2kfOafN7en12&Pc!0+_*4V@-yfMJG-BNhSsN*ypP zGk*j}49Y%-qc}CD{GDk4Q`;SF_NB3;lnVf|`^Zoflh~Cq!$~x0TZ8WKm@fO>!b%wX z9X7U+-|bup!SC3Da)saR;WQe*TV4s5`Q84NaIN1R;v8kacb&+R6^{Q|dkHh0EX&{o23 zPldR{b$$zrh9iCph5OkmW~=irrDg@BF3+lv0;PEHKvsa{aM)8JnQ*<|g4J?+Nc72L zl=Ba^t9(2|CDWlexa$9Dmd>0lmovJCGKvDCcnbR-~3%*0iAe8`+6o_ZimLU@o7G+ZK;1)tA{Fhc;wsI5ahmDbe-;`fbY3qe! zi_g>}ej?dMWW*^4GIMMQi#*W##YYVrCH>Bn*oY+z9kCGbTE`+A@|B?qA>PXpBia}b zAMMK*Wv_2I28>Dsu_Zwr5fd@VAdT1~ipF+$iEa-hX4?d#hqL==Ut&m{Asr+JjEIsU zbqgsXhC|oCx;MXS4MmFs(EcU3iBTZvrNs8jU6q|UJ$r0TxYt5Mo@^pqcKy!+gWh{7frdBZ3bdl_Ogq1T%VVEEz6iWd`&%NX+T#AIVholSzRSIyC|7g#{(7?w#|Ar3?P|VogOhK zqahomAq$M#I!tSZ4b&Z8jfZ^srrbas$)ba0e1=ci!y>T+ETU@Vx2WSKw{34sV}_Tm z^1=AuK;G8MH-7~{_ z3LMRWgc)!&_rkIL&pbZ{-zSvAh96X6kZJRABOyyzWam0~@iYEr!hkJ-LK3K%HQ&z` zt-QGv+GZl6L7O_v=f(|pEaHSQwyz6gv&^|r(ky!_p`=--p9)X275&YwBNH-DQ_}1j zN~5roCDgMe;?E6g!kb)7*`Cq1l8AH#sryYHn^_#%sN;+%&s7GVi?;8B1aQWN{Tj}2 z@4zxZ4f1qqt`V4UW+>hOXLC4)z?Uu)e6fCCgRiFJYn$V1tK)0o_Z46I77DtdMPJy8 z&YW=Bq0#m=__|?&ui-SlhK?^T6MRk67?fGzOQ%Q*Uqj(b?6?7qLE<~`$;}C8x=e5e zd9A^j9p^WT{%16{_y>Wr9W|VtH+9;al-Vujq_oqXOXNXlaTRRt##cpY+IM_0lm-`E zvYy%yt7|YfE+>qn`W%DUGl)G;j7BBKB735`^LA_=)Qh0E zg(?25)0@tLuITMT{5dp-+@1-HTY{g{zi_!;P@NAR`_F{bVU=@ zq7rZu6z*b_%l_UzF!n`@5JHC~CK2YyHI(ZC4tqX`hQ~#6jmyS-N)A)MU9OeXwje%T zpssa%3Rf;nG3R;|@xe6po^A9@02dbdQGV-NaiwDEIz*K8;KIXmg$thyOpS<|#bn9| z!hp1O7i#jXV)ip7Du&*px%l(NUI9_m`l2Iuk4WSlqrD}LBeh0Lj``Co9>>s#N9dJi z6LQp~<7+vabRGG7oj&(CeO~rj(dT49%Gq~9oR$^JIN>G$FX{h=UOOVk)`Ke3}OaCDW-BJ|NTP=)Fg=XKJytz430=RW;2|8c8Um1bZe#7pa@{>rhTrO6U^P-4!G zkF?moEEZ8Xn5=XJqargoju2A-ttk42ixJIGQ4CmQ2h4DOgxgHCAt}~EN8QQPjK5}e z)X7a*#`<#c(K8)IO4(uZG#K|nSiKWp*-RNlp@ZcZn%HcNqF}Q~7?_pbLx7Y_RXD>1 zf=P?zaD_z$4Z?B-LSa#ioh9c-DLr_EsRcC9mx5ADU6Hkg~lF!Y&6PMz-M<>4eeC`Mb<3(oqDZ=8ab+8H*A&Pl@2Zz$?e1_ zq)*%N-NcM&EVn9=je(xH%@a2%knIq|QK^VLI~ttIW5}G0Ix-u~cTp7-Y32j6doZjbTQ<_4f<%Y$CW&10*wf?J` zkZ_K&q;^7H`^X;N0TG4F!Md~Md0sd;R+;^f-2p<`Z~FFb2O zc^FSe7E9E8q4Exc1%`qxhHg&_W{w?W5sSS@M-3_#a@9FiZ4yi$Hp57r)>{blQ8PfS zotZR^HLKmK<_I5w8al)ih_w2@z5sF*j4Jhx_>uv(RPM~_*cIf`x2cM;G!=8#W$3h^G z!%*4}ea|6j?X*+pH6oF;tRKo}1TbRnnqaiy+|9e{@U3%i;-(&V?HXd>FCc)htGd15~2#Ni&EpHgH3325s zw2jBeK$D!9XbEduru3bv$6@la?8}9Yrn)a0j#=PUU{{tyE9l8mzkCy5!I{>@I%%uw0HNvX0JG7W4sbM~ zWpcFJVTM)b+Vpd3RP3n2>a{$7Q?J{K&a7U`(KYpYM!Uldx>gO1E{w(SB2opNxI&>L z8Jz$(z;UJGMh9jsKs@4qW4zmEcSMcxs~#dOho4bm8xY!ytFjdoIQnY%v11DjgbPyw zTGoXI2msNrG!RIhH3Na%s5NBA8@>Xrq>n~its%*VwJ{;duM=H{r;1gkK7>MCwWG0G z5zu>E5p0Y`yxTSC8rl=}3eYJErG&2Hs5n;EF>AS^kp61}GK9fm!9lAysafNs4T*%K z18UIeQ-H4o-5;f~Lr1AWr>$@<^9@Ew3o)NRDLqA#tHpaJ7<;0aQ~+*drc%nq(eJY% zkAa*L<=R<@f8FH(%h}LkYDRcUU}&Xls+;cX1W!yw#d0cdXCKtWFvmzp2GgE6Ps*8T z6&o*h`4ny`0pj@kw$8Hiad4?jrx}!;x4FO;K5F9Y>Q0<<%%-~r-4k3U6I?RGYobIy z>V4&syp2A;OM&TdPGPU#bR4Ko?SACGIH>bZoY34rSJLTH9 z7y;rKR*K|6@=rcksQQM^EB&z#7N}#Ehhfz=T+j25pR+to<@wR)l!tcCvuQ44cpV1a z&On}JSCiOP)*iJ~>(S@Xtk?ch$pRIKpj4ru5Ojk#6m(SElY>s{6vR z<^P|(_W`u4s_%Ty-uv8h&b|Ad+>@IGA_-)lBSInx2?!(-gzPJj#DGNFs0ooV6I{>YcsJ_=$J8{ADX2EQ#`1EgME8cR+OnnPr*R8p#+Ul&VlMl{^c@KKr7lFZ(*cC+3=__ z0-~H=bSf@^P>!a-6t-d?tZ{@-G|(Kl-;8%8JD3ANccSn}JAZ+a)nn#hGAG%5%k+?e z$$jT<;Ld{JuzHwUF&O5{QAG#`D&qs&cO3R(Xot1WR|#A;7`%1phWQgxWHBIQ%K$`2 ztqg%EHa`cdHz115&!BP%KydUlD9|6^9z_9%H7{)4w|m=e@+g}s=1=_8R4jwrbZn2# z1(HcVgYiy^0(T)2D@{Bvf2Y)vx0p@RBW9%7;weHp1^_=j2@$Xpo+1_WwD2q&ALE6< zZzL@v8O)f7*$#*o>5CZ@`J~^VG~_@I!L&^oHOzu+2SZUOGgygj5vo*Phu*gV1@l4T zlL}Y+M4w;m>SPdbp*PKrUbHd#suxMe;Il&_;NVN9nD}u+PjDEk)fKcVGlES6*;IcO z4RX|x_M3T|+)NjJ)R^13i`r1&Db9(aQAhC|4?Aj(n5OJ_YnvoOjREH)b2R##b_dJf zi|eH^U;~s+h(}9IWT)D0>M#^5Bve)lk8B%gFiwgC;#_6hRo2N)WhMPo;^aBSfWO3i zWKS7PU(>b0q|bOPM%Jsn(uMz;A<5g=(i(V8W%I<+HT8agi2m5;9&CW^dBzJtvzCYb zEL)4u#5N8azapBNY~RTJpy@1YT77+de~(881_KVi>SqHEzv^pqkU`hX`sUY={R6{I zYqn(@aM$UUEw>q&;qjNS+GL&vmFS5JC(IKBc}4eBdxKy` z#c5OHTFMe?0hQ(sQMemD!1Q2SHTA8{Nz5P`fmFt7=LH03Xz`jZCnV7Fp6)87@Tq(P zbgHd+HBVFp?F`n6nAr3{!M*`F*-hD6Dz`)UfM?1m5O%ah3XXL?O}`c6horM?SRC1z z+#WQ;Y0?ZRw_SS8FbBcFerNFRDF8D?o1E`8l{JGd(Dpg(BJG#pGAO_miU-nT62vlckup zGOdgfgvUQRL97@OgaRcO5Jbz)zy+_GxB4h3Ax$5mh}a9Gu?I*wxtbPCTyUB~6l4p) zq{4r9Hzdk$4VzxoA+2jIG}LW@Q%n5wn$%wq5o@8iHN4-2>PALfTcvRNb^B{|32&1- zCx{0-&|Rn#V?eMTKrJzaCOJKO%I1ReHJfl})i$WGfLuqR>@5vOA%Ra6+AU!C8DNqY+#A5UhNvtu(MefLGrQ zU-zDI*s(3#V9;+!?y{_9%qo5Pl~HeAjSADYiN#?6avccf*LvB1K(s3zm`RqEctmBHBo4MHE6bGLDOw3iDN zUdKZ%9W%Nlmjk&I8c|JQWd(F9elc!s#faH3uQkip5a!j_xV6{#$GZ-xJNg}!tZKhW zrp~mMwv+rXH63$=J{l9A??1m8@0)uoFFk6Z#prM&>!g?n>R{Wi3%`8%tx-JdoLcbB zznaXI6OH@Jfw(5aYVyH1YVada{ee*fuL5!r(yigV--u{P8zYoet?PIwOPdz*M@Vf0 zA5U8*(c*+gw2Lje9pj4o-IE@I4!xg;tM*>neK--ae6M)Fc>X9pPrdk|skq0iztBme zR}(*ZBsvKGdoG%vloAnDMYIV{K4&(K1b4y1Ee7EMY@H z3NU3e{KGT_*&$gXOOw##omrZ9&HN-X?8-rp7l;>Grqk*u)ul&R9l)i`EmVsG;VT0H z4rh}S0?O%iptKwmf}OgSR)%P{Dk$s4qy;FpEOA0W*;EILg2KTHal75NW95=6D7GA1 zfU?CD)`=LPXVrnCFhM}+01EDZwiD}YLbehskJTXEpI^4eym6>m8T~%s%e8ArGfbnd z?+9fDax%~a7WBt?;E>1wNFZCA#Tw}=Li-iJ7rt zywfo8h~1`&`^%){!`loZFuK6SR+#Z$E;_W|z^V~A2z^DDnM#1^mGPA0hjp|VzKe?+ zaDLX=9xbCQ*h8cZhC5h|b$3>aC{D)YAY;-dF2Jx6`<CN)z!n5-!Qh&wKK0Bq_de}uXPtHS+3VMD*zokHKkuA#Hg4Rs>D+TSZ{D)yyz|aK{~6D? z;DQS;yy&8>Teod{<})w8c>DHCE_v3oF1_^H%P!loBhTmNp8f30FTdi7E3e$SbJs2% zjLB&#pg-^Mx5wY+QT|R)R{hIB=WYI`OZdyua9;P9c!E6QZxa6Me&OGvm3MjniTs`6 zJN;c2uEqVr>vGCx`K$h~;O|QQ3ck27S9XEGQxX*p-I>Xqy0Fsug_Fyek19(*O-GFBUeccI3&KZE`>kh{72i z_9vW0Q= z-)4tn$;Q#`zbOYMNH#Pp` zZ9CkUXOAIE5`X-*9a@sm+)2&-e$kw_{=3C3MZZ;P{R6cAP~tJ85}OD?w)S3)T2xgo z@bUE?!sE{{m>CS|oD%FvyoP2!KBP4FSk*F4|2B>itqS#QQAp&I#hQIF9C!bGe;?_s)*5Z~o|KScJr?Rn`+;JaH6Zn&vXjW){$n#JZNb;*O z5SIA-XOGCv)os(9p?F1sS&W%C;4`L2+aqPg4+CIK1E61T*cNR=Dr8_Ae>F{)twdCU z8QBRVhau0RPRlZ=u+W;Yn3{El?p)mFX0GY@&o%J<1dd$dHwh0Do3o%59Jw91i{v#i zd?3m(zb?QLz!n_2k|7G+lN8V-!&JE9nt_`|32FY7V4OQWWS=-G&w-1@u~ZWQfvQCX zi7*1S_@!Is4*OkLWXj;pTR3|K6h1i>nr{xV!ZA66&gKZadOweXcrlZMMLC{R>vl?G zhQjF=K2}0igD%sB=9OyQvJjl<0Fso|y?->Syy*?RTs}Bq4bldNwMTJAkY>feAWlhr z>RSS)`03$|eOXt_gl{HGdczKu1a^WH8~N+$17pgk6SPPvo2?80J=EGzOML(-(1Qk; z?zga-c@fkJ8IC%BnHH$v#1MiMEK$hfj-gPYm~w9-??LWDtfR7(tC`wP|FajA3Bq4(V1Cx@O&k2e(IH-xVe@SCNFc1T}^d znr`DWN;bk;1x5FRIZB}n9iEHqHbB`eF=*NVCt1%%K|B&DSFhSo$ju%YgFO)@%4NMn z6O0wLCL*o2`h*Qmv?-@nTjB)Z6oX5o+lW)z*{_~TgW~~KP0)on7>B_=B?++AJ&WK7 z5KpS7=KUe>m3j(=T6l%c?MVwM^d+SC;Fqwj){JmkqREa601`>5bF;u95}Tzakr*iS zmx|tzc}g%b@~+VXaTr$2zMKps zBjaa-F+PY8sf}OO7Tp<1YdD=)p>7Sb5i1u#s>Njl6N1Bu6$A&>a8Z1HM!8;c^+1d2 zRHE;NQ7bYwYN1Gs<0LpNWy>TrdY}NhgC!~x)UFko)ipHRJ9^r)ZkE3 z8tsWD^p%2Pp*_I}*-aP~;OHpHPI^kiqxS_5)fNN8mN`|7cSL;9jKAEie@r(XD=+3SHGshvSXzDvLd2i!f_ zT4qU&Jt?r0zPe$83&Sr&KPi|SU1IBwcnwzPcfaEZE6RujO9#M8^YVtwCo6la%DVMs z|L}Io6sS@8EI$9#3&F>L|$}8i?bYLFUkc>5}FkTgV0Qt3d}(8lKxRAYL+&$ zpg#UTKq2o8wHLOh*@FX6CcOzhV#8m{1F zXyIjGf*JKrmXc z2EjbNf;GL+TtM*3MG(xIcX)$iB+Lf#VRcCm5Un&o`e{vzrvO4Jcj80h^9Y6}bk1Uw z1LzFfuoD5_v{bD>WLqlzL!tiIqL#|~arO9o$(r!P!JT3>Odic7Bzcybad35NP6gaN zK6ud(Vhh;|y%(}8)!D3dL3PM3p}wdvS0a&uXNr-M!5SzN(vT%qkcI@`IBD=yQ;{%M z0aIF!rL8f_#Mc(E%CGRQmUAm`FM`!78iojff$W)DWb?F?H6^lFE`n^u*Z6RltdT#+T6R5MaGN5)tz8v^;8M^K9;ywaJ%Zog*9^>U7~!*6G4Um4zxyrX0Nr=cHj3CQy`5C-ltZ$gm1CDHiS7 zs0guX05c}Zj|rS&k{`n%w{SBl(-ErUX(>O-At&VCXch5TsAYahC7@?!{Z9oDK{ zMtCse_dmtFB>n}b z#k*2Pg|tWR*8mIzA{`ptC+Wr%?6d{a3;s3fRY?CNWu@Qjz4xXqNEp3CA}~QwFs*SAMmqMoq;Qq&98`SVYyzE+bFD~&>HoX z?FGpdOLAG0vrKGg68!NeMsme!lBbefp-G*GRW?a;YBmgsnuJB{MGNpzj=tFCd2g>i^eKdot}yco)J>&Q*}297WWYY2M4vangH)%=m;wYu11#JpA)TT~n> z5hjjZiF5I=5))ih68b0TDwTMcIGqw5hW?r1UGNs+9V7P7aQqceG>C)z8V){$R6~0_ zl{gq3e5T#CgD*G)kBNiOd1Y3sz`Y0ttDQ%L1#tjCCI%prk?Vrz|1n~5LFQ3Y8*O8^ zltKtaSZR=$`C(6cNg(?5%=2}=WWOP^ilAVC=4t_?yeP}cBBxcSzSIM4F3OVpRd8wu zagg~XRF-wCjwfF?+d_UNIRE{`&;=c`MrkQ*8!+H(N0k9N1en7PwRQ&mC; zYEYwi6mkGyt*YR6S0gyPFckuN6sX-hE`sC2_wfzlUTD@^s=5* zXydY=(4&27S>eRu6^p3`uRQ(#FkUshi{Uk8VcqiV;>I)K7p{LIVaEzpW-cX-VTHQu zWCN?XQSarjNLH+)RD^)kv412fXQ`)onOY?v#DcNQh`{S6BRmU3BfrFU3PB_iqee_O z6-+6ZoPkY_ibZ)}5;V#$hl?$6ND?@_7noQOrgvx`y9p|n<^|skuOnUdmE=+eM`{R$ zhJ_W?i-95*_BnHv9mMFiTcq#tbGBcs&uZKFA8OpD1t8}VC{B}HbAkG${NwvF}5`QbvA( zih`hT!nXqj^{IIkTGZi!!lP(`?=CYQg=-cvM$NX4=d%;Tj7vc7ith|^7pwN@$ki0@c(7zE;!9`7;~l#b%8Zx}i!$S4rh`@l ztER-U?*BB2rh}=GoY|0K^cW=k6}UxE2NNj55Hz22Vs~2TPS72P#Y9_P(~Y9jWnAMr z^yOx=V9ktu|wey?UWP^c#{dp6n3(+Ar;xVw4Bn>q@35c$cp35M06S^UPC z-44I~G9^2oHG~9-%d#*hYd5xbP5|)+m+3%rE~e2*K;(qu+SGWwrPuLBJ-8yXaUItP%+T_ z!ZR?#FQ)tgW<6)m$&^&28(z38@&2(#0t9PrtEdSqH8(IdC-VhkoU0&pQzMfCrXzr4 z;Zuff;;BRr1;~1~dcf`}R-zfO**wvb^sJVoV;!p2U^}$dtn_p_JH;G#?16^$cG3{P zsDaJnXlN;Ei(pt`rq^Kh8l+Q~Qohsbe(_aY`3ll7>tt5cYE%jem@Lj}hzRxOvJl+f zi3Arm2S7S$6Kf!zJ|2kut9}9WjDy=VaD`c6wc#dB8?TL8z~!zBEx_UYV%)$_${Li5fHbsC;w|__?aRwG%jyyjp=@t_HZ-df2t}2B zq^Ia}a-YudOMJo~8svMPm{IAZ%KTZt9??RYl+D_HsfXYEc?;^z zAJWqm;c4~euE^sZBqkbX(#M>Gha_Eo>0L))W@)VTcJ#Qd3P|WcXny**&|LgNer)8` zfBER=O&&D#d?gS39P-ulO-PYc(64R$+G4-f^DE;C)qa6*d;1&dTI^Uwb-eS_M;bY9 z`;q939)&}+^lnU_6GudFm$PfcE=YG@p?-&mjr-puxHNTs?CTb)!8lm&7>=#-tMy*d zNWUB{h~BV<22f=aUq6?Q^cB$&(o;B(SU%8_OrlAjVtRDH#&?_ZR89_KazdY^cx88L zIVLPl1m}?gGSE-OUix}gtfGX=Suwg?W_ z|Iv&lqy<7ai?!1z#MtN+Oe-ja7S&VhFv5yu4SD~8dN)jFeWgAAXqDD>*7J0{uY?UP z*4J3NV%iv<7JF(@*)T3UK=TK+S4DTN8}oGs*q6uyvKUw%%6JFQi6OHnnaT&+P-7pA z)-Zjel5jlYH6)(NQZLTlm_KR{M_MJZ2W5OSS_xnj57;Wij%$DbJ%n8cEMdQ>1Liah zII;!w#Bfwb%OJ-jMGXCfAwUndKvN%+z{;w<=((GmcJRqBN)MtHlWI_b&mJwvK+hOD zC`2kIw5hraYJzIQNm5Q%sz-FC&WNt)j}~Ce2?=S*XRFAkg(N1TkYVzpE=b(V1v=Hf z^Bl@aE-n61#Csyi%p+QoOfDW7=PHq<);IEb7}j3vy|NE!n;n!z>DwZ2#NF%~GiyP- ztk*LWPG!JGDXHWlcS(g^%idjH{ftQjwT7gUW8Ec{f~a|r=>i-ct*nYIkXc}Vkq;%N z-am!3aJkb$ZZfI@1)E8rv{=Raf&`4Sm}evsLWrk`4j>t@sKxiKe3N9XLIO}9dI5VC z;oizQSgv@^&J}Rb($?o0=#NCRw%wYgV1EGnF(|x}C@Xaax;8bi``CCjA6+SZ6svme z_hTd0q&f27S+KufwgZiJC}f&UaIS>5eo0izje^&xJf_OKQunVKz}+4GAph;^GErQ;4T{K+r;?B^TlH{z-p;xfd<9Vi|oCM-2q3bvkB_27PjHR7SIKxn*i z5*C|mf~em@P{K((H%^jaT~Ls0h@{F%vLS}=7dFK31KAMv!DtN?UYdrNRD-=(44fp# zuoBr2$wC`qq*mDwEzQ|%FrpA^BU10 zwB@ocaz^V^I7=JddNtoEZ8W>(^k6}=kR(Le%*i}0i$uMW+9fZvwm?{3XrrP^H$`SqY=5_Pdp@aR! z+Qax#dxCYKT}@&o8YT;xzM7`iM?*t2!nsc)1!W7Fjo^I*N`Jdy*fzHyMk*bn z5q7m``WZ25oqdc$zJrXHkcwu6lw{2{m`9A8e(;r2($o#~lUdAT)<9a7G;?{`KH#gzh`gLQUE+#`&BWVkhyS`y2=lVw3 zsEoB;-|)PmZ*;d{&N_VG^-c8yyq5mKP~Ygm0)1oouk?JVZ>p8x@bqs+D_JmSonjaZ z(ZFaMdoZ>lqr#d(X|auI6uSrqdBg3UfjLi$0jQWzBC0S5mJPrf8a5(AamQ=XLe-+G zepyr^%jlS+oj$Bkc$CVc_^g^pKL|l{I3^QJn$WH|jVz0Cl)s4(NjOJSopwGS_nD6+ zI~YU+oOwC|AN|JR=NMDk_FL$g{aNzu;=AJo@h5zW4PC4d*b69fT4aKxZ6KKZio}$^ zYGMuMKfmQ@%D?^YBTUw^ zV8HaoV~zC-i)%}vKhimXxC;OP;5+nhJw0Y8u4de}l;C$O%eyVZnYpwe>P8cBNoy`w z30-DwZ1D#daCzU`KL=K~(MB_umvEQ;>hWu@{aVeh7uqk{y@<|Oy?4ps$?P0BV{LLQ z0M=@_FjfE=8W+ezAUUh9fZpM?kj(<#a1-FYmxkoT#G`*vEO>9bTmDjqSJP*Qce;dE zkUPAB{JJs7j|9l`s4wZt7-kwXOdr#=kealuoEO4J-%_(MJ>)eTEatX2YeX;jUibCI z+|j;Gj5(^;W~HcH&6|{u#T2fQIa{8o0O~P96YbzA4_`6lENGeXjKYUfpfMj>ig5p^ z9p2V@u9RP+qWoG1fnMqiH)5I>zG%p;VYQk$EkLDn3vN17{SRHF)p@1j&@@=Td-|Q^ zLdE<%zE&wYbfQrooeT;46oiZMdVOZSK}$w8M>$wgd}fmw%%i zbc!|TcfV&i=<*Typr6SvCsGZ%548sURbzvG7jAix>-*A>h=krF0nGfz>MMQUJ(dd$ z4+L-??T>_~ve5n{Y@45fP|3fEu%g0v*}9oV94AU4v+zG;P8=&4%U|)Xv3346>=nd7 zv-bwq#?ir7=JAbr`-TVS6rTQY<2EKkjOpL-MM?mB0TU<*9@=I;|80!p&W#A(Z+!F! z{vGH>{2o##B$~NFsCd1yWK$y=@Y~Ey-7zQhq@R$A5-m;U4`KI6Lw)8KkAxk0%S1pM6d~NCi3}zu>@=)=SytrL$GPf`cQ^ts*L>Tl)JvQb6lkCtUB`Ulmt-?tEfaw$ni_(oVw zLr312Klb?JQuPm0GuD7lU3fwJt{dBnM#<^*I4-%-|3&Y*0)*5K|a@HN4~0u?%`Xn@uEH2ex(W@y4NaX zJcxXmqidKa58i(3T;p2Q&lm6fyomadwk=(M)$hL4u)A;g-F$3!kA=IY-Q97QeYaIN zzZUjk%#UUR(m=@3*gHV)lRVQB3~lwEXCilA`D(H-_Xx5zfiE&FgvTL1Qpg-YsX~lR zBgUqP(O23~KdP{KqxP6c?ob!)ya@pt(U&Oy7Bhfciy+iRSx!5}DPT)!b}P%hC%V-H zfJ_1vKRN&>q?AkW-$Z)mVxGzhOj-E23YC(#T6h*@=|+e!F0?Z_;vd~`RrE#gCmZP} zTgk-X_?9sews}uXf)emVKB_%yOwogjt^4Nwf*=V1ksfjhQZ|1Z9Wce{Kn>8K0B;-j<%^8p>**~=6 zK=}fS#jG4;3G>aj-6TTOkvs!i97YetJ1_!iqxeYEG7S7G)TTN!z}IH_Ii>;?&@j&( zl3QCEFNVI`-S5JTUELReIg#y z;!V~_e=k}X`%>&alyo?SZ%p^bATA{DK>bKV`53PsN5309d|7-~n%NBgIyx z2GQnMG`79i)UWU^W&->m_ke&Xwj!263W7&67hQ`Drj_i*a06oE!3cZkRQ?BlDHnne zsqwJ^n`?Q>KjMwPW~F*e<}p&$=@(%FU%X4YST~ug>GT5KeDp2jbuBCFI`Zz~BfJTM zJbmH-Jp7)bt^$C!w4?R{We>?m`H_Z{xdw<_QCSw5k7Lv*7`@}o`FZmRVfB_(eJm9UtfJ9HXnJ@G=~(2%W_+QAN@$aL1;hvtj?AE% zMk$fMS2A7kREpvpkEh}(s}{%ED5keTH(_2Y&a=uEZCTwdT2@Tyc*{Ihpz&yTNmo|e zT^uc;WjY>yX(HfAvTO?GR}dncz{QEeBtk|%4f~=#aG~%RY+=jRqMgp67B-Tgvh>c; zYH{Wm)>7tF2(<`DORGg`3JfAfU7*^soh;|dK1)Gl@wJSlrCx}F$gsUzScSWl_*7U1 z@%)J(Dx6)r^wgY~stz^c@lnKqD|#1PU_Az+3h7Y|weyYf#uMv-trj+&Q$NH#fw zP6lluFmRN$=?yxAbB$UO=^|U_-)_}pV4>cBX2V)$_-8hhY#C+d6U2rn zMvsz*4H3m6@m8{HwK8UTvmN^DAV&IJAox*H)_%YXlKod2lbv!?OG zbfDqFm73*wEpSqI<(rB&^c+FLrmS^3Fd)sTX~dQ^qMc9{685k=l0PkkS4+an67~d* z$TS1|kwAvTL98+%*Z9+_;BQlz^!z6Rpz%6K)r=?arX2S(Lwnw$%Vy(;J zUbH@4+d5B6%~-bHTcq2CW^7B783EY|#Q|9u)vUFZI?X)yg=UoI0~X&f57rl|#ZZMB zI7SuDjKeBQW(-x}lUqs^QiugvxwZ?5hLZih?gsN{0m?Fk6CNSH!vj~flZT0h+)if0 zu?!2@$)d1=?}D9dXfq#|_>On6lZnSG(PnE}1==W+Ip*9)qi`R3b(puO;5DL1P1h~B zRJaLP%s9T)RBP_|1H?hFWckgPm2#d7Ir<&aNT(ZTq1 z&!K3GD#R>{SQykV#41}X^b5lk^F;7X@9Uk-&BJzsH&HjKprM$$k#{nQ;`~%SV^(skQZHwkxqHFg0)*@(VQbYZ*?Da?GSh5+AMrn1v_skvfg`TgK@M z1!cZVlw$l0g8_N$qv%w&P4_m^e!oTcHr{@}UiaCMv@+e($%53L2PlGlSh0MzCs)4>pR(`PVFVh`;y6dXoMz>(yma3qBG6>ze{ z)8L>c22>n5#ZPaDiHer0^>But>-U`p@i4~?Ji4)DSm=sPopagkV#K|JN!D;!)j&V+ z>-O9F?K!wnz9W-djY)=TN;-j{OX5pQ;%NIX(bbgygrekb@*5CHoRhu+rfkL^F4tI_ z@bjIloLyXqFMHK!?9?GP9;rx7nSjga3#y74G!cyS(b%{5c5F4<#FWLGqrKZ3L}sgP z)QXO*c^V+t>WWEY@)!#y;*(6fxx^Mt+hb_al4C=hf(&jCJRT&igKn>$t{1vvpfdF0 z=5mb$3-H75G7lnU7a8>S)GVCH|Ul6VM(G%KfC~qs}`WqU~^V&sJCa2 zc4nwif|?0|$V!$Co3!?AZjh^*c3rR`0}8=rT(Z7EiiOolL@7E!%E{>%#b@2sS?IwbnWUlSKD4GJWFb2?y5|#0Q1_Fgiyp*zLnK}S;WML9ua-|t`}X>J$m!UQBIw;XWVFtZD<_AHSQ0(_AoP)MyywqA zbK7Yjlm_NFv*ZHM8vL8^c91h(E21EXHNQ8?U<0{`VRQgo#U`#|TPSH+nHp$eISgPR z9;p_^or-*9Ku}ZQaipwNG`DV%u-%%Pl!1 z=hj%p#@h2^Y2_7tonRc_2V2`>H!`S&op9>H&-0Y0M6g6e23Poh(y}oIAcLJT!JD>( zJYs#Y;U}G5u4-$VZ1ag3H#KDhqUb~=OdP&7Zj&*zJfAAQ87D>&?Klevz0Lv>Va@_# z24?|0XV8tYg<%jRTT*zUVSLn(oZ9V%Wy+Buyj)NN!rA<0ma|NIbqf}UhJq4708|X< zKon*g1bRkZv+8vyV{=Ay;9yC*g))KXgG?~|h$Nqg3>YF{C<8X=`Z^C=NxFi;E`0hU5iBoC6Wm`_~1md7g;{Uody85T-5sw zf+zS{thJgdD&>Zuw?YFDEIJc{vVedgat zP1n_I`CO6pU;XnSI|@lb^)50Vm@Ib@2e(OuTRS6Y8s}Pn0`E>XCO}`S-Rv+%1pz0b zb&ft3z2XW|E<5>+CVYuaw1o1*jAGiQiKu2fVJ%9*YlYmh?={vwpw>%wX4I7gov|2O z8Ytc>ZCMb9nsy6Z69xrr(6rOiSOX*Q>LZ6YByA3po<-Uw99FWT))laFfyKObc#pj$ zB^#y{g=>JAEgnx7uNfc>7V%usRwe?`TASVgXtC*DvP}vTRx{mtR4dJ9HD?s9n;lrF zQ2U-uu!R|I_h^xj71nJrcT$L|gFIe8!krAJp#>LB(MFKsra@i57`s*G6o!$?oMOV9 zC5{oevT&BTS44SPZIXm!_oL$O!3Y$&2>5mGsMdLHkeT(RPp3Sz33v$!o0^;lHvRR z#RNq1T4;Ct&}8@(<|aX|1`S_UbJrbic;wGN%PR+EJ4J{z%|2T^icNQn5`gE@X z_6E8^R#4KJzD!a}`o&RP(MNGkWL7xM(H$)An`%V7ia(|BYT2jwTcY4ivU_%qYKl;L zn}$_|i6O(eNL$Wam9|FfYS7GRTMJ?7tGq9{V5(8PQ#2o%ltcX7ESbX%&Pt*C#WgJt zy16%facLET$#)8q#^|yrjF*cy!Q|19`%Jl0UEI5anS<|w3!Gm&yPIfpi_Pez!@`7< zU)y|^Pg9RH)S2J{mw!vP4JJ{XuMi{@yDD)P_&Pn)CK6LG_DlnP-BwYCe(l=YICTzJ z95ae+`F1zBez-PEL`A)>y%X}!-}AzBVV%aqW5@OmGTk=VXEYU9;xuYB=YQkit=mMhVsH0p2$UgbPWWYPQ zLB8^egH8nGEz6k^eC3+pyRTe}Th7eESMEGJ^p)=#Oqs7-EAjloSKblZYFiLedwn6l zu}7HST-;E&LvL%ci{Ug|Qke$b)^@v%~QNRpS`8;-Ss0%!&Tq8zmZ#2xySh~j1a`N&pAWk)S z$al#@&fI(};fA5#2?;UXWv=sR!5l};29J1^` z235T~aB)AlmY5hudP2;KEW<*@@x$i-h20lynq9mfIIhBx;zQ@iDSmA+1*;8B9v5`- zAs&a#oS6)i-0(>T3vc0q2XqG)cwX#;4KC(lilm`~)pRxxUUua(g`YAmru5l*i(5z5 zGaEuAyWEj)ipZAK>@Z@97QMm5!`6`;uhV@IsymSJj7oQxzV(6{OQoU7WgrE4XaoNV z%F!ygb!%sGp?f_vG45V3>NCYB`5!?I%@Oyyn-&EK75BQ65MK^D_p#Q}k!uWUYN11( zGVEQjOj4ejdtI*CQcZ|{T$n7YI@-fG6MR!~w1=mYf^S91=YzHyZ->U)d@{R8S%^k;X8RIk#&zaa*GLQd!95_37Q{x*oZ2qs^KEiR~%#-diUjew_UKVBWS2r*g(I{>1iBg3tj5p z2_JounU8)by*Edkk1Od7?~ii3IiwARRqS?yLtfZ5HXkZL35Tp@9{OeS(1Tm|NOHl2 z8T`FAkxGBBm9!2gw-NT3HropF&>r@1NvkJAhTy0Md!fC=9kPLr`5I1;V_s;QXY z`v>Oa!5U>3&OkFQy=w{i6F)!$03hq@hhjxAmd`Z!JJWc6kIE0(cKK(PQJ z&0*f#JxGqx!GwK7aUpJ{4>F9&$ikn7wO6VoA~NqBPqn68s7!V^$hX{+8h*iM^Tp$- zB+B9oV^yMPNzDe*ytgON2J4Js?|v6JW&cjXl8LPl9Bo9D4O_!8Fkh?>v=LP}Y*02; zd|o4)ldfYO;<3ho-nZhci+IC6)`A4C5u!^ROIe$RiNxZNaXFiG%CzyCPNza&s$Ij- zl5Iz%*VU^)7N+IQlCy4Hjc4e?^BS$W-tD)|b#Bkvx6Q?O z5b_f-)@H;F`!~*2GTmu&F|InV(OFm}qkuSor@RHvtJve$mXN>5FTp>i@@f&-9DD9aS!O7O>RsM^DUPDZPH3`!U zaO;J(p(MfJ%^yTBGtUCZF`8cibrBPBPcu3h)EW-Wg*PQ z6c&Fl?B0SV*dydU6d=}PahA3YsGFvL)IC!?MI(`G0yR|h(6;)r21*hdBMT$k)tO!7 zOjxv+y#-y=%V>(RE^0u`xDr=vNP7Ji>}i4SVn2|E$fLWS89>Wk1y1#tZ`lbof=YP= zn%0i?Q3O=-?uF#|Q!;~LFOCX6{nrfej!Qm z+~Tj!LMVAE(B{;TIBeK#*PxzZWk?+b!c@{g#w^0fMXdD}Xb;J0DG;d*0mdFJA{_;m z54?qw=*Yf;#gvtVmz>4SM6;N*z-)>JNIyFPPsMI!jcSD|PhpiBg^lwR@WWFWZUs*v zAWNQ-Y0`0il2N73YGe7(q%z6o&LyKX47r8;q^8AB$;fC8`AK_GhC~3{I}_Ppp#lO= z*{w^{?GeZeZE6Gp6+&#@6#RZXe8m`H7*`q#+Q4`#^fqV%qE=lS9Hoy4(2))f$#JxU zm<@q}=uN>u(w?Rztbvk&^q4;3AseZ>mVxNbg>g}Jp)EKv!nK7PpxS$Agbsl>lO1YQ z=7SN6Wd?Q>2K=$LN9Z+?G*wUu#z`P>=?n~nL%HdUl8}ub+yde#y2T0Ebw&DLT9F0y zXk!JLKI0u^PQC2;89MmdEZRG0u7T=^kGRjbKPAPch1lf(V*gUd{CxEN&|-6q$X2Ea zUC|DBy02d&yMfV+yUD&}TaeJs(v-z+V4hkQZ@z&^wYe0Fy~`WiVC$Aq|=Z-XPHbkzu zj~E(K2_kj1)mQ9$D8FGJ`-b5{$(AI;)@g_!z%-8=bDcZ*avL6H*o&LKcwS423X<`+ zhu63V1izT=T-Ux0eneq}(ePc6U&7@Tl zZoWok%9)nTMO)*msKgKFcp<;2=mIY9`-0Zwoli9ZBirF;eBa;OK+EyYN zEvKWT`Yf#Lg1_D~%S>2qV{zBsHQhKr8zRxVfS*tc*kTL4GS}$+Eqc&Yur?S{$)KZ@ z$8(2!-{i5TfeqPUH|rDWLsB76=3j5TdVsuHnCCW&YmIgR z{n9R|(XnH6cq;88{mV=%q%P>f3)~2$rFPLVIz#R9B22K_Mu&RE8kGnhZSKL(-$S;izb7< zKn-fG-J__~Z;v$#$d^4PE{;ERBEQ|Jo`N|l(3u$w|(a70Vc7qRP$;xMNdf-&ap7jP-`1?lcQvs$4q zgjLrU`sMmUzkR{<{`I&$;*~`IwHO6nyitTE+(H)i{tX_ z54){|STg;M_)9uxJRT94(b56*I*2u;;8vGjeiznLP8M(qdotGLegu8?22oB43-?U@ zisJ=F1(LqqMvF`hIwU<4#$bjumrM$8-qQP*s<;a zUUcSwCQRdBuytU;d)h%W7vVXWpC{oxzvN)l%zlEuCZXyE{hp6~u92@XNW!2G@Z&EW zb`7@PsUKo!#?YZRtR`O6IFlCrO2mAc&s=TG54IepJvkcguDe;}GH2t+C?(!6N+hn@ zDRD{gEJT%2Blv7ytr%$GQz_qNN=(TiYpMHT~~|P4Q(rC!jP@ln(XC*$i9xtgnRFr z66NO0>v6%Cr$ZxgcPT$C7>Y`X$EnBrUc`cVywk9`a7E3>ERak)1GXKf) zdN%7nzroLy`Wayw%Y4oM{O`cPGkVWr#&aTnKG^o7S&qbZIzcSi6x=JDqZTP+l%GP& z^vdl5(@&E}dir{ddyYPyBH)ZOKs6c6I{SIt`y19=+otXK2Rm3691OZ4wkU#${2h2# zIh_M-sP7cV)WX9|m{H|>#J46u<@ao32;ZX*RiQgg?U#1hXs9?llNJ;*PM~-&CEa>d z}}>pVqegp9~`=D_D`RQL4H^4TcZF&t6%iSThbY=e70?0euvJh)KpYA;6h1e zhS3npaj&Ns`}x1B=p22+w=sx>w%W%DNf!AwQs3c_ zVW5Zo2Vt`Z)xyYu_Q1BC)T#`OLj7vrAG4lQdi@bYx zk3hc=!sJKCH3W)*GjM;YLNK)%!J4eLg4wTLV^+8>=F!Gn+~H$Xd)7;ykQ`g6*uB8B&bl9 z?GqiZC`xn>{mxeJsdIVto@#s5dupC3?p5<^(bx5Y5o(4D#XXa1RkDvUEW}!1pveUc z#6b(U-)!1kY@0GQetV6>ioI`gLnhZS<=W<`+8(JG-8@eks zTD)IyjfAdjUV4`w!40e5h}UWBu2i3S{-#SgLEdV0qm&bNjA^Btr8EwmlQecYv5K0# zgO9vXRXp@Yt&F!NmphWnv{82UtGqGN+lTEzrMq9W2bKOFu?H17@fmwi_L!B!(D&&e z+)W&4$_^*wU^d>zRm9S0tf*{Y$ZsYUJ#gIBt3U_uaNw{0xl0Agm zi?GXk!tHH~frsCF$|R%e5?)VcW6#P?H6$vW`pcd-WO?xH2*S#J3h0C4t@Y(IQzW3@ zL|!4y^2Zo1Eh_x=s(99&Ll1X|#j~|KS$=~yib%uLg7nSylhKE2iGZ3O}6PvIGkwiHfW>;=L|=9R7QAu2=eVB8IrgFi(`vG;dK=>8OmrewP%68x!& zzY5X&QyN~*yCq@?<}yS*6rnq&jLv7p*0a1KcQePu@z9jwEbV4#7_?bYzDX(QVYZY~ z+z@BDfqs~pq(%|>tSQ4;<7^JN6Om7f$f-LJ`K&3!VtP4iny`>`v!(_M=`@>52Ntqx z))ZhN+1RnaA$dsYq5xbi1PZiqYcsx*zGkSiw0nqCrRb!($ZNnDOQdC3C9Q0BKX=w? z%vuy!yd#^nl7Zzc@8sXYLY%TylUaS-&Sn(~QA`i0($-!(*{tHlIC4x%a0(KFSlWH6 z%2JLOVVOh`)ex1%#1$$Tx3AmmVig2eFs?AOD%N`|f4Ec8!OY-P4Y}6x``Z}oI$MLK z?^(pN8SPvIf*Gn#2=}(7d_=q0=TK0WaT%&%dkO^+9G(xgusww?WQh-zu;gN)5!VmN zcR7!TYSSBqepm2#sAT;y&9CI~P$m0g+F!-vp#t~E0B{PAhw5Gc6iOI6p5j(o*y!w3 zr~nUs5x>XkymlA{k@n`1P_c3PSZqU}LJ(+WrVkw6m2#bonE&kY=k!9)W@7 z*(v2C1e~~aMXAACl6jC0SS^^yA5s0P(wt!V-?>FXN57d2T?e$V1-w0Mk$b3c2$Zu; zVQtu#*J*-f)FIJP0tRIvGN!_PH*1Gq%Uq1WrZYp71hK(9u$4_;6u+1YIDO&J2$}NP zS&686VH+V<-OMOOFu3_H2wREOQa6>9x?(Y5s}XA#q6d2e5_0j28CVsNLHLp?WGH;w z8W4OlHa9Wb+DycT913H?w{61LZBO!kjLO~ih}>bxx6gZo_C!f``ci=#x` zH|g9*^1BN64FxPI!3y?+@4jsYfpy8sS!%d6%SzcM${1J9qKt8R zVaJjhcH5<*oXyM@i6EF}rKXKu5NoOFY~+vhR$3}+qn9CxKrbbUXb?;+jM9trppIt@;M3;)E z#b8*h!7wCH4X|R&04o_N{171d^zIn%q3i>FO@Cw=ng!a;rbL2WsWpbiyCDop2$SQ^BHs7 zqA(=pH6XI;hJIU&stxkcR)@348$%ziy&=!-E>J}Q1XyY=rp(BuvD|3w)R4g8GWv-i&N2uF1`jAVyuF=u;R5X|_HTpP@ zkg%QhRlDo%Q3M!@W% z;iN>88CnV+Ho6;P*GQY{ybe`tUoZHu7#6e8hLUKg|GFlIq=msQaWm*Y-M|(uff%%f z*!9UN5=afY5=6M{%O8stkwC~?VHa6zeW*&HQV9nCzI*#YRH6P5KOs#iA_>y6Wh-;@ zbJHu`{M=-IgTX3(3J5cgQedR;s3qgm7VwS)7yfTGkj`XglMk{0?EPeGr+RBVahIzKd)ofRs79cDwA`6jCZM zyN*29z!pn%G+35Dz#agpFi;BN&tz%&Zn8PrvOOZk02H#m!YaBoZ6exc^v+1UHoYC? z%UPIMO6AwfE^a8?6{ION7VAhKXL0XChyk1`atTo(7Mpy9r|MAL3}{YMel<}gR_hc= z{0LN|8}b^4lUubuty`VDmN-@-+Jt^46(=)AfAl6H^TCk-J;|Xd%mvp)4+m&bjUDI# zX32|)lUXH={4`7nIY~ja2E7sSi{8k*fKrkTjZ^Xa@QsFwLnbpjT~!O}{iuM5M2CYZ zfkl>hft6Okf-pv4x>?jyz|_Z*qlfCQgnR)O$U71eGlgI2*LJgiFq~t+P7#Z?cQX0s ze@`q1JSCXo-H&`KdfAV@{KsDL%2)mPzWvw##H(NP z+5-n~&>6qPnfg9dymZnndDQDqe+rIBe1{2wtWxkvu@f1h`c2A7XUU!f%7a;~Pl=d+ z{2%}RFYa88&pJ8u;M`-;t#{l9GA}y-QFBTukBjpUIj2-x8p=jLQLURKVJEWg`>Sg|}2S2pK2hpB@v-wCTymG)Z z|F&-&#D=@d%Q5xDNKk67R&7JoqAJn~1awwDdLk`o4+*J#v}RU7I{i`Wrw``{wR~hj zKeH1B#WXcn`pw7gl}d39I_UUbR^#&_Y378m0ARBccT7aDJ53 z#Tn*M7pJm9T^x{7P*>$;<+y{o3Yl;;njHDcY4SshgSO!$gZ9D2L3{d12JN23K|ALp zgZ6>NLECteL3{t=plv?Mp#A*fplvzHpuKN#&@MR1p#9w9pj~*9L3{7wpj~v5L3_{Q zplv(JpxwPVXxmRRXzyMev`bDhXg|9+XwN#yp#99^pj~>BLA%R9E2b+)Wbus8S3FZ< zWghabiq$G}=5xdEl->4$e_@f8PeP#W2W z8BAK{Jtzo9Dlwy8PZi>GpwABPzG8lok1=CG*b@ zAsw3M80;O*z)D~{bM3bdI)wVE#VZE!0rKS?zLu6Mz}k#MU@cY;-z-v#Lpl6z`W*|P z{K61Q%_2*Db}XpbpLCdnzMb!q{I|-t%Xg=L+Dd-ArsQo_@;fypcUZ}nYD(T}CBIu! za=VrMUQNkctmHq{l-y<|U#=;+)k^+zP05?B^IV`mO?==Ot zsNj!l3f`!KKdC9WSp|PuQ}9zN__LaVH>lvh)fBv51z)czxJdKY3T{-v zU)B`7P6hvGO~D}*{8dfC4J!ESnu3EWc(kVAfC~Pmrr@xZml?ooODR`v{=4-q~uTa68Y6^Z# z1#hk?c)1F0ttt3X6}+XU;AJX!YfZtAsNkn-3a(SZJ8KGlSOxE@DR`+0?yMdKF57iW0tAY>L6g*D__tq5bRlzUR6kMZ%U#uy3t_nV0Q*gBk?yD)dN(G;+ zDcGZePt_DWM+Fbo6zo>Pzo;qLrGih_6zo*NLp23gs^EXCDY!xfzf@Cjxe9){rr_Bs z_?I;Wb1L{(H3hi}ex;^hhYJ36O#vrHB>87*3NBT_uhtYiO9lU?rr;74{8~-Hb`|`3 zO#ufpB>87+3ZAKge_KVwW_gh&CQohYPAYOkYnX>^+o3Di{$ESE^xwQev%miS06^L zLT*`#WvTCwmMEtzNlZ&VYc1|eK`gOO>|@pn*p}obVx^8T7i6>$E=&C$;Hs>sO$}G^ zfGMOfOth-EaMaHq^%oC{H=gvUpKoJR=Xl*zwo&nl9ZFe ztORE0Akl)PJx1b&_2TuT!u2=H*~7@nutKL0%l=uD8UESQ&|fTH9@cl33jSS9!P8Xm z?`sOqRKb6!DR`<1{$ou6!JY{lu8IzF6FSpZ!5`KXWGeV-O#$Z|CHWuK6mT$mlK+>Q zg40#-wVHypD)_H81#49BNKL_MD){d;1)O}4(# zQ$P-fB>!JE1!R{<^1rPq;JAb&|GSz3a$_Xy$sHdLPBKo|?mJ#U2Kywxt;X`>tfnNt zy{3R;o|F8JngR|2Nb!qf1M;#L^s*FeOvYqNbZKk-X~H~!EL0a4Yvp1i<9I4xu?#P$=oXZu+_0X+->PB+ABJ#R(`h2$OKk7z*8 zs1S$VOe)%2H{~cQQgk$wO@XW-lues=fU8A#+@J+inmbr58$DM*{T2&}RL(VZRr^u@ z_<0;J5qaX{M~I8`bbb~R$s9$AE6Cm}B7n%0LXB`Zg)AD_asCzV!cXGPm0RuM$3F)G zL=8N@oXg$6t_Qm`zKQ@>dIkMd9<{w(g>O~b!>x`s(VZRrqOHIp4sDuvwtewCY)B9V zIjJ;uSnijcSRZAKa5RR|BK;&Va^vF|YsZ>Jvn#7^f8xnTscA()!G#c|ZOjDs%%qw| z(S(nx>Ec|CC)?Eb!uJsSZ+Q6K_X0Hkv|z~E%Z@}3#1F)c+oCfch(Aeqp#Qm_=)wC4 zDa_L4#iQc-@hB;N&aQr6^t{vju7B;sGg==e#_=^zy)*hy^o!B?o$ejc)(=DM(ydRZS0-$v(eqry7v;>_|fQx?u}OceDu;a zFPgb0`e1bWUD2U~Q_JSASij;u(NnG?I`Uo7+oBDpUVsbq?3eHPfggL>b8g=8Q|JD4 z^p@zHcMvnV_R33%rF`}FGv4^ayI%k1=;`Nex#(Fx@#5>}qr(^88a?-#TW)y8kG$c> zU-HcFyX2KuJ$v8P`(N;?AKm%7cbf5q)U&et13WyAB_x=@k^=zfs$r^|gIq$+i8SYGbLN6+wQmnx6k>{a|?(`ORUNzEnj`FO4=`hxy$G-OZ550Tv?E39?TEc-@ zafH5gsR(`YRp1!_nnNk;np|&4nf-EQ*?YWdwlXYD<2?B)SiS_B*QB^9xV}1N#e(Zk zq%2Z$y*_2dm+Sr%zW~>LX?_uxA5U>baAgI19DjG5rCz;s$-mI>2~`|@4olm??qQ)DXnr7_lg~i=EHp{# zPbNFCILOP8U$&?FfVQViT-iOW5UVS@zizjh|3|yKpH&W#i7>yK)FGGh4G=^%NFUVK zI&I4i10q-pFGZ#WDsl`Q%2&URU3iDD()2t+G#p@RY>lD(@D=bc(N>{?+kos`fc$-g z%U=q|-lzrg%rWUY+8C;(Ap|AOP1rY5u!< z{+yJs3$D9U!g{#wN{Jxgx-%sThU=9n>*`#uNb%}%y*wpshU>FaLJ+vlr7Ze$%~O0v zTz90np}1a_vVza`(iA5X*Jq_fSa7{0#Ye_=G(YD zBh4@1!g250xty2g7joH>;(O(~ImLI$_1u)OD6X4Q;-mCM;F@jhJ7N^zQUm4{#RvK@}s@4;!=Yf~KCK+4L(IFVnrG$PM0p`w0W zMVBtIqW>n4)^QAuu3C4{tdCPAE^$152Pb`v%Cs)b{Nj)$mCda}k$Vrti9_l9_kwe6 zN^Ba}H7UV_Tv^K)N9i+{h>5SLrqwBNi(F4l^WW6)V&JI=+0f|+RarB(C zw3^CJp|Oijg({Ap47vb=qp848rK+bpG{;|6tKUvF3jwdhG!5O)xstwV8KGn?fxA}A z9K!pk6}DlCt)dMlW!y~UH(k?xB{BsC`>ITK5ngdZ&du*E6`OCNr-TtN-t_vVHvRvH zsxHTxNWmPz(TjKY?4@EZ#D|f$BV=RLa?07z!*|b4VJY2KjJ_i)DxgY;n*nizf`_{v zcf@~(yA|9K^u0Jz&s-`}PheF#?uc1|%{g8SQ?b_g5@V{3FqO|!Z1E1WS4rrxOE2KU zNm}!V+5de|dpV*5q&2&Z1H4H1v8Q`!%#!P}X5+b6UEN6Yq(8}_^*)zhR1!S(#P$E5 ztMb(NLji09EUC$)k|P5pHGj|sSnJQum0@CXMVAu|@>Rzc=py)829>&l&>rG%DVakP;;w2I({>~ zc-hfs_jEJ9sX*Oe;$lhcijRugxYHt#-f3j9d@D7yIvuyUlR3 z-31sm_#N)dXBe!LMHgX@xio1@ug6-O)UqUQH*kfg!fm4O+}xOECa2k4!}-pa)98A- z${w6>cQ$v!vQxNYw@oNp%^h28!d;&`_SJ;D0e5Vs@wgH$D48oW%!%Dy!dVQbilHIH zl{qh)`E;Rj?06H7$6kl{J!PTFA*6F;4&e~5q%F4LgqGKG$KIQ8mvP62n{an3cYDga zGr41HO(@&I9s6m*-P5_-Ro<=QZfAM7hPx}vyVJP4qP%-5cWjIawVci!yJ5oJ)3}=} z@6O;ZFYlhh-3}tUB-l8f=ZbC*q>+*?AsTDyitaPnQ@`?X`X`w7CKt3ujRS zn_og(>$t=5xw_9}%ogm=*cy>umuV_dTS;enTbgg|D^zV#{?K#6&x?=p1^%@~Yun;3 zNge-;`?!;7DP(7NQZ4|Fi`q@#B9HaX;TzW-5aLovfH!fgL07*kA^pqE*@#v>3&yql?EAV-Q3u+y+PoW;^-M> zlsP9v+0Qe>V_}f6Kt0yaet0Yl;+E56{XB!i{lJ_uZ$Wgu*I*!M^lkN9!4r+m}2 z7uh%+zHQq*R2%LWmM^?t`2NU!P5lL|ZL9yGyFTCO?FRV7k0=872o4Pa(wiX=6Lhvl zEhJ1pyv4*t%eE@&r5xYy?pGm3G5}=3mdAEbio!zjT4h9@6xo<})0{09>o+BjrXNs7 zNDIQi`kxnl1<1BDN7hO`jTSaI_8*EShMAgPs5Re8hR+8ZTr8 z6%J|q8g9!`Vyha)h#W>1vsgYSd0F*&EEj^JX|rlTCMTvCZsVMIO!=EVfGFb^&tT zK`f2HibGxAQDwoFV1};JoHV%-W{mi{J=O8v&C%y;a^?P=zlG8@2QeX&Zo)UyamY4W zB~tP$QyGP-nBJu%?1UKgNZ+)0q!u`fQ|HfBsJ1ggwbS0=?i1=Ta2ef#sUh8hJw+IE z`kP{e0SZm7i;g8D2?oL1(+|$Yw-074SbJGEql3@!p)Au!3f7k1Cq9|n&uD&qss!0Y zWV_ynX{3u1JMYxq#YP~0ddgn346rv2dU@xNqxqm@fMUd9GU+5_f;5qn9>e6Rv5iW} zLtCLw+*cEd35Q3VrG{K|NtK^g@`m#h>?3~K$i?{y-r=|Ssb{}*iZq<1kocH1@4cOv zpXLg;c;}I2n1X5qGG^hZ@7AXZB~kyVi+Z5OzSzq}Iqt>d&?c8A zKD)-w!Gv;wOKKptMKP!Yl56stEcI&D*0DJwli&W98jd$L_VW3o5gGym#M0e1lzUV7 z=2$oh?4cyWl95}G&11B{D~W0+doMPonq#c@>UIw{ z?^qk*L4bDHM5BaTLH`v5Nos{rY2_KMWdewkzW9^TUC_1;v;R>J&hfF6p{2y_^$4MY zbvn;B&NnKPvVX&m(!4Yl{1e|iV9~CbUiyp5gZ0H%>&mZW(C*zH!QilG;|0o@9ItPD zpCKe6Ir5@-DCuDA4apZxsLA#WN*&q~NK#9aHXKI+T*$9*%7P-7dBE-hdtRRCVb3{3 z1CN8=UtI+|+PFQs%D~oX=UZarwvjH%S?JMrAg5Pof|fWd)z1SlTvJ9-A0dIRif z?}>dPTDwY_sm&JH!uh<6Wu#TLF{&txW5(UmR7V*srAkna?!w}iWTDO(6qDzP24Pvz z6Jvh|$+2PY*iZ^8$Amqz(R4^RY11OYGVyGT-@(~F@>|CuGyVEnTO z<|V?~S(m4=Ym{}YFi10L2VC&?oz1kD<=QcI}-#2ivCslaE2RH)(Dkv1hC>f0ngaHUN?60nsv z#|PbEUA=EEgq8b9Rqr}QnI4LICcJU10`G8uEp!`kFakox+enKn0XHU8hzzb7UE%*>3L=vw95C!I-#i%){p8~AM|1-ut#r<*iRHfSwKRPnc!7pNQqML z$|@MuGshuLMB#>ulEt^20C8f;@R?uKixWHKv6LQ9M4Z%Ncwy(quz`4~6EvI!F4^)O z7BoK-MK)(49lULygXtT{Ov^Witdz)uUL%YS9c>Q`5&WR2Ha8a&5SeyWz#(p zg4kn35G5ZUmZ(zG^L&vt__FfJxAcjgvNz5uN^gy$=3$AS;*Xfupoop*1W&SGQ(c4% zQ^)~cjNQy@W4GbqeKX(9TIVTFCgV@dQ!v?a+#%qxC=fLK30^vRp`;8Xxo~~+E4<5y z65ywy5D+?`UB5g{hsrcQ0z%JeS1YMVdY#+6K^y+`GK3_RP~P)}hPAlQ8vbi04fbWE zy^SxAVi|-!EC`!K$PmW!$G-l#h768gtm(W|h7S&K8f9Z5Qp7PNO$`-nINb+O$8DAn zOf)t%@RnpKP7;%eK z+$@(zMt6-l*9s=M1})bfkuE(U!y4#e5S4aHR8;DS*9-qIdv60R*Hztl*1c7)UcL9K z^h)nTUr)xj%98zLTUcZn$&G2^`=+0)dQ#$1a;`UgpKTk~!eakCNq)h#WObk`^ zvS^ww$ouz2)Gb)f*U}FB73SlPQZ9Js=y%h6IbQ#3Y$3btGR4CErZNkY{9ObSl3YD0 za-3|4$5=N0HqE9WVw3ca*+N>#%_FcePqmY?hiYF5pzFRp$>ur@YR=ET(VgpMS{v~E z90Obe2K5w>Orowo5OwYF$0h2*4KXy&PG91BWg7eT-P0kX&T8&7M!jRK66%#Ft3+aO zlE2Vcb?!LG%2+Fhs3Cm|jl=r))uAwW^Yd`O9D9?`(8go4J>=x1N%*l3)3KdJ$09{m zO+f~;y)#?5$DFVefplILM?cTQ;)*_joEO02a9j0S@;$T#0eoRM^Rr&oMXIqC)RMTW z76ES-e8S^tkQ6C-p?}}PoEt5Ja7^$B!ab;dOWimp!hH)(n>?mz0=ko6_v^!bI2Uex zi@1+&B;4Of?l4dF29~J06_^_W8n!F@(5P2f^#G8|D7S*@nV-=6YW5TX85>1OWN!ki z{~{))s=+Q-^L~;`5n!o|RBA5?YcN}CD zhx`_?7>&gT2;?^`9x|y(=0xg29RCj(#$q9v3)ufx)c zL1(iqMsd0z`|kS)0Nm}5ODwb+fV_4N>3den94g?L6z)og?whqLr|;sk3HD*e`hN3^ z0j^uT-;0EWswKfimJ(F!+}T%_1iLWZLQpT;^4!im5GuoDSRc3`n4C{7mM`Y6~2XG z@iD{mvSER$6J$_d)AjCUm296;YdglWDulIIc} z$9R&GOd*I821hY%ET9iJD3NtF`C|j z`2zD(@x${BmFjr4T-_EHWFcF`2qHvbAFK@B@1cMl`hFx z+-fcm0x`%$5TbE#qA~KQkWCQ4@1CBEQ0b`jFjJgP2FRHbakL@S0eOOZ(`3ptTvUf1 zcP%GIjP4v?bfYxV7w}zS!wBEq;(T`tsNigw2;UYRP;OA9bHXH}$bI#*btZ!v>R}lD zEqbCaDMk5Wa6?WVr0#p(`k`75+UaqL_x3B5A_K-a?A-Y~4RkE+YYXW#j1_eujuivM zWXz(Eb&(#k+a~11SQoSQo!LsZlcX?$}(fzs2OqGbjZft@o}>=XTr>i)4A>M>%y;*tDAk-T(n=FO0IvPTj^srE^V!)V$^NTaHDr=Ve=j=C4yMx@oW z_H}i4jrOLYHE2LtY~wgtqPBBFFxo+2)d(@X`q$~lfaWWS;ai+ObQVotzccP->LA&q z0pGkP%I@4FDcA;V`EK_HmbL4X!8;|GAwU}F2YDGD@*@Na!c8h2Y-Z!JS&Ulo=yQ97CUo&)K|jKEE2$M`G4m~f zKQasX!>XMoBh0I^8xh(AJYsv?UWklU(9~z9rzz|(wlvmXY@}jJr!)SRHf8mj@wZc1 zmsD8TeM@YNEXyQ~#@~|Oh<2YpGUE@K_b>W89@sb_X9sbl&VFJ#ecrr@I|b~q5t}kR zmas0Vb!(O$>36fO3f8C^jDmdTCB0qQGBFxf3z`ii;v*kTi{w1qYz|2i(?|OAlzQmC zC`D$G^DX6s0KZDJS-Ug2aMEHreB6B(q-7yK&lP~wWH`!X%O92wC8BrBi=V13nrjc6 zs^d|?luiSyW-y&j@nJC6xb=^Mxpu049&?QaJ~E96hN>rTXFUqRt%2eJ1W4418ii>* zB=3>LJXFNkn`ZGA`i;zGB7HcZbnG7Miu8mfY6CTh7#S%Np_-QB`Y}rnliC#|a;V7` zRNO4<%67?i5pKgc0BKrE&sEHBiLe>B)sp6XrC6=DV|2FDl&-(=hOQTJsK z+VqTf{be5=QZWiP9f3d8b!r(^yn~W6MR&m<+z#Dfs0pSr$h-Wd&sxjx0;pu+;;C`8 zUSJUQ{J?D#3(Gs24a4^>*|G{|@-F1wg?{mrB!n;-rMbPhZW%n&hUfKhb)_`-523ka zFv;#s;E+(V1}=h(iqP@0WT6wRhoHZ(fU?y*#G5^j#}R^8 z$Fq45j$vwmPuJ#-_o8^Q_xUXnHt~{ewJbpE8T=Y9T!P?8kHGvg;6_bsm^sL?re+N% z+?~yO2PKwANW$Wt2uPY+8%W~gH%Q7%VPP_n1?Ff33COcy#4fAPIrkARm|3jEf*FaN zrJJC3%*k6kMC@yNWw%~I7kzQB0p6gD;DUuU>Zx#M+lyv)TV5wL4k!Vj2^}Mpv6^` z+^MnZ_t{ona6krTy^A0tA(I#lY7BLg{M4ehova6f^AhqyYAw^sTqt}du}X@XEFe!U zXRM9_$Xg{D9~~B`_)23c92oKU;8g(NnNFHQq^m3c-E0nR5{ZZMFQI`FfJ~Ca&>f@I zB{(gaAd;RE#;8#aNO3HtPY2RAX+=y2BT{AyShSA=h94Lq&WAM~FpP+cV~( zx^Pwjm#8b(Kv#)0tJ8jfdQsScFF2u1*C}S)L|736QLv4ZUj{%m3P#BZ$U2&V$5izg z%7e4A2|%YOCjE|i6>5XLIa--A?;@is^6z-XkewVn5!&2P4j%Z#D&_O!-Fcdxr`|=9 zfO(MI4M9YrLzyV&-9`E%@6LnQ!r)&OeOdfUK{Hz|n9?C(O`-_nali>eLxJ!gZL?)$ zKMKj=Tt+xgg&Z+zr$fh^Flzzch~9W0M2}f2qOW&3B4IPO zC(du^mF5?Eo_clGp@UE z4=u>Dh+Lc-G0jP|cfoU`xj=+D)`XrIoAxj`Yxe`*H;{bRF)?J1vu7Stw*!`-cU%e| zm(H`&eNQ5U#M{sz>_ye@uICTk`}cMCV14ZY3xe^&QI7>3mm0>)uFG%S{hB}je4SSm zF7lV6lCPMYnAOpGAhe*@jp)*!Qy-@F*sBF4J#&R@F(Ls$ev;1ozp7=`M{<_MgJC3Z zujfzKI8K(v@tD>Y!b8QLc(r;QyfiwF$5I=|NcTt5N2c-Fsn-~M7-BFgLPJos$+nQH zo1f?U#M>tksuyj4U^poJ>86IGCutvbxUj^4{GD~AK)M!G2?orMe$*(q8m?&L3B3ge zM)~_IVKQ8jf5oA{Gv5NMqao39%=y?-(%;{uWb!S41ELI(Ae~EgHKMH9n|Hw$|5fRU zCVoggwZq|*V2*G@mSDnb0}aL>(#um=7KbGdi8*?Kdk_&cwFM1fhRQLe7>tyB9CNH@9=*&Rh%Q7NmU0J(@ z_XEN%nP7wUB(8uvEuxzYnG)_S+d$1yJCnRls#r2~h@8v8$(R#m*`xQ8#lW1y*Dax; zYqzSx@Fsc(<_|JzUco?m5WcXHNWsPvXcBS>#n!YYW5y@-{3z!N-JNKyMD#}CIWdjU zyb8ce-k+M-7$VI+Ii^oiUtS@#oz{#G9qG!4NC8Y^0*8)Xyz)9BVqRYs+EzFq3+*wg zh!}7YTHr#7yTd?C!?X1UBNH1N9bsC9_C7L^6|rnb>)7-~bBIgW4ntT6TX<5Q^e)XV zfd^c&*2}25@K9V*@=)-+cd3j}c_^}A28;g9)Imq%Q`@_wf$|~Ko<}n6BWoy|_CNkH zU@X%cw@D+IqZ#$c3L<`v-;Q`7po;?|E-!RO`aWQu0-zS%UDt^T3899aFl zIBxTc6*&E2G3*HR7wwQ;<=-^E6n^W1izL(+z6WTezF0a49(yf6)*C`sYM#q>L|Y_a zFdS=FD5_^m@nOV1qgCNI-(F@hfqpQ7REWK^C+qT!vMONV#u571I2uc^k#@`GiNE<^ zE!tFiPOWl;H|CM-q4PzMh)E*#vYBm-HJb`g`^(wRp(5J9Ja{U@aAay6m*e6wlzu9?V$hlu zQOUab#vMR{_N8vx3a4gvMR;R5TMu`aXZy-uJ;qmRT8mnb z`NAx;Lb0@S8ZpdZ1z8wTgt;i$E|En9b3qi-UmoHV=)>8ZL%-{nvSb0bn(o{R_#V)F z1iPKI;8?k1_Ob#Pb9k!2Z0*Do5&C?1Tt?qXSR0Tv;OIF~bAXWpM6AZY%L?4tQ=kl+ zYn7)JfB}YZ}TJ17Hee zerhqBsR)voMr7i7znVnDMVc16nVx9bo|Y7vh%1)u5dtV<$w`(0LS{~@Wy|d~N32RcJNm~YNmJ|Dz*^*1)>Digs1JfKYvIq1-oF(8XU4Z9X7m%Lx+F^j5ZPL@U zqj{-YEcVMTmDbghm#}9M7JnDY4PzTbCISx#<)t`=;EQGy9S@^(3`q{ixUyZPbRsls z*^~57CJ&#Be>g)~nv+EJj#quibB&G;JDZ23`7~ljqzSqV#E67NSt$bpoH;9@NHM!D z8F@zcC;@4kCy-IF@z|`DaLTt~TbF}(fc)c9?zzI-$rmP8pMyRmd`IqKVkqW@V;x|u zk}C&!pRL{Io8Zx#Y>9m)y6?rsNHJj?{}@c7;=4`b)x@553(tmPLr^41;F~-0)U+1u zS>AFJPeCdo)2Szet*6qL<%2QnMH#m2ldJR;#!E)1ZNz7#_%t;{<)uqupmvM3p{$b6 z&T3TrpiPv1C%IHRxPW(bUY$07gD-<8L!h$1bEUrWM(8UolD?c0R_#)o$d`^f>`4UE z@-yd4cD7*uSgtvPq)<8P+FT7amrYagmcZ!O$WpK^0~OH&s>%$ou)Np?>dfr3 zJ4~f!f=F-6rlXI8fL)0~beFA&bxRJr#;DsBZrN8?x2tBw=x&=CGP>K&-2r<_aFg>* zRd$u>485y$Y4ynO&=T_})9kFbDEDYzsTaL#_~wjPE>G@beyd>dqkgLany=TxgKRR; z?HypGPgZ1?UoGlQv;ETS`BkH_G`m_Vzs_1EXiX8_$gc9D1EGixW>*1? z8{0l)XxTO|0sz^n-vSo&OzKq-YsJfentuYYNYS?D0jie)O9i6UB?bkjw_Ap)@U~DH zo!J?`Z6Opa8=+#90|*Dhf2n8J9btS%0s3{|2tzA=tsh}j#V^9X+Xug3c-IVm(P8>t zyh>j~W_iZ`N~d5A0Jtv03(#76S++IU`-BYC7gHkqFCeJi_@1fbFZc{~8;4~cf=J*gN^UnU6#~M1Kz|VuK~t9KM$(C|x+pCx8d8O2 z9GLmUTS2w7{u*q`U_mGfELyl@$Q!|O6ijgMLl$+3c)vUKGU+4{m&H_`jawWL zW#BX3msZ|Z_JU!mTr=!}W&1;#64t$plM;AC5NIgcv6pOY5~>(7KTCY6^43T04Tk0% z(a`!(IChJR?A9Q0D7a#`o96wi*u5wqDRswD8HuC&XMgQ2O-+p`NX}1@&tR?;D&=!c zaJ@9asU}$B4o%1=c;s_)w=&iGe0YKjDyP=J$q8l|qfIa3I(wwmVt#i&3^5}ijMoqu5C(b`MdRYtk+__#oBmYTOV`;S!X6($Pl{PSh=3 zSNny_BvF6Lu=hE_pCjyr&1)Cc&~ zuZv~O2bLjV3!}PYoI)IZBBwxSH-RY83Zu}Z3>d{$tW3^=&{$2R&cSW6<-j%I6V4@S z09maU>gW(2Z4KloJjxc(cWsL)aSh`SbhaeqqW}7j0`B7 z7iCVF8-iad4%4MnD^!(;gpC)$a2>O_)s{}KZIUgVsm!5&2F}Wry=OJq36@hsj zSt};7j%YOQ5;T8}iL1P3e0Q<`iT%J2#z(3rd_ z5&DEdQCe(why2^m8~Vi1$-Kp>>8cxA)z4WGoDY*eGi%-6Z>?pEcTftJuk~3nto7-O z+BRU3?Euhw*Rm~lXqx~%p2<3Q^x4KjkGHTT0a|ZUYd(O%U$H-{^4a5rb2S9;XP(<0 z)%bzRKm%Si1Yb_;oiOio{&^L*@l!@^H%C(O=m}kFxd}sI6!L_8tAzjc43@%|o9aX=77ae0OsNHa5b4G$OW2~I zs0;$M-2;vn^@K`<%^C;~Kyt9}-rhFgzTF+>+&=Gt-ZqnFXA|o}E=pztX)O$5VMssK z@gnLD6Gi3QHj?}LS8XKs_OHygb5Fr{9=*4}J>#c#fVheq+B|CgKFdZE_L(+0t-f~%jqwuVzN?bN^_A<=fhfgK;zFA2ENMf^r$-2(B9fpvu|U|lt^u4D@@2YNH3 zV10}+$(LFU*2j`Q3+i)T3O!O~3GEk^MX;VO>KTCbbi%hhh+tiz^Gu*DPHyS`ih=c% ze|iqEJ}khOz`821t{7NXf#zxntPj)XzWONxE1!jKYY;Ru0PBi_mGdJ+q}wv#UZBxc z!NbA3;!j8`k-IDOIhM&)UebIG`djn*?chTSF)&{*3k$vW*njf!*kU71iQrclKul9C~JTg=f91 z=&aB<>342{2BGge!O|5R_Ny?!1$^T(O!k$y;kUytx6xusRlpgH5hB~v%hRhdGXWa& z3M8`%!Yb?{81dMfbKdd;JuyT1o0ayadFLC7_SL^z01{Am7(le5f)xXbXbu?BBLj*Q z2RV6#_G;LGa-CqZ5|PPZa@_zX*HwW8ced9w0+O3b5CMaL$aaGWlK>tFBC9}TB|rp< z5=3-p7dvr0pMfpfKhGsuKhb!_dgaRS-NyYlHYEA|CXL5^A1;zlB2Ei80~^_!RKzD9 zMK*%5`(cP>Jw1S^Mm3RUxQ0~Jbzv6R;WO;votCoyx za~=*kW?L~DcbGQ>KgSLetuXXuzFxmA|8CY2{$M|q?+9b%#Y86*O0iR1O7%WT_2MGA zsq-YuNM_+pt&31>_$__lP~y!%nbn`|*ySlK5v9*dz+t3xKvAW#t8DTbWUZw}0qg_G}~ z%gAe_MiG75QHnnO=Rd((*fE@NripZng)h7N9b}*v{0rt5E8?(YE!PZ>pyirLRJjSz z-&$fVxW8C(>(9)KdDP8>B0b3jB;lVyoMR;T18Qog=r>}zQw^VEf6Lq(Lt&LGopt!`s;-9W5fU#zXqPf@U2luVW_-nP{bZp02v z7Iq~FU79Qv&^d9Ep~*T6rVw8Wn=sSBP^;x;j2LEpQ)SjiDr%5z4OaPXzn0V*Uo8?= zUdavQsBo;6U7q#hnA{}?t;%Rt4@;CO{DWTQ`1QfWo(H_^4~+NtL{q9zk-1|9=#OK; z$-`t>74$LNy@rABe5J>uWyUAG%W)&F_4h(4I=fWX1MBxM4EWI^KCBcu>!5MicT^QO4gys+MZPZOdwoR5t0k@6^O|yg;)@6^g zW;{ZM1EAV2p^v5P*^h`~_9G%7KMb-Wb&qhaqx4jGX7@50j|)fV9qZwk!<$xq{ZGL9p|#Xx5S5X=T4=nknhW1WF0bl$BTJF{6l<2FdB`zML#5V~j5n#uyR#K!awD zJv);Pi-*DD0hbU?D$?J_Ma5}fIxtRlg)c_H8_Gy1XQ{<4-{AZseJJ9b-iOMjW5pHH z5(rM!aM(|BAZ*;;FsKYq#{eo$_)Fsxai#^R9leKnPyr0f{ANVC+}g%4qhF6RL(F1> z{Q-;t$V(`J5?DY*?6aw)ure}8>O3Ifj~s*3-|=NNULEZ~^rsL-l~Iu^z;`(pQPpL8gAUkpJ`- zA;QJ3a(vRRErk)P6iaH@XhE)kV;Z7RH;fjmGlDGm+qKlvAhCPMJuDJF2JXTKNiz&# zY8Pw+sORsOmSUnF*6C2%T~0jVgql;Pwe6!a<@%cFQ8lEUm~%fW_0;kp5T_E%T1K?a zxJuata9!Sz&syzhuTXoDu|>W!v{gHYPS^zDg-F`kY*@8x#xNkZs1a$iYJ{U^0=Is% z>9^8#fR|!Fmeiy#Q3Yym5HB)(@l>CmZ$@oG5W*c@I`QHGiUb)=*)Agq4cO8xq}Ny= zVFx=v+1@BbB7E_#)s6zDgo~2$r8do2lGYNYjzAlojPq#eh=$p9x3XlPDn0~0Y9$(o zs1S0D6|fSmh!qqo(M)x>p+|5=aGM6_y1xikNy-9_>vF^h%s3=Q&?HIQ+QQh=x8P3= zOOTelnD;t_#~wKs^^1jFYJ8whA~7b8+3w)|xLDKR|=6#SaK`F8t8eIM|1W zY8gyH+t#e(nP4Xcpl{nFc;>dkfl9bsSLkr3jBTxMWWPa$!&&LrS!~4 zrq6#H_W_6rL0PEop_<=xFQ-|oMYBlbQbCZqFwZ6|6(oVgKz1R~eNBpq3dK+-JfMpCb>GrRz^D3$?F=!{}A%w1$1+|HK~$E+xm z-sAlOJFH)<77YDr(ho~RDpp3@YHfoE7Hq&_P*gZ92EI|*tC7sOavz-FV}?DziJc&d zt4;yKFW)9UK`53vmS((ZW1N z<*!Uo6$EOT`jvtjTo8w0(-0UuZp>14zhtBrY$W$6-G8XdrTi+mzoxjUN ziKykSd)Up^w}EL2yJ>JFvB1K`tS!Z;?H#wgeL-0=4uL6g=Q6-n(d6u?6-p2cA-iX8 z*x(qMnB$t5!Cs{k2X~$Uo_jmRL!xRenAl|RR%MS9jnbkCvuRmMiM-n^^}Mf;I<~&n zRvW{yG2*J!K2VPk{FfWzL9TtSlAheob9;N%CT%~0PC%@(Jyn@xs09$+WBaqy8 zAcWwSB;=kB*=q8$Zun>8wFGD!^X#Nimz_|5j&0dXldwkEnhbQ#j{Xfqx{U3OzI>T{6Fe5K}X4N|~*HBxRNzDoh7L^Dcn2Qu4Nb`Yqy- z<}L~nv}KSfyhK503Hue@`9-Q>s(X6{M4tNOs|zF{ z5uYoMyO|w+d!9M?up8dNZ_h_J{21n(go*MyluWclgaOT#(12W1a0TF__?}pbcr%1+ z;9%W8a%v7~y?iUhXE4C-gAgrRV$%JrBLIP|4XRopqeO&PE#nVRhJ2RK$R9ilSfNR2^*x8 zHKJkl;`oE;{37M^Yeccyt`vhu=j_;Gow{2#Hy-(KA3|V~49O;<`J?)QII$lO9sS6; z)*Qt35+rGwVY4!3;JmY0pS9y?Ip6e=T0Gwrv_S%vwTboow_hhbqLb_H{k6Ft2Glwm z?mDXh2@N}{R6NuPWW7BHeV+(0bGh4wxBj-omTxoHogF!JOV@lBl(E zXpuq;&RGgeCNzcc0Xyp0LoO*lO7?TjEa`O&LtAWUZV3}!>{Y1KZb%>V8*?nzWF6GA z+F^t`_lg}V?NzbE8H*jZHk9>BZfeMSeos z1DIH_wsotDf0z~g;jjy30xH|Uw7PW+mU_tsn1mdIM&S-Z4r&B#u+rgF;$aAT5IZm} z-3vC%FD7iGSCg`4M}PNIQge9BPm~ilGVc{@Uc!0cxB>Y1NKZf_bWr!SA7rku$gA$^ zR));*iv-@O*v?@Okvx_{>h$mtG8C4Gir)T9Nn-|@S>S)D=I(l=8f3spLt#a%ffgyk z4EThl`t%zmc%4Y{kLWyWQ4^0%5wWw8OPlWju@lUMB~C}0`rCeGxD0awPuP=*Cv=JM zf{WZ`N4on3MJDh2b!~{q&XQZ+3{=*T!0_3>{{L^`rk31#gy57WnI!CQoJ+p_;7Io0Sf)*I)+!ggAJ%0L-$k zl8AtcIwk;wj&<_KN&Z@NV6wnE+oIcfrIOBPoHNXNdsexsgWv(%z)E$CUD0Oxy+llf zk|h5DE%O0`7H`j6p7PhoXB4k!6;v_k!j}VizD|@ZGrnZP7B4YT7WQGmt`!5FT}c3ZTxtoS!E5iH#^@aV79-{(g?m6 z!)TuW0kFq0gb6j4qswHCEQC>#F|E|+w%^n=xr8wSMdXll5L z)I!M3iH~XiKBjpdSxUuB168oRSXi4ig7voGqON1_py?^)Xn~y;B>zOf)bYQQ(a__t z8WdH19udI0Pn(*5OQAvdZXQfu2yh@6@m&cn2*<`C`eoSNHDA2+~9p$5T=ul)ye0d1^Uky^=Kf|)dL>|3pJ;pxAyMzKZgU*RP+7Lt$9P~ zT5!Ao?JXdgA*Y}%r8||!+5PA zK*oT2K7arxh{9;f-4C4?Sq<<+9DE#4C>``1)Nnje&#UlcxaZ+z>-ki3XE679bvSF6 zo6$ceB{5EB+7=@oM)z}I;~2WbhAM{vmWRJMh7q!f4{V(`yxm)oHRt)`)<>5LyJ%9K6?;!B)gg{29ywF`ZuIh29xB{;xwlRiR$d ztU(_o2Q=QY%TT;^va-+QhY#=W7~Jj}-1?N;yFN2^dwC(dPo}&(or0=`HDa{rLk+VR zJ9wgGt5XWDYONR-%sq4Xlyvt)B}{%xHRM#h*?D~uMpLlJ- zL1FvF=_lRR+2bsdY132QkeE{3LObh7={L1_crJoD*p)dLp)`l6<8%)!6x=yCS@C8E zzks3dB2Lg+pR;S;O_C~}9$6`!Y%bU+i`Xdn=zN#kh%g#y!(p^BbsPUvq?>O0hQaMd z0k^kI4>tve0OZ!1GxZ0@@j16O89%Z&p9mlaOX{7&SmnoO_ zSr`w41!mZJ@cVfn2DJI(bTSLa%dR^z3bV^fZM?C%4HXA3;|ZPo654qGq&EJ~(Khya z8(_-e&Kp7-BfbC?Z(=z5+!w??QU2aq%)l>9KLZvF6Xq6%Y2#U)b+M`~GquZmdoLZ+ zGUX(uY)?EK*v)&1cl+Ww;f)t#8W@3OWA*dr=qL0ZI~*)i;yeP)Nm0BH*V z`f%sXfdcFpI@-oR zqmAG}E^!dr+EZ%lwbgB@c(a4k%Q#4ZsqdTA*6jrr{oM33L0+uHTd8xH|79=6YpM}N z#df-ib*@116Z9EEg~<6UJG`_HRuJSeiQVh*#_9XXR!QgX=dtR3s<@(`KX*a>{MqUI z$*K@}xn?9vh8!>9REDTrxKsg7g|o#N<151`Mo?SDo1JS%QQ@r-6-F83Qvva4)jw5T zwTd@82dA$3P@Ks5_O*lCgToN4KGw>6Cbe?kSS!1yZRHiyw{mo>l}k#kyu5lWDz1Xqdnb)$9AcN2T6tM@D=OaX zyk=}H6I*%hK-#`~demAdP)lCy=g9>@1j48L2k*Oqs{(@3F6$L)2G}HG~15d@9o!5@d zG>Stt^jC zUfrOIH#_eeYw&}U=KB4m2LHi;I&X}(^X;2P`NDOjZhWn}8!F!HJT%sgiJrg@jY0SC zm0I~~bt@{~?0k6oRz6Z1?6Z_NLe_HxOGGJgcv0DX6&aMK~{QOES+uNU8?vcgW`W(D#qG~`cCPMABm;&R!4Ap zd`;hJ8yt`?(E{ufRnca2tRueG0jk?=LW$(uG%1lRbTgUxC_cstB~r!ZXm8*gk850VXOsigQX<7sf|bN= zc>Ak1ylOr}3q4No+>pdruT90qpma_GhUkI6KZ*jm(412a)8;`G9YR`52mn z^%%cbSKpG96zh@5{qI-9M8yNe8b_Eb){uC0@P1ga4kP%l(~rQW{NhINAFD^8;))S` zWx5dr)#OVyf~lhTAvR4mR~0QhlC*z^xL?yitWraqksZ2{&W&pl?D-rh1<~WKl%1``xDjOR&hnQzj#62{^JYo zwr5O}Msq$g{CIV@Rb0{SFI-T!|M1(_?O(6%wu&pd{YMwn?ME-T+lA)#fu#LGz7E*- zpDwtM3D4IKH?Hk_##ec;HpsDXuo3&?RfvCu-!H-L9k4?x8g1Nc47$N2{kkm`|1 z^TDDR&IbpDEH5`>!Hh{NMbOIgQP9pWCGCGlU4eEaYfyNnPrw_PPrsP7@8|2#zfVrz zKf{;d{weHN?ro(K7{K2xk`zbq2St^Qft5n50D!U-Nk_k_qv8QM@X+H~pJG-}{xk*b zhZG_bow5&+m>6n0nok(wCngRtv*dDZrZhYiqe<0TWY`JxJy+mU7|?9Ux|~(krG;4D z90o*!D}S?bKq?*#h_#76AW3e5n!^K9P_xk8ES)Y){KMy%_-XaoHzn<#qnc3T$DV*1 ze>Q2$whtrvb*quxH7XdX^kQO9rgO81aG-PdL1vlx?1pN-XKo)Y>Qmx4~K=uowJ^O>{iw5 zt6Nd=X6I#NcJh}dwQ{e3GL%fgF5tyj@MKkuMa7$)qhqc7mr1QiRx?)**$hO!Hf-!N z$5WYWuS(jI>QVBS&GCCm`wGH&_;5Lna;VQO#IBcNolz?tK~^}AT$ti>(-E*3b$62emG4ufJX$f9<& zU$hPN7Q%s004%qyp9U}!#9nk!5PM}c#8mvZ9AfPsMq~xte9zFlAq(QXO_kC=2!$7&Z%RG0Xv+w*C zJInUnQ*xQRDjjH)4x;x3k9pT59#ffR@Q&%n5O~Zmz>9hOm+c=dG%{PTKAolI4k%Qs zDIxKrm5`uxvtxVk;;bzofx%VHZA&SV+y<<8+XZ9AFtUAe>e+lr>YX31R0=5F?69KUOmc*Y`!2B)rTdPnH_{cN(Y#TR_62gHiyZ$U%nC(|LyeM4}9e!y8i=}-KW%!C=F;By8qTm-7jTa za~q)l^V4@fq#9mC_rJfg`;_XK*+@m9`&g*eUWrmZIJdzhev@^7DpyzV61j70%=jHz zatH|@W&v|B<}ExEjWS9Hon}#to4(kGGJS&q7c4WGzD1|!bsL5#3lpcr)hkQ&a z8~;%yK2bU#he9^~jPQwHOc2vrO8l%O2TS0YiYwFMy@S3Nob5U7n+wRk>KyYtEo8q- zG30{0R z(;*p?Hdp2cDa}<8-i5Cc|es#^ak>T|lRwR@rGvD;N%buW1-gm@o_T6zFhXBtEC&XUQdF zDO8jWdRZu|BxqJEtCeg~ajEIhA*g6mqrOKd>X6ima zrLxbIR`mIv3+nT~n!3+Hzn;3!Pp<4Ur4@a?d%8Xc4E~qu^F=8$>+O97$N9gf9XV3S zj%#+Eq2OM7+k@49|6`@Q2;>bjXR0>?s=PSDK!bZg#ehHt?ep8t@gK zXw<$H$TQi6bkIPrvH?mfY}NF-7eMClBE~>aOk6hRYgv{*GbS z^u;;zFL9-F#FtO$V2Fh)zjvXY{7W^==(zbCcjOlwZ?(ORj)bfboYC=CCm@80ocWt5yvL4X&{EVhX%2cDqh(PHH1tR;x2qLy}>9)?=}kEv@3?766AuC(RQKb^Xk z(GfM-Z#niw`LY)`BAqW7Yx&-(YZ)Dp9|3qGY#1o>*Y=is3;DTW776KJd=+i_`oG}|G|cH5FuuBUDD8eyNbc1HML`y3%z20Nv7e5W*aWYWs_u;A40 z!gh-)4BIWjGaBaW<6Q$&SV|u^Necp3k-8Acqf^}4sTrcs5U%P<4=HN0Ez-jK{;B!W z^=auX-`df(f844^3A;5GTRUodM=`&1ZM^ese~vJ-_Bon!=o-tz+0x=*mHmwGO?!>? z#A_UX{2l9wzvDHQ$15oc)}MHd<*~j=*GcbMr_m(F;iVo!j%m}b30-EM0mu}yN> z!ZmBC-|U2}ZDs4kxV2+zY1m&&>OO3?Xnlx{jR&JXV4EA42hQR$4V>IS8+$fB_5+7F zJmCgdrCO@k!L+VZDzDXcz&zJBy0$s5)wo{=jc_It`v9+}yL()`C6WdNk^Ak50{LY1 zH5d?u9Kh6K$3`OhiF`fUzu1PW(HBFnGpx};zb#E>?qa|PZtbUgYCc)%4R)xTZx^o9 zU9v3Q*nKGFxI2yIXFmFnpXjDz5_SFsn}VxRPDR~U&je#&qf9X!mqG`5-e9M0JH~`3 zs)FyrIf1FrDB}y>436{35=nuSiQZFN_+rDh@lEck zYa3q(qX3z0=05-!z1d(dfBGh}D0cE60F1M)0>HZG1{h#Mlv_0bEgZ9EKqGg|fX09Y zw0KmP0Zo;rH%tT@Am@w?L0(|9|AnG8HjJ%nYksCqTk|J8^k@x-OYEzYOcqrUPM3)_oji(3;VKSia01NAZ z0^#TD>2*RxW7c9=bVyG{yteJYj9%HJ(?%euo(|6u=X7>B=K{bu_yLB%yUq?9*_^Td zQoY`1wL4D5R>5^ysK+|j^+p^c*|Av|$+o+~$a;t&aID$B`T@GrEFh2LdkpdsBX!0j zgJYA|JNl?_S$YSMZ|TH{FE}Q}Q6cCwG2WZ}J;Km!abN*(nePGr1PzZ3QFY8N$MZd# zOB^0x*6`-p=~zHlm+3jC#w~q~g6`KIxC0Ztbqh~goX?`(X!CC_^P=u=X*_(bsp10n zvSSM_Ky<7QQGAxA8>@xrc+wiEj-ymgDdPx%{J#3+|gA(Nn};sR0YY4 z`rC?jV~2TKF~;rIB;U~C9U1TJEIzajZy)RM_ELv;>Fd^ocX-V^yjB5M$|~TxU=7g} z-Q1n=&L!69e1z))-JBnSD;sVXaD9^YLcfHslOvo|-{O0=*v_7`2Ey#jwsCy@93#)R zuVuS*NY}Ek=m>{YaeCq!^OLQt^_t>P1riBg9MYO99bWF3z@R)wt<+bHJ*fTq6HS<|E{H&wq*GiQhNruwi;_Z?HEdzV6{ zO?7xTh3eRZ)K zZ={{pLY!)*Db);Jk|ob!YaMP3*LA44)UnzvGz^ragn%`6mOFQmYr!&$dE{e(Wf=aN zK+3tqk@@>Jk20|a^J4hGBy8nQ*d_vylR%DIS@8a@Qgfq7Kt;uH$e;}qJ|hAFhE zEv681Q(xnW^=uTcDp!08TRw$sd8ERcPvOpD;$U2%3)_k*>~a#8cWbVg%+eI9&pIhl z7d(0zc2*o|-Oy-z#mwVLIMVND19Xjms0jhK0fYlbdOL6t>V%4eIWCN(t-vikISPbPUSplQM zU1L+U$`tK{x)MndV}h%_CVY=!)5iB8j73=7_S^c=M(q?wVse|=PQ~zc>X<&cqyzJ$ zyrq+5siTQuG}qso?UWL~mj>Vu@O2QRugaw}L`|cuA5;#FQx%^a?%08KhryV;limuw z)Cns(w^8ReZdc(pc$!P*@93@4+(Nc`D>~1CA5`<@Kl=NQM{CdO?|^~K<#*pjY7z`^ z{&2RP4J7-m7xmW=W*KcK2tK;MM%7KojGL7Oy@dN(T9$MeM8&pSIl0bCDcifYd>90g|XEI_P+tLz2FQ7Om25Z@aq7c5kr5Y{mW9;C+r=}^N=`;vNb*AH7qq8X|VG1*10)D?ag{ZS|QUGzlF^SkJS8s>Lw z9f)w)9}XyBuG2PYG^2xSrIwrO7KNJ1tr0HYrtZ*G(F6)m#*x&@EBrPC0VRzSbRZDJ zR#_I=vM?4{aJK3aqvt}(>hO#>+e$TsHYw6l{0B1gOlp4 zAzf%_H8Yjo0N=fFjRPs!N+(;nRhVE?G*2OiY12pX0}-tjaESvkjIPaOfzR_)<7!JW zd7w`}sy_uA*K28xSghTxiDXroRsqcR4U4nsFkL4GADipD*zYKyCWBft~%8CG!pJ zmvSG$eg*eTy@6fuHj5y_d%MGQ#lgNKs?-Mdrh|Pwle(Y|P78133JP{09uvCo9fS9( zv1nm>j{^%#slc=CDn^!F6WZxz2f|%HdrG(iJa%Vcnk)hBzk_-E!E7fYNN2rYS!fbh z6-va_h5oR=&>x;$oQ6B3N4c#oI7dB7s-Y>nz|?dnDZ9Ybbf=(4Npk|NgB}%C*D3U< z)k2S&FZ8Hxp+_wgdQ_`Qk3uQGRa#GiHKMZ?Th9`|Nb>qiqHM<4RJpVxED!0~_{E8S zy&Em4$5wAWxpTYEA=V*12b{;D^PGTf|b2=a7 zNB3||`+;4y;C`R79y5NQUAASeF*Dn0)@wCSvXAZ&G{HAGud9)GpoD~2}F}bJcpT#Jbf!andC@r+xZz-nNek= zJ}m-05aK~ip0Kl)F}L16fjmFW&qz)?o%VJ)?d^8j zW3x_YS!U{z#Y(LzST8K2%L~hBZ;Ag!rt_q-aclaSTQP?_*ffBS?38U_hA0rdkOEFB z2&lqFvGbfKewns0FiMaW!Es^&_RVw~JXzGVh#EKxu$U8rJQJpF29jPXsByWV#+8B^ z3t9%(OrL9VbYNbmWezZsz*X5)g&&2|DEqw7C|&%9Iy4wq#;U=eHRk@8 ztxAKQM*s=~T7m`dXEwx>b}wXzBdY_QW_}d6TT{p$YHnissKob~GXz)O3?&dt@s18X zY>JkOlEB`&Cz*HX0Ifa!NizKL34uQz###A3mwGt4X9T6WI~jA2p=&>f)YT4Q%e-eaxuU6 z!bj>!OAdBVU%)?3xRWP1^=wvm+-f?Kcz;O7(!vT2QmG$;q2qRUD~xkO*x(BSEh#?M;saF9QH07XW~R9vE=qsm~TO>oTi~(s}e1 z(3wk4NM%7rBQKuP@unq}nVZ3)b9F`(&(LKSEt>L?X1z|tq!}_4l08(;Yoh$r19e32 zh+F2b{N_Wo9R9*XqP{vaxM(-YI2bph2XU@+<(2VBWa9Y*e4u;+)uq>tbgxz_UDgLL z8v2rms7P0b5N9<2qX!Ax%+kqp%M(6S#=s)Xj8E(>i-OnoSqK{lSrg=F0P2R0r|s3m zTbl&WNIsj%s8D$q$wpJbGaK}W{*o~^37%2h+BKs%_5^NY6k;cZLLqF1 zVOrS?wZ!92TE1I`stOxru*P2$!pA+9PRUCMV<1=xvf$ivj2Ch6sGtxL2fqsn5pnPv zp6~BBMIlX5h>rIaO#qFI6S0{T5lSWs(W3$g8a+S&7JA^w8luXRk=1>VsyZMmpLXf{ ztPu%dASz;02Jg|2y3e2En58Acvq#dnax@VYy)#MDAx`L28`44p)q=G{RO@CziE82J zNtj9KcPtmj_$w)OJtKZ+4KO=9&^T{A8);%(L%uU9BV_C-Bgc}J>HujZ73+~St$UIU zc}bJ0{>!3>DX3n+9P2Tlb~0!6F9*UIAK^th1>}9=)PHa%wIh_l4DMQo`<(Jl_mL%# zx@HSDTzqYy9jXIvKvoR^(J{<*>frywYapfZ+I&|2P^$&30T62aNY@ThFpi^#mVtrm z*kxwOVzZnlv^p`6$ZSAd=vKXV#3%)$e`3B-zbk!dck~4EV>m2ExaqMp|LCj8dsw9& z9veTkaSgN7V_2dgyD!rC;A+FD0=ihNNJqmo1}A#c!2RfM#DQ^=cEA1r2cYZl?ioA0 zn{=c5`%J`l!3&Jvrf^DfKafI}^x;F-{wLz5DC(a7l}y)f^3OgF}1|3 zu+2oSdhbzl-(dgyZI^9u!22!r8z=y>90NjvBDw~j2sAm4njs8P5*uP3p{&{E40`2s zQ2VhIo7Xd&C;D(x zXI6;rf>aq-X!7zuDol`~f8QpSk*(PBV?=NhZ6HO50}=HyILo=mjg7nc?}abRX6{vj zCd#3j(8m&1a3poBA*2xMhLNY5DnH6R&A-I0!O~v+V}6+z(tdrOUlzQyU!UO@a6OM&&V5%FbH1PfB~UUY2-X`wy8OH&%DhEm6*0%b%^NY{u? zL*+*GdcUx)l49~vn!*$%l65-k{5AnnN3mmEUS=gnkTj{Cq@KFoPg*P;M=qAQo+M-U za)kGaCpq(lB|D#Jq_c3tkXtv%;#_8e2HA=SvUFov`EyGD%s(rhxUAfz_4Gimo`M2G zg7x%T^m{JX^=HBch%?#%k(`~wY`cdd`(o{Yz+bWdA*E6iXK4(6r`Q(CHu^v6ydw<- zAk8e3)FP(`Uyf>Y6w*iZkPn16^-LS2Xl=c95sWWqLXuNVvw8v#H^n9fK`j}Qgufcx zZN|q@!K`^p(gYPr64Dgz>-+*_;5j_tf6<-^N|ZBWG&2I7*frDco!QG$2SnNk_TBicqzI7f<-=}}>M!W(A_^U?JWI>2$OZazw#1|hk$`od2JP?(Rj z7F1+mt(be)SdryZ8lPV2&49;7%&MnI^g_3-1q_lg0oK&Sl1x8V#8|)A`b-%NNQtZs;$ zCiHo*4W2wBAgED*zmI}%+PC@*lk#07WQ%IwQrb5(p-P}9#UjmNg+Y_I{qNEoPFWO~ zu?!=P1-uWl48O$6k1)%1V>0y+7)^pP9B0z!K;R7XY-GYyN$&1Ikpe}UyrVuvJ}7=? z_As9UhT1^Y7Z>B@l06JSg`q+QU0)mXgBu|cowW)+HI{HaNC75?bHfs@(bcDU$Oq5+(yT z$c4fLI=VQhD7lktVWFl&rR`8zK*ssmIvD^kF4R*?a7C~_npk2h zT^&dzH#zgyy&6fn6DJtxl0RZ=7mGj=Qqbt*5fpA0O^(;`-|)paGGS~UOkWTmbA1%$ zqHKY}y~MCyARzX)xQt;4VogvjELEKY77&tT);VA?NJ)yY;7h>?cIU(DN?pK{ zsVX&2V|8XaKpN2X(`u)Zd>1SeQweO599N6Gq}?_0cL@Hw&}2*|feS{V{Al2Z5jgte zTRB75;^{Jd=CcKOIw?3eq2I8VDLzbET9D=Dn5XEO?`evOC1==NFBK1;vwU`Yn|=Wq zj{jlBm_&@t9$lAw<(D82v!q(;XDvgHr$s#ne54d0HAz(VgOTWg#)bnJMd%PUQAu|o zsUq48U#aPoB}rg9#q&bva@(v}P_Ty7$Q&TcEl>)#8);#ALJLB;kujvD7PeHjK&fQ$ z@EBGmv>@|EipzplFo!z?V7SBU6=1+lFpaEj6PGO*0y1a%P(TpMYTPOZxMa$ZtwaDS zehd@4fRD9YT$zNSW%Y3SmbIqZd(@v(_egh?^RyF2lm)&X{AJ)Q3eqt1ikUskQD9yS z&a;}(Qte9!wv{--b?+vcxf1|I6GXoC%AUcd!P?>->* zW1Pm6Tj6SCHiHF6Qe^X8xv2^)sdUwWn2D(n?dt1W(qvX%!be&8I53FBLk0#By>=dw z4tR)#Qi3(aIQiK?v*6OIu!m;o?zlZfX~`ZU7>3<4WDmj7;3AD7TL^v84hO@Yk>LF;>^>4*(h zQ}-*By3~Uxh3%M03y&6FCgCeT!(dUSqd37W?aXGV-HMAc8>o21qD$6UN#}qJ9iPLb z*#ga5L%fVjd>Bo2RdIDFlu zoOv8EdXVQJiLJ2%X{Gfd!%&F=hbO8cIcG06bQj)*Gl9OMWpzTaAKf`K)H5+db;77U ztCL=WVh1pGM_WY31;1AYzxe`WE`BS%(Lnqyx)ED<*xWyxEQqEbfu@saA*44%&45lw zGeA)kRm-xMj`Y={JI*3U89p*AVDv^u=;}@Ye)%q@+qgkP8-K zGz(QWEPfoI26h?DFp#An)LlVPZEo)A1J@CnJs^Y*!+51A;1Dx?2j{Si8N}D z%*rxfL*T_4B!<=v@*2o5&U&^MsOwA(dN;Z?HK_mwbQ^$C(5(TZ>7Z~xpnqxacp_Rl zSr@zk5Dez9sVe|NxPf~HK$!IlN(m4$duf^=GGGu2fkXj$F#3ctj2BKfBX?nV8M>h2 zbB~`Fgjp8^0@H(ydJF+;-46mO<`@;yhC8R>hEbZtQqWH>bg%?xI+{^0#gReN`#e@= zG2~M8xh|{~@fXicPc33=i98S_RX9OGm!c6`6bJbSK9>CR;+$OtG&Of{Df09d8g=OjMN+i4D_u))NTFb=$od<Y@K(Af5RqamJd#iW>21Nn zZ2KNbOYhW1`n=97lYD;<4UzqX?vb~><`+23{#v4cYHRslC%5<0JiU<+YF;O#I@7sZ z65U1#=c?xqn?s?WZg}@~c{s^G@u7#%!2B`9UY7x=ZbomMxxgOA`aGoowjOr7OPx3I zqkEEn1n}gUI%$X7hFvE#^yUxKQ0Iag8gYzqX0f@%43gFpYSUzuH%DQsTRdTB8aH?J z`i1oc*;Fy?4Gc3-DGYw3Pqit!#7@c9CE0f)(Eo~nvRVM8vi%7y(<4pcIe|gT%)G$C zZVI<_^7daFBW`IO1dfW?+w+%-SQ^g)!$6x$jy$y{iQPN$lv-^gyYF7`Ce70$*CZ~- z`6}*1)Q?s}ijv#^3DZo4YC&O9!wvSQVCLa7PB3?3jY=X?s0&7Dc&2HUe~RMYH!wcEIfbfxO|=}Off(Uqz{&Q-|db!JQ5KM{*G z4r<`z@p^g&IrGd;rrXE0J<)9EkCXNn;2ZV)5jtXKO_FaBQ@9?!P*4Oube}CbD!r7{ z1I^94=FmzJ(8>J4^bz$Z(CeZ4Y28OLWwQo<(X63Ti#cebZSvq(Fe|1`>u&2el3M`l z(hTMg!Vvr)lKe0rW;HEABo5@E!oG`7s~N|v7KT42cD$3`^Y}c%P{NoO%VH?$&T13* z*jx7aGwwQff!tM=gtM}x0x%*YCo=eFATn{+QI4x+-A-icM`p7sGIFATM~f%|crjto zkLGJvUa`LS>izq!Q96L*^_4KZfY(=QDiQj^KjHOO$LrbalhYy`*efSX8^ipZu3HY) z{x6-E~#@ex_M?{J-Q6eCZ*vz{_BPI@BC8g@a=?Ci!f^0S&XwLIUuqEJaR8G}Dt}9i) zlB)!A_dWPJE@clM^RN88kQEn@c!jpO8NM@Q)WK0@lgpRQuf{oR3so+`aP)U zQOIemE*x9wcwJf3J$XZQZKp1P#J|#=*po}3Q3`}wGaljoKr*tBNKMwSMp_@d-{>!H zcHUy|Bcl9$Y#NhbD@qCZLekb5;4Z>YfTUzxQ;@&NdjItage-b_syQLAF6qEL78Ne) z15-NQA%adR@6vYTM-2tAtxw7M$gjDYz&nI?JHP% zyLjm#ax&0(*BI9^@|_C(Hvb9zdIsY#rO-XB_581p{BufntLOLf0?LkVk8+ECquW<; z3#mWSxZe1}PwQv?>Bay~TU>fdUlK*Yt7~7etLevIYm5kDrDaqJ;{5|2@nl+H9uYXr zmvn#9XbEg<=HH1i`|Qp$cq$HJ?k%SCbR9n`jPb>g9fjgorfldPlnt>|6p3;v`I|~! zWD-KDJLT%fCH<)J^XBigyb>3582K^G>;+i((f{QI$O(^T0WuN%aZ)`c44-Q3EPqd0 z!W=P92DKkWE+9^Q9d3qB!}V<`7E*m5+z#~M_s^%sA>f9{D{_Lqv;8^4St)4ONf7yb z`;b+5K!t{fgR*s%8AcAuaAuUXFw^)L=a9ap`WR}Vl?fkIW>V3#GpmmmqN_w4O3suq zR|#cft`f?|TqTrIyG>+}xzSZ3p2pxJp^Jx}GTgY zX&T~tq9=M63+H0=m59}OsRX9I>q^z1(^cBLuF~FhrRqP| zm8!qYHLo_BzH$bY2qIWaP zvNhMpYvmdteV?lX75*-DL*GYwUaYQuC(F>UXc8g#Vx;ToyTw(wKA7~#quf_Nne=w+_gfNYuqP7f;|6*tuz~~jx61HcDhywP z<<@7^{#-DHjr^{zkkIex3h8`KS4ioPbcJ-jsB1KQKg|!5nzR+F95sBYS}sdfZH6yZ z4;j8xT{3(-5m0|m6{F$J3^Xa6i8DcydLB<71iPXp1zJ>UQhH}xlTzsB zJ6=HdptTN}2QBM9t@bIE!{5&$D%68)#srHw=1A!>XCfIju={$pJvbBLrpCZ&#uzxw z7z3vn?Nh2|jFHofF>;#uJ(YXaV&}0%c#unx*1!R&2#?fY@M`Xfc0g*bB%PcDz*k|h zq==CM4oD*f9FRr|I3SG_a6lR<;D9tzzyT>zFeEj4%XXc^0m;M!2joKM_mlQ#nZG#Z z!og4)^WPE&1EZ1wZeD(b$r&wFH;9m$83qi9IQzy7+XFpJ#oRpcxSK z8K-b>Xkah|DL80VH7XK2wqM59+xEfMNsVMLXcE$@*6K6)0WLh!gk+ga4T$1hL&Vwfkt++%LIs~h$WbZ4w z<@UawiLbgvuV3xL>enx}3J!+9eldf=_Sdf-dUeVCr_y$zFU#}?&}RDUD%0PtZu*lz zB0)rw&q5SP;7)WMv-7UPiGBV(+TZPLgvEs7*?s(}=1N`*uH+PDR0sjPFjw-f;7Xnk zuHa8{V>ujC$ut_)tJ9^M`OxvhbrB6fSqMa&4h{r`)hvQHS1L}SFTdtj(&hK39k zp><)X=xNDNc~vk}xDFXAKFtM(7Py0JLwI+L{3}f zh(g=H!}UstPiZ;)e1xBVt5Thg_a71on$kPS6vC8$mbCwT_+4^IeHL|?W)LJJD#SL7YBIHWr7h?RtjF9-a8 z0&|RF61o!EiV!4e=tT&!NJIx`h{YN1Jl;UD=l9u0NW9+1uu0W`Asy~~n%VZ%B}%I< zR@ZUjrc#GD9|)D@gR?IYy?~-8*A8n6VYO6{Nvj zh#}rb%!e7cw@>s&!8HPhDio`PVRmJ)+i_(Z`G?;u%E)&?4v4A`Ym0-V{bArD?6ce& z^Y+l3r9ar!^y;t5g9G|%wPJle`Km&)ois8fDGvpTz?2FUx&N!=!x&RK2Z}tkgd)FP zjUp=E?EKFWMcyz8MQ&Lb5z~v_?XeUb1#jKY2z#=qS9-$yaORiWn&0=AbevNdx__ae z;nS3*Oe&KsW!I%-1O~HL7nXDW**EwGm!4ED^FPbd&nc-^h{Q}jp-P`}i-nqcbRn_-?_MVyZnwgV1CnpdHk9`J&6O@+^K&dtR*Z?Ua z;HB1UZ+q#r?X`(*ky5p7fCB^sd__c!f{F?T(P&VVsHg!^QL#ovjfyqC@f{Tv74?39 z|NmNh_RN_R!o$zKpU>?lpPaqd+H2P1zy9y_Uu%VGcc-?I_Hcfke#RC#Mxc#%?#A2I z#De2CvFXX&^T84yRP(X7^Qbp(20?nMZXvK*7$AT|L#M;;+_kYA_TRx3rPkxB+Ha&6!J$UvHf6WO5+OeveShnpXOl6Mk0gbbKM2AKA7Pv(K&~~K>ZoN}a=w^qW(9Jh_J}A1`HkfXdJ%DbM zEmvegPLXct#ct5dwm~$*@3ulw+9$sya(QT|>z@=V^w5xtiC!9_YRB8)9Ahf6gG!5J z$~VQ^E%PW~jATvucDp?0i^R8R!A}6*z+q-aP5c!K8%APbDSn4ZY4b|>W>>R{vv2(Cei=ESIzGCMlo7WW- z%qHrH1{Ck1;OJp`C?eOx9CstvAH*E{#5zT3Eh9#*Ysv}JjQTY8rCw!fqCuk^v(d>c zQSOwf9!?mh>u*1^g>w@}Afd&D9$Be4^Flka2z%D7O;3w~29rlSr-5VIE+`y_;xJOk z`HRGBzf(>h5No@RuxRT33+u14w#oC*^pMQsT2GeS%D8*h{u#9VWbFZ_)E%~TXvO6< zy7h-!gD%v3ms!E}`^zNuLoiw}9M4_3d3%u)OAi5X^cVs*GnoBu*ARRH^VsqJUf@NiEuZD=Bxv59pc_nt#L!j$S$WXs{xUhO% zoeio(P-07p#Lgk3UlFtbi|*@WUCDn>&>z;!v2=8q>KqKW2OkaUg~3gb&(vu&W1zG}TqU%K|N$V?&N zS_2K1+5fG;z|F#Z)>1r7P$^865E!Tw_7GMstWSMLNg!b!6`q@G&87DnHyCg~W+Xz1 zfE{xEQ>o7H*t3yeF^8WC4V%+Dh7k&UgB|N&h-%(IAi??sJq+|F_hGmU0p4k8cG+ip z)631fW}n-#soVyVpSx^w`A*weJW&!qR;WMb6ey@_Ygd)X(4qaFz2v7moa|bO-hTX0 zyYRIOMqE;dI}T`mfrjB{yWQ}p6PFpBP@h)gf?K)0vb8KWwZc_I;q*9@!&=qdLt(vPNGINK z(906-7E*i;{^_?A&Sb?P73&SkUfFu2Ig=46|H`*P%MFj>^siZNGg$ldmfR+{zTdBV z%7$>9)Va`Le`7bWq8{t7m5;EoFl8t=A`-Gd#tKfNnTT1>tn`s*X!DUjxT4+61y?Bowmx+N?cP z^OwstIFqhe>1O$FP0wQ=mq@4rVdNK@@9?ft&WqfeSjs`0wDkrSaz#WU709mg^AaH+ zEf^67X+$rkaZA6jLJLBzA>v=f+`QI_;6NnNW#T6H(clFira@8e{TAhF z@RhV+o02uk!6W+mhiE`E)7wD*a>PK*%vK`+EC5SO3trO-=#xnBv-0%l`C_z4$(H(B91yqHkBv|N;w^ap!Av|`?cQ$LFu)| zFTxP{sBJC$*WjG3HYdWj^T96DTP<}dDdVS>dV$Q9fMB-`9nBgTKiFxKf|utTUT(nV zc8P50`;sEF-QBw;s#G7`WlAd1=yUUSc&8CkkKPw=sLyu#PBk zp0cRRQ^be3FJ^7{(r&-MWD5WrWQ~PaB5D+FskL8?2XO;u<)980c{!`2`DQ~w1SV6} zFW0}X^E1Q-T%Hzky${b_u2ZwcoG&ETQxOecLeUEj+G^{fAnb%?aekKTAsyrb zH4EJpif5Cqx=3Kp$y!9`W34Ze#s`8f+J2A85hHGvYP8B?t~n;z01%2XWr|2Q#g-m5 zOI~x=f>{RY1|GWliwC+0BsMjP6(7`ZcJpPa4pbgz=F?@^qae6mI7C)quN)Z*Bv-XA z(>hG=v3Q&8N(mV`8}*s9HmKtSE4i{YlZ_J@gZ{9F=mafWbuW|{53ve5Ms_(P>?&>sWx@Qw;sZcQaZVR+>_qP|J`wXCqbiv9817--V^7iK0tg_rtA{ z%@;X)MLhN4_Cw-|g)nyC75leLBqzaWx}7$4Xx`p~l|pHQrWit_t#wKBTv5N~HwHVD zS$;qT?do?Vjf_3|9<>CZFTJ*rLbO2)B--&UMcIJ?@P$=!8I#b-$+`nVCnq;H&DJln z-8LKbbz-BRBdmfeTMx4{Y}pq6Ow$^5+)({2Boh}+h51)Z#X%atV7a`Jl>`eD=#$HR zx_c0%>@H1Fqg|NxdB!ENB8w>t+cJxJa-cA-4o!O{d0#&UHori_I$&rw8wSiQpx{d2 zj3u3uA{ulVBd99@3uS~jU`d!y&&DfWuLVlmV$D_FVq-R`X85D^Qp!v>85N2HiwtHE z#vrB3Os&8d<(Jr6%#Un@sJneU4DRosOE{c7=d=6xT7)D-{t@X|`&iIjFaYW1OuEAk z5RIy+pS46=jDS+b#sKqP-HXW6Pww&H9-z8Ijd+ZRY(WX4WgMiWH59#H&Oo(Y+~ciw zRBa14Jrj{dj4SWIxD6n~s_dIts=^co9WM^DUiK=10Dh6##&!a|0T@s}S21_Z=W;r& zEM~Liu0?5vsCB+CaKg3vWS#4bhX|jckW(On4}~Kg&D;cpl)yyu&n4Tr%j|;+Upk|T zoepVv!VP60Mm54tYr~B8^+0BMHM1zie>7=0`p7> z8I+@a2~i1yg<#GStYc?$Jf(ybVS&my?47p77O_f_~s-Y3m>2p{jrFW6%I~8gdc1Rh+Bp^4U;yUToi9Hjy6NcWJP- z<%1x6FCH(eYza*r7YlwolW)3f$Bv*avCHL+{7yHYI+#z0wBLE^2vYwRc}Fk%`nG(s z`!YsnqXYfTLKEXA#vK>no>;zJQw6C}=AJ8zdz!`XoC}@7j;7AFyx}~HDFYLo3Bjg} zsfj0Xc&x6D1H(YRX8X%*?`+rsXbkViCav?w+VJ=dH^#yq(-qYf(kOJ*fo(q*rPwDJ zCsNB#GTlRHzeFuCztFNVyv=Yj8Ay?Z*%#B}^d*Kq$mM2VjOpnM)Hz=KX1j9+KnfVR zwzM73s<8Ddt4&`f6loOCw$N{^2l~RL*~XfLa|VFW^{H zp>UBiL2$adRb=cH>@v%EDI0=pq?URWDX-s>uP138x73?SS!XSEJt^y;r93*vx`4OO z1(eyB>diJN0!M<#Z-*UG#LHdw(*A}({#ob8N4 zt$nnyDGPu&kq>=Zw{Es`>}I&qxaxq_H8IR0Her$1;ru#;x|Cvbo&KBNby&C*TjS=N zX48vo_r=E6zsV+AB%6q0+?I#7U;LXc2+M>)3T}6_tuZoOqMlAEYlp zCC7osIypQ{lf%DXU!a6sx`w7E?V_GDUt_?^F`Ha?Bf&5TmcfG*&nI_}Qg`>1bH&m; zZWgFQZ9Mfov(+4gSh!9tTh&?An&qRo8Elxa+k&Yo3;rvcL_aO9(s+LkT(B9!(~ z7PW1$wMtBB|5B<=U(BTw?fUo|^-|}VNH@@XcL~$ylwjIeG)^WACuHG*DLw|~!M&M1 zSvL8No-Cu#c$ca*x}6S)+SCDsNt#%e)P_jf#cxfUUY(8gWI%O=ya+z$QjY_v#{M#m zHmYv7eUczGa98hA-I@P#lm(s93RTqgqcrQb5`TwC3#x2;B%8#I)Mn!GSx0344%59{IDUkr06RL-eWZLQ-t?PRry!DX`c;76D%vr3m zP8G!S-`<)w*EI4^usMgAkG-&-o)t8kV2YuynEj>jBiCyd$%BMGIcyQa=#^{o-&anu zW0FB-sm(|XFQ{Odbz28~Qw3%G6z>eMmsm3Agr&JU7Rkj;i6vHoO z-X+1o*gVLPmINY7O`oqWvHt~&yC|#%W`4XSKWu?f|L`_ZRdftKx=lL3Z=Hd z{&%gEQevJ`>L+LtsJF89BnB9EtGSOsdjV{?k}Tk!@wO7KcFouAz1Z!ND3tHgg9dL- z4{<=sFyZFEM`=V=m2K4I+B5h^&ygoC*dEg6nNH23bpZ%6wW)M!4(M9dI#cgwAvRlD zIKV?PZhmH8XgE_Hsqi$u28jPX6 zuAPvHiT}a8r!_2clmQ+i=mI?2NCMl*TNA`FvH*7jjyIn!qg`<{LrqpDg8leJS%bqE zk1`0k&%?Z-eKe~ACK7;p`y$BQ))C!>UUOf#7F0uz!H%*od>1BpS3&`(UYj5Kb9Z>* z_||&EGt3?S47?RSrde@uwlv9w8rU0Kx-fd3{0dqkSQuW3t&Qca#SJ)=Xl+Pru-+v| zZhBA}G;;zS5{lKO0$4gPSh(QuE_rLr>157&+A_@!Ac%c-RRGH$h{C4Th4KSXSlTBI z6#+i+#H2rBtgMTe!NP$_+U8}7Tjm&Qd8_GBP z!Ba5qZB(vx5jAF=v8KX#Rh(S_HWCFsHz4`o^7P`5Dm%cJExl zu>p*;b$-~r-oP!xLK6d2SuA>RhMXZZldLVgz&~Aw>&;P~Q<3AQKAlZo%zo)?@-X}S zRC7}>`@yqM8K&K)f3tRu=zcJt>-H~&;l`vbR1>)K!Q;hTp2%=uC^2NL0D@Z_PhrNm6x~r45ZRsSZl_v`E7g6^u2RAQ zZ0hthCW{HM*<{D1q>{1HPMBJeRQr7eBWc;?>f+F8bp@>M09v`nu3N9!b?ddT8ewFh z6FA_J2k_rQZZf;lr+z$&U(D4315fk&U-=0GWO|MN#SQ}5aJhYPGIT{4jvfS9Pq(Flp<(b6!nIc&HL-)s+t|3djG?I-OIq*8U8Pc`p$R%fl5 z0UIsLI*|X<62UqU?=bryxYmQ{`V*P~kZNXjQE46RH8-R8EV2b+v0`cVro{B>J$??L|~Uf8ptbfv@LE$ich*MiH5m3e@uiZ zzoZ4}7p4U%zgL7P@?uL0z=w`!Ya^#+3kr)?wf4A^uy_+@%mxjN3=S zL0dvx2{*=|;io9X(xlVUIwGNLFZOFTIQ~v7`st!Bv<(X>>#88FCz)by*X@R-$tUdo z(lu(fF^aY%k+Yw!oh*7YQv{RL7OlO=0`^nb)kq}^?rMbV!TxpDM_K7jdqtXHGEb!K z!ZyS~B>M1OmCyqiXm$vMG_nyy19VSpN~MvE*@5-u5eZP5hQ+D@cX;s`9ZvUPhN<~u zfzS+YVYzwIjA*6Vl*t(`2(lCm)x?kIIo|N2F0X=8h{G@nH`I|J>h3xc(=zSH_>cu9 zh?V|XqjV8%e)mltx}ER*c6hmx!x!4CDnxb1Pj|+bZSm9ApN2AbhRE-H=c_;Dzxwts zpz24pA5R6{S73#R_WR~7xFEg~3}PYBTi7$eV1zVRQ>Al@9Ij!j?w8-Bug0&8=A2g< zQ@cSOSku#3songAv47pZls`}UO_q5Uo`Xv*319b`Uuy4pS=kbKyCjKA4GI6E+8KC8 zTqJg{9|Z!>DCd`XM#u+u2p*TFSE_!2*EqWHlt>d*FHkz%`1yzE>OxI+!5#Y+pMz#3 zf;t40$!XvGQXuN5?i?J&huZ5GORgwwQk_k=8 z1d1u-OV`Om`6HBN^Cv&;3&jifJ!59#DrxEV-tY_CHGz?7{1?3d{zu5Lt6dgyCjNy> zBJwYDd|Cq87c~%LT;@v_$1+QX-Em3=42ugXAfZ{y$5KGBL*4%xEbBrlNbvF2?Vf| zQU<|WH#E!mYS-p%MVe=*4{1CV0OE*gh&{wrq1p>#Qi@`dHoyW9dAQae1s4|uDiM^!50Fxbn%+U^ zAP*O_38PDUG^4Jn&}Z)tP>!4ccjfN3(`n7i<}(-k5THW1Fv>1~0&!yuhH3j~ZsR}* z#Yw&{7AROYmq)k4i)vY&Ec8%%xaR=*#v@kYW*py%voafuxwoY#ZCso$Pug*&YlMPL0*WzeRnL zY!68?qAE^k?O|AF&O4{saSN7Ypu<>9B&Y_d#!kCzC|Ek;ze;);y-D3lrtGZ8oFJRca1vt>K-`xd``G)<2=h241&Z8wzjQ`Xnm%18h z9<}GF{Y7n%%bno2J?B}#y~@WHAL4|j^#(*#xwi|SgxD)g-O1k1^Oy~h=pb`hYaHO5 z*t_ALm2>Q)JZl~3LWIL;g@AAv@f^R1*!`fa3QRyXEFDeo-?o?G&k6@Uwr>;@h4*Qn ztB83m%$djYmTj7?wC`43+xUnIaJrXs56A4*b&u!!&-Hz$z8gL0Je2Awok{JI#_OhE zdU3KwPa}8qRMfU*oe4zqWX8)Vd#Rn5oB?CYulMC`cJ(M|&ZLcCTn_&R##iWsO6?zI z3d|89a8L|>Q&w3V%Cgzj!a}f>l|K)r_^!Jpgp z7-IN=Q5~Y)hKSLy9d(FS6<5Hr%?Q3J<%QUYjOdK6@Rz5^#vI)7sL9e5}72os%&e0g{kva3l5B>^wJ_PTEFva{A_~oVc zHxJMh!xD62S^i73%7R(wxZ*F9D`v2(E8}#=fzTP=r6U%;#4R%VmrsF1u6q?K%T&pI z|Cy^{vQzVnvA(bcTaiQypmX8_jZT~-;`?ck0gLx_hMh{&)$Ai`74qD4%&MT_t*#eS3}kgb2n zjPA4adgP(6f2i9OG~o0FHGsd;FnTnN`9QP)S1 zAW9qYPD^~Jz1Hg`Zvp{d!=G#HBo1#DTz@dq_dyUdW~nLdq*Q?6~C zqpnfyqqQ^inzfz%v&qxYgeS6n)@JFZwH-oFPeY@cICYscn+x7|Gg@S>Q>APJ=YF#= zmSvs&vi;BQWZ8aC&Gz+-eY3sK&d5D&)7jLp?^CH^-&2>_Hk<;+xRDiJ0*-AQ+EEAFd z2Simh+czj>K}lNxJ?_UCBYN;OM#`BPyoy^fBkhkT0;E2$uZ?5&1m|DLb!9QkmORg< z0^n05EQM9`ONz{5EiBx9ZJxkVaKWoovKy-Kdi$X({6%eVE;38CU0-CDYGdo2Df^1d z4ckK$vdd8p>iKqF_wml^{n{FB(wgGuLCfcsI>)A;|;I#k**@s8f7F?Q;i^_^d9_Fo(!^)>wHa zAFTF@-L`|N(tA8(b05^*LUaY(wdySBWedLOY!9`h`?utqL*tuHHBww!IPE-qSbB&k ziLRM9%acZC?8&GcFP9z~xg2W2BS&d3i)wGPE1z6{+320yt-{e$7Ye7rQ%A!CTOi!H z#$>JAx>YQAF$~5||K5}1*78?+W}8e__NJPPWfHWsqp*Miqc4Vx+~fP;VI+X6EkJ4D zTHApYX{y^o9X?6#U2K5m%>Y|02Ki*9D`<-L9nhwrIG`0h-P0=3vH%)gSu()dv%M+; zw91BrPfA}|0eZI!3(%#)5zq^@z>rhy_B3nIk6y4XJOF`>YZppjqYl8{VK&BT#>1hrXVmVj|CmE7=-mzu?V`XQ(obSR+TM30Rr@4GZ`QERYqKu+zZ4An2EdFRZ|DdOrii^|Ud>C7Li+k2PUSRuOi? zdwIf^mL`l55G1b&qnIX4@f=)%#F;rjiQj9&mSo%!87538DKa-CC{Q#t@eeo6#QaaAAh$GwrCnUsJ#oom$8`$-#=tAxw30S3@B@DgVAC2t6 zuFLkLs^r8A25;O~?a~mG+4E#n%}Oq(4Ku?@N!j8x@D<4R#AVr@s|;;r9P;5( zs&~nkbI;6BX1k|EWH5*38OLg{&vYDM98+kJVGK5DIsOJJ@e)U+o5Ki5Z$>}-2t^FR zhVrJC9~oU-9@6m#t^9VsCdEgMu{&NecF{;BwH5-aIJ;MTDL~oD@OB~R@mI&SiECh~jAOMVF3Y?O7 z76zKORFcHn#DZi-?#1tN!AR-!v@~~Guj`>>nH9fn$5G%TLi>%~LzA{1nXk-ygrd^Z zBhp@1xe|;XT=VD3kRu>xH30Gk6pU=f32@i$Z=s6;4y}6(AT18&3c40EFqE~|AmF-F z&9o4Bnk|<67!zMvisB^2)r?uxUV=M#r=mLJ$hZCWX5=bM_M(m*N@$s1i7tuIdv~qc z76+>WcB+F{+*C823!@F|RMA@pD70A($WG|7b8Sl?8jlZZAPwYiyoC@}@xWeruxm1) zIOEo#_G*%pdlLG{;o~<`weAJl1v&85h#=HR{FET2kpL_l2>R2~AG3m*dK)jC2qyvn zr={-SEFEu*rlX^y)udh-t+Bp~0z0BJa_#6O-ng5pqic8DKTWJAbXcNSEY2bU8~Gy8 z4pXqLgw$XCM!!hJAMrE{ku$QoeRax|$_K%MIO#(xtRdvX&&~;aks(Sg`Y^vav}1O3 z)=EFx@2q^kf634NQ}Yz?yOeK7cvW1=qz2X-_>i{g_JScrsTH`?kxzwl~!>bRhG_JWW8BNbk lA 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

p*YVDSE(KZrf3MEx&#KX82pj-+KPE>DNa7 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 GL-4=oCBW$b diff --git a/substrate/srml/balances/src/lib.rs b/substrate/srml/balances/src/lib.rs index ba771662e4..f945a5ee2e 100644 --- a/substrate/srml/balances/src/lib.rs +++ b/substrate/srml/balances/src/lib.rs @@ -273,7 +273,7 @@ decl_storage! { } /// Whatever happened about the hint given when creating the new account. -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Debug))] #[derive(Encode, Decode, PartialEq, Eq, Clone, Copy)] pub enum NewAccountOutcome { NoHint, diff --git a/substrate/srml/balances/src/mock.rs b/substrate/srml/balances/src/mock.rs index b3355636b3..9d4b72a0d8 100644 --- a/substrate/srml/balances/src/mock.rs +++ b/substrate/srml/balances/src/mock.rs @@ -29,7 +29,7 @@ impl_outer_origin!{ } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. -#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] +#[derive(Clone, PartialEq, Eq, Debug)] pub struct Runtime; impl system::Trait for Runtime { type Origin = Origin; diff --git a/substrate/srml/consensus/src/lib.rs b/substrate/srml/consensus/src/lib.rs index 302d7a2b35..b39977a476 100644 --- a/substrate/srml/consensus/src/lib.rs +++ b/substrate/srml/consensus/src/lib.rs @@ -75,7 +75,7 @@ pub type Log = RawLog< >; /// A logs in this module. -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] #[derive(Encode, Decode, PartialEq, Eq, Clone)] pub enum RawLog { /// Authorities set has been changed. Contains the new set of authorities. diff --git a/substrate/srml/consensus/src/mock.rs b/substrate/srml/consensus/src/mock.rs index 88eb669a84..268b54432d 100644 --- a/substrate/srml/consensus/src/mock.rs +++ b/substrate/srml/consensus/src/mock.rs @@ -28,7 +28,7 @@ impl_outer_origin!{ } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. -#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] +#[derive(Clone, PartialEq, Eq, Debug)] pub struct Test; impl Trait for Test { const NOTE_OFFLINE_POSITION: u32 = 1; diff --git a/substrate/srml/council/src/lib.rs b/substrate/srml/council/src/lib.rs index 2ea0def3a5..629b0ed9e1 100644 --- a/substrate/srml/council/src/lib.rs +++ b/substrate/srml/council/src/lib.rs @@ -75,7 +75,7 @@ mod tests { } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. - #[derive(Clone, Eq, PartialEq, Debug, Serialize, Deserialize)] + #[derive(Clone, Eq, PartialEq, Debug)] pub struct Test; impl system::Trait for Test { type Origin = Origin; diff --git a/substrate/srml/democracy/src/lib.rs b/substrate/srml/democracy/src/lib.rs index d2d2b6e4f9..6ea4060492 100644 --- a/substrate/srml/democracy/src/lib.rs +++ b/substrate/srml/democracy/src/lib.rs @@ -322,7 +322,7 @@ mod tests { } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. - #[derive(Clone, Eq, PartialEq, Debug, Serialize, Deserialize)] + #[derive(Clone, Eq, PartialEq, Debug)] pub struct Test; impl system::Trait for Test { type Origin = Origin; diff --git a/substrate/srml/grandpa/Cargo.toml b/substrate/srml/grandpa/Cargo.toml new file mode 100644 index 0000000000..60c576895e --- /dev/null +++ b/substrate/srml/grandpa/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "srml-grandpa" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +hex-literal = "0.1.0" +serde = { version = "1.0", default-features = false } +serde_derive = { version = "1.0", optional = true } +parity-codec = { version = "2.1", default-features = false } +parity-codec-derive = { version = "2.1", default-features = false } +substrate-primitives = { path = "../../core/primitives", default-features = false } +substrate-finality-grandpa-primitives = { path = "../../core/finality-grandpa/primitives", default-features = false } +sr-std = { path = "../../core/sr-std", default-features = false } +sr-io = { path = "../../core/sr-io", default-features = false } +sr-primitives = { path = "../../core/sr-primitives", default-features = false } +srml-support = { path = "../support", default-features = false } +srml-system = { path = "../system", default-features = false } +srml-session = { path = "../session", default-features = false } + +[features] +default = ["std"] +std = [ + "serde/std", + "serde_derive", + "parity-codec/std", + "substrate-primitives/std", + "substrate-finality-grandpa-primitives/std", + "sr-std/std", + "sr-io/std", + "srml-support/std", + "sr-primitives/std", + "srml-system/std", + "srml-session/std", +] diff --git a/substrate/srml/grandpa/src/lib.rs b/substrate/srml/grandpa/src/lib.rs new file mode 100644 index 0000000000..8173b9a725 --- /dev/null +++ b/substrate/srml/grandpa/src/lib.rs @@ -0,0 +1,303 @@ +// Copyright 2017-2018 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! GRANDPA Consensus module for runtime. +//! +//! This manages the GRANDPA authority set ready for the native code. +//! These authorities are only for GRANDPA finality, not for consensus overall. +//! +//! In the future, it will also handle misbehavior reports, and on-chain +//! finality notifications. +//! +//! For full integration with GRANDPA, the `GrandpaApi` should be implemented. +//! The necessary items are re-exported via the `fg_primitives` crate. + +#![cfg_attr(not(feature = "std"), no_std)] + +#[allow(unused_imports)] +#[macro_use] +extern crate sr_std as rstd; + +#[macro_use] +extern crate srml_support as runtime_support; + +#[cfg(feature = "std")] +#[macro_use] +extern crate serde_derive; + +extern crate parity_codec; +#[macro_use] +extern crate parity_codec_derive; + +extern crate sr_primitives as primitives; +extern crate parity_codec as codec; +extern crate srml_system as system; +extern crate srml_session as session; +extern crate substrate_primitives; + +#[cfg(test)] +extern crate sr_io as runtime_io; + +// re-export since this is necessary for `impl_apis` in runtime. +pub extern crate substrate_finality_grandpa_primitives as fg_primitives; + +use rstd::prelude::*; +use fg_primitives::ScheduledChange; +use runtime_support::Parameter; +use runtime_support::dispatch::Result; +use runtime_support::storage::StorageValue; +use runtime_support::storage::unhashed::StorageVec; +use primitives::traits::{CurrentHeight, Convert}; +use substrate_primitives::AuthorityId; +use system::ensure_signed; + +#[cfg(feature = "std")] +use primitives::traits::MaybeSerializeDebug; + +#[cfg(not(feature = "std"))] +use primitives::traits::MaybeSerializeDebugButNotDeserialize; + +mod mock; +mod tests; + +struct AuthorityStorageVec(rstd::marker::PhantomData); +impl StorageVec for AuthorityStorageVec { + type Item = (S, u64); + const PREFIX: &'static [u8] = ::fg_primitives::well_known_keys::AUTHORITY_PREFIX; +} + +/// The log type of this crate, projected from module trait type. +pub type Log = RawLog< + ::BlockNumber, + ::SessionKey, +>; + +/// Logs which can be scanned by GRANDPA for authorities change events. +pub trait GrandpaChangeSignal { + /// Try to cast the log entry as a contained signal. + fn as_signal(&self) -> Option>; +} + +/// A logs in this module. +#[cfg_attr(feature = "std", derive(Serialize, Debug))] +#[derive(Encode, Decode, PartialEq, Eq, Clone)] +pub enum RawLog { + /// Authorities set change has been signalled. Contains the new set of authorities + /// and the delay in blocks before applying. + AuthoritiesChangeSignal(N, Vec<(SessionKey, u64)>), +} + +impl RawLog { + /// Try to cast the log entry as a contained signal. + pub fn as_signal(&self) -> Option<(N, &[(SessionKey, u64)])> { + match *self { + RawLog::AuthoritiesChangeSignal(ref n, ref signal) => Some((n.clone(), signal)), + } + } +} + +impl GrandpaChangeSignal for RawLog + where N: Clone, SessionKey: Clone + Into, +{ + fn as_signal(&self) -> Option> { + RawLog::as_signal(self).map(|(delay, next_authorities)| ScheduledChange { + delay, + next_authorities: next_authorities.iter() + .cloned() + .map(|(k, w)| (k.into(), w)) + .collect(), + }) + } +} + +pub trait Trait: system::Trait { + /// Type for all log entries of this module. + type Log: From> + Into>; + + /// The session key type used by authorities. + #[cfg(not(feature = "std"))] + type SessionKey: Parameter + Default + MaybeSerializeDebugButNotDeserialize; + + /// The session key type used by authorities. + #[cfg(feature = "std")] + type SessionKey: Parameter + Default + MaybeSerializeDebug; + + /// The event type of this module. + type Event: From> + Into<::Event>; +} + +/// A stored pending change. +#[derive(Encode, Decode)] +pub struct StoredPendingChange { + /// The block number this was scheduled at. + pub scheduled_at: N, + /// The delay in blocks until it will be applied. + pub delay: N, + /// The next authority set. + pub next_authorities: Vec<(SessionKey, u64)>, +} + +/// GRANDPA events. +decl_event!( + pub enum Event where ::SessionKey { + /// New authority set has been applied. + NewAuthorities(Vec<(SessionKey, u64)>), + } +); + +decl_storage! { + trait Store for Module as GrandpaFinality { + // Pending change: (signalled at, scheduled change). + PendingChange get(pending_change): Option>; + } + add_extra_genesis { + config(authorities): Vec<(T::SessionKey, u64)>; + + build(|storage: &mut primitives::StorageMap, _: &mut primitives::ChildrenStorageMap, config: &GenesisConfig| { + use codec::{Encode, KeyedVec}; + + let auth_count = config.authorities.len() as u32; + config.authorities.iter().enumerate().for_each(|(i, v)| { + storage.insert((i as u32).to_keyed_vec( + ::fg_primitives::well_known_keys::AUTHORITY_PREFIX), + v.encode() + ); + }); + storage.insert( + ::fg_primitives::well_known_keys::AUTHORITY_COUNT.to_vec(), + auth_count.encode(), + ); + }); + } +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { + fn deposit_event() = default; + + /// Report some misbehaviour. + fn report_misbehavior(origin, _report: Vec) -> Result { + ensure_signed(origin)?; + // TODO: https://github.com/paritytech/substrate/issues/1112 + Ok(()) + } + + fn on_finalise(block_number: T::BlockNumber) { + if let Some(pending_change) = >::get() { + if block_number == pending_change.scheduled_at { + Self::deposit_log(RawLog::AuthoritiesChangeSignal( + pending_change.delay, + pending_change.next_authorities.clone(), + )); + } + + if block_number == pending_change.scheduled_at + pending_change.delay { + Self::deposit_event( + RawEvent::NewAuthorities(pending_change.next_authorities.clone()) + ); + >::set_items(pending_change.next_authorities); + >::kill(); + } + } + } + } +} + +impl Module { + /// Get the current set of authorities, along with their respective weights. + pub fn grandpa_authorities() -> Vec<(T::SessionKey, u64)> { + >::items() + } + + /// Schedule a change in the authorities. + /// + /// The change will be applied at the end of execution of the block + /// `in_blocks` after the current block. This value may be 0, in which + /// case the change is applied at the end of the current block. + /// + /// No change should be signalled while any change is pending. Returns + /// an error if a change is already pending. + pub fn schedule_change( + next_authorities: Vec<(T::SessionKey, u64)>, + in_blocks: T::BlockNumber, + ) -> Result { + if Self::pending_change().is_none() { + let scheduled_at = system::ChainContext::::default().current_height(); + >::put(StoredPendingChange { + delay: in_blocks, + scheduled_at, + next_authorities, + }); + + Ok(()) + } else { + Err("Attempt to signal GRANDPA change with one already pending.") + } + } + + /// Deposit one of this module's logs. + fn deposit_log(log: Log) { + >::deposit_log(::Log::from(log).into()); + } +} + +impl Module where AuthorityId: core::convert::From<::SessionKey> { + /// See if the digest contains any scheduled change. + pub fn scrape_digest_change(log: &Log) + -> Option> + { + as GrandpaChangeSignal>::as_signal(log) + } +} + +/// Helper for authorities being synchronized with the general session authorities. +/// +/// This is not the only way to manage an authority set for GRANDPA, but it is +/// a convenient one. When this is used, no other mechanism for altering authority +/// sets should be. +pub struct SyncedAuthorities(::rstd::marker::PhantomData); + +// TODO: remove when https://github.com/rust-lang/rust/issues/26925 is fixed +impl Default for SyncedAuthorities { + fn default() -> Self { + SyncedAuthorities(::rstd::marker::PhantomData) + } +} + +impl session::OnSessionChange for SyncedAuthorities where + T: Trait, + T: session::Trait, + ::ConvertAccountIdToSessionKey: Convert< + ::AccountId, + ::SessionKey, + >, +{ + fn on_session_change(_: X, _: bool) { + use primitives::traits::Zero; + + let next_authorities = >::validators() + .into_iter() + .map(T::ConvertAccountIdToSessionKey::convert) + .map(|key| (key, 1)) // evenly-weighted. + .collect::::SessionKey, u64)>>(); + + // instant changes + let last_authorities = >::grandpa_authorities(); + if next_authorities != last_authorities { + let _ = >::schedule_change(next_authorities, Zero::zero()); + } + } +} diff --git a/substrate/srml/grandpa/src/mock.rs b/substrate/srml/grandpa/src/mock.rs new file mode 100644 index 0000000000..d85085c9e0 --- /dev/null +++ b/substrate/srml/grandpa/src/mock.rs @@ -0,0 +1,79 @@ +// Copyright 2018 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Test utilities + +#![cfg(test)] + +use primitives::{BuildStorage, testing::{Digest, DigestItem, Header}}; +use primitives::generic::DigestItem as GenDigestItem; +use runtime_io; +use substrate_primitives::{H256, Blake2Hasher}; +use parity_codec::Encode; +use {system, GenesisConfig, Trait, Module, RawLog}; + +impl_outer_origin!{ + pub enum Origin for Test {} +} + +impl From> for DigestItem { + fn from(log: RawLog) -> DigestItem { + GenDigestItem::Other(log.encode()) + } +} + +// Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. +#[derive(Clone, PartialEq, Eq, Debug, Decode, Encode)] +pub struct Test; +impl Trait for Test { + type Log = DigestItem; + type SessionKey = u64; + type Event = TestEvent; +} +impl system::Trait for Test { + type Origin = Origin; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = ::primitives::traits::BlakeTwo256; + type Digest = Digest; + type AccountId = u64; + type Header = Header; + type Event = TestEvent; + type Log = DigestItem; +} + +mod grandpa { + pub use ::Event; +} + +impl_outer_event!{ + pub enum TestEvent for Test { + grandpa, + } +} + +pub fn new_test_ext(authorities: Vec<(u64, u64)>) -> runtime_io::TestExternalities { + let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; + t.extend(GenesisConfig:: { + _genesis_phantom_data: Default::default(), + authorities, + }.build_storage().unwrap().0); + t.into() +} + +pub type System = system::Module; +pub type Grandpa = Module; diff --git a/substrate/srml/grandpa/src/tests.rs b/substrate/srml/grandpa/src/tests.rs new file mode 100644 index 0000000000..4d8694b2a5 --- /dev/null +++ b/substrate/srml/grandpa/src/tests.rs @@ -0,0 +1,108 @@ +// Copyright 2017-2018 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Tests for the module. + +#![cfg(test)] + +use primitives::{testing, traits::OnFinalise}; +use primitives::traits::Header; +use runtime_io::with_externalities; +use mock::{Grandpa, System, new_test_ext}; +use system::{EventRecord, Phase}; +use {RawLog, RawEvent}; + +#[test] +fn authorities_change_logged() { + with_externalities(&mut new_test_ext(vec![(1, 1), (2, 1), (3, 1)]), || { + System::initialise(&1, &Default::default(), &Default::default()); + Grandpa::schedule_change(vec![(4, 1), (5, 1), (6, 1)], 0).unwrap(); + + System::note_finished_extrinsics(); + Grandpa::on_finalise(1); + + let header = System::finalise(); + assert_eq!(header.digest, testing::Digest { + logs: vec![ + RawLog::AuthoritiesChangeSignal(0, vec![(4, 1), (5, 1), (6, 1)]).into(), + ], + }); + + assert_eq!(System::events(), vec![ + EventRecord { + phase: Phase::Finalization, + event: RawEvent::NewAuthorities(vec![(4, 1), (5, 1), (6, 1)]).into(), + }, + ]); + }); +} + +#[test] +fn authorities_change_logged_after_delay() { + with_externalities(&mut new_test_ext(vec![(1, 1), (2, 1), (3, 1)]), || { + System::initialise(&1, &Default::default(), &Default::default()); + Grandpa::schedule_change(vec![(4, 1), (5, 1), (6, 1)], 1).unwrap(); + Grandpa::on_finalise(1); + let header = System::finalise(); + assert_eq!(header.digest, testing::Digest { + logs: vec![ + RawLog::AuthoritiesChangeSignal(1, vec![(4, 1), (5, 1), (6, 1)]).into(), + ], + }); + + // no change at this height. + assert_eq!(System::events(), vec![]); + + System::initialise(&2, &header.hash(), &Default::default()); + System::note_finished_extrinsics(); + Grandpa::on_finalise(2); + + let _header = System::finalise(); + assert_eq!(System::events(), vec![ + EventRecord { + phase: Phase::Finalization, + event: RawEvent::NewAuthorities(vec![(4, 1), (5, 1), (6, 1)]).into(), + }, + ]); + }); +} + +#[test] +fn cannot_schedule_change_when_one_pending() { + with_externalities(&mut new_test_ext(vec![(1, 1), (2, 1), (3, 1)]), || { + System::initialise(&1, &Default::default(), &Default::default()); + Grandpa::schedule_change(vec![(4, 1), (5, 1), (6, 1)], 1).unwrap(); + assert!(Grandpa::pending_change().is_some()); + assert!(Grandpa::schedule_change(vec![(5, 1)], 1).is_err()); + + Grandpa::on_finalise(1); + let header = System::finalise(); + + System::initialise(&2, &header.hash(), &Default::default()); + assert!(Grandpa::pending_change().is_some()); + assert!(Grandpa::schedule_change(vec![(5, 1)], 1).is_err()); + + Grandpa::on_finalise(2); + let header = System::finalise(); + + System::initialise(&3, &header.hash(), &Default::default()); + assert!(Grandpa::pending_change().is_none()); + assert!(Grandpa::schedule_change(vec![(5, 1)], 1).is_ok()); + + Grandpa::on_finalise(3); + let _header = System::finalise(); + }); +} diff --git a/substrate/srml/session/src/lib.rs b/substrate/srml/session/src/lib.rs index 33ac3dbabf..43eeaaad50 100644 --- a/substrate/srml/session/src/lib.rs +++ b/substrate/srml/session/src/lib.rs @@ -55,6 +55,15 @@ impl OnSessionChange for () { fn on_session_change(_: T, _: bool) {} } +impl OnSessionChange for (A, B) + where T: Clone, A: OnSessionChange, B: OnSessionChange +{ + fn on_session_change(time_elapsed: T, should_reward: bool) { + A::on_session_change(time_elapsed.clone(), should_reward); + B::on_session_change(time_elapsed, should_reward); + } +} + pub trait Trait: timestamp::Trait { type ConvertAccountIdToSessionKey: Convert; type OnSessionChange: OnSessionChange; diff --git a/substrate/srml/staking/src/mock.rs b/substrate/srml/staking/src/mock.rs index bfef4653a6..8788dae640 100644 --- a/substrate/srml/staking/src/mock.rs +++ b/substrate/srml/staking/src/mock.rs @@ -30,7 +30,7 @@ impl_outer_origin!{ } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. -#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] +#[derive(Clone, PartialEq, Eq, Debug)] pub struct Test; impl consensus::Trait for Test { const NOTE_OFFLINE_POSITION: u32 = 1; diff --git a/substrate/srml/support/src/dispatch.rs b/substrate/srml/support/src/dispatch.rs index cfcb3ae972..436ed87b9a 100644 --- a/substrate/srml/support/src/dispatch.rs +++ b/substrate/srml/support/src/dispatch.rs @@ -56,6 +56,9 @@ impl Parameter for T where T: Codec + Clone + Eq {} /// Declare a struct for this module, then implement dispatch logic to create a pairing of several /// dispatch traits and enums. +/// +/// The `on_finalise` function is special, since it can either take no parameters, +/// or one parameter, which has the runtime's block number type. #[macro_export] macro_rules! decl_module { ( diff --git a/substrate/srml/support/src/metadata.rs b/substrate/srml/support/src/metadata.rs index 947c8877a6..a7935c5524 100644 --- a/substrate/srml/support/src/metadata.rs +++ b/substrate/srml/support/src/metadata.rs @@ -197,7 +197,7 @@ mod tests { type EventModule = event_module::Module; type EventModule2 = event_module2::Module; - #[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, Deserialize, Serialize)] + #[derive(Debug, Clone, PartialEq, Eq, Encode, Decode)] pub struct TestRuntime; impl_outer_event! { diff --git a/substrate/srml/support/src/storage/generator.rs b/substrate/srml/support/src/storage/generator.rs index 60e26e8aee..d622b83577 100644 --- a/substrate/srml/support/src/storage/generator.rs +++ b/substrate/srml/support/src/storage/generator.rs @@ -622,8 +622,8 @@ macro_rules! __generate_genesis_config { // final build storage call [$call:expr] ) => { - #[derive(Serialize, Deserialize)] #[cfg(feature = "std")] + #[derive(Serialize, Deserialize)] #[serde(rename_all = "camelCase")] #[serde(deny_unknown_fields)] pub struct GenesisConfig<$traitinstance: $traittype> { diff --git a/substrate/srml/system/src/lib.rs b/substrate/srml/system/src/lib.rs index 666348254f..fda59529d4 100644 --- a/substrate/srml/system/src/lib.rs +++ b/substrate/srml/system/src/lib.rs @@ -154,7 +154,7 @@ pub type Log = RawLog< >; /// A logs in this module. -#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] +#[cfg_attr(feature = "std", derive(Serialize, Debug))] #[derive(Encode, Decode, PartialEq, Eq, Clone)] pub enum RawLog { /// Changes trie has been computed for this block. Contains the root of

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