From 0ddcbf747fb5ee93dd4710d7c592372431017ae8 Mon Sep 17 00:00:00 2001 From: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Date: Fri, 29 Mar 2019 14:11:45 +0100 Subject: [PATCH] Convert all UK spelling to US (#2138) * all the ise * forgot a misspelling * a few more replacements * bump impl * rollback and fixes * bump impl again * Add aliases for RPC * Update on_demand.rs --- substrate/CODE_OF_CONDUCT.adoc | 2 +- substrate/CONTRIBUTING.adoc | 6 +- substrate/README.adoc | 16 +- .../basic-authorship/src/basic_authorship.rs | 4 +- .../core/client/src/block_builder/api.rs | 2 +- .../client/src/block_builder/block_builder.rs | 4 +- substrate/core/client/src/call_executor.rs | 16 +- substrate/core/client/src/client.rs | 8 +- substrate/core/client/src/genesis.rs | 4 +- .../core/client/src/light/call_executor.rs | 18 +-- substrate/core/client/src/runtime_api.rs | 6 +- substrate/core/consensus/rhd/src/lib.rs | 2 +- .../finality-grandpa/primitives/src/lib.rs | 6 +- .../core/finality-grandpa/src/authorities.rs | 10 +- .../core/finality-grandpa/src/environment.rs | 2 +- substrate/core/finality-grandpa/src/import.rs | 2 +- substrate/core/finality-grandpa/src/tests.rs | 2 +- substrate/core/network/src/message.rs | 2 +- substrate/core/primitives/src/lib.rs | 4 +- substrate/core/rpc/src/chain/mod.rs | 26 ++-- substrate/core/rpc/src/chain/tests.rs | 16 +- substrate/core/service/src/components.rs | 2 +- .../sr-api-macros/src/impl_runtime_apis.rs | 6 +- .../core/sr-api-macros/tests/decl_and_impl.rs | 2 +- substrate/core/sr-io/build.rs | 2 +- substrate/core/sr-io/without_std.rs | 2 +- .../core/sr-primitives/src/generic/era.rs | 6 +- substrate/core/sr-primitives/src/traits.rs | 56 +++---- substrate/core/sr-sandbox/build.rs | 2 +- substrate/core/sr-std/build.rs | 2 +- substrate/core/sr-version/src/lib.rs | 2 +- substrate/core/telemetry/src/lib.rs | 2 +- substrate/core/test-runtime/src/lib.rs | 20 +-- substrate/core/test-runtime/src/system.rs | 6 +- .../substrate_test_runtime.compact.wasm | Bin 60122 -> 60132 bytes .../transaction-pool/graph/src/listener.rs | 2 +- .../core/transaction-pool/graph/src/pool.rs | 8 +- .../transaction-pool/graph/src/watcher.rs | 24 +-- substrate/core/trie/src/trie_stream.rs | 2 +- substrate/node-template/init.sh | 2 +- substrate/node-template/runtime/src/lib.rs | 8 +- substrate/node-template/src/chain_spec.rs | 2 +- substrate/node/cli/src/chain_spec.rs | 2 +- substrate/node/executor/src/lib.rs | 18 +-- substrate/node/runtime/src/lib.rs | 10 +- .../release/node_runtime.compact.wasm | Bin 940182 -> 940061 bytes substrate/scripts/gitlab/check_runtime.sh | 2 +- substrate/scripts/init.sh | 2 +- substrate/scripts/kubernetes/values.yaml | 8 +- substrate/srml/assets/Cargo.toml | 2 +- substrate/srml/aura/src/tests.rs | 8 +- substrate/srml/consensus/src/lib.rs | 4 +- substrate/srml/consensus/src/tests.rs | 24 +-- substrate/srml/contract/src/exec.rs | 2 +- substrate/srml/contract/src/lib.rs | 70 ++++----- substrate/srml/council/src/seats.rs | 38 ++--- substrate/srml/council/src/voting.rs | 2 +- substrate/srml/democracy/src/lib.rs | 10 +- .../srml/democracy/src/vote_threshold.rs | 4 +- substrate/srml/example/src/lib.rs | 16 +- substrate/srml/executive/src/lib.rs | 40 ++--- substrate/srml/finality-tracker/src/lib.rs | 16 +- substrate/srml/grandpa/src/lib.rs | 10 +- substrate/srml/grandpa/src/tests.rs | 74 ++++----- substrate/srml/session/src/lib.rs | 2 +- substrate/srml/staking/src/lib.rs | 6 +- substrate/srml/staking/src/phragmen.rs | 26 ++-- substrate/srml/staking/src/tests.rs | 4 +- substrate/srml/support/src/dispatch.rs | 144 +++++++++--------- substrate/srml/support/src/lib.rs | 4 +- .../srml/support/src/storage/generator.rs | 2 +- substrate/srml/system/src/lib.rs | 18 +-- substrate/srml/timestamp/src/lib.rs | 4 +- substrate/srml/treasury/src/lib.rs | 16 +- 74 files changed, 453 insertions(+), 451 deletions(-) diff --git a/substrate/CODE_OF_CONDUCT.adoc b/substrate/CODE_OF_CONDUCT.adoc index 811e83e9fa..7cb0210e8e 100644 --- a/substrate/CODE_OF_CONDUCT.adoc +++ b/substrate/CODE_OF_CONDUCT.adoc @@ -24,7 +24,7 @@ Examples of unacceptable behavior by participants include: === Facilitation, Not Strongarming -We recognise that this software is merely a tool for users to create and maintain their blockchain of preference. We see that blockchains are naturally community platforms with users being the ultimate decision makers. We assert that good software will maximise user agency by facilitate user-expression on the network. As such: +We recognize that this software is merely a tool for users to create and maintain their blockchain of preference. We see that blockchains are naturally community platforms with users being the ultimate decision makers. We assert that good software will maximize user agency by facilitate user-expression on the network. As such: * This project will strive to give users as much choice as is both reasonable and possible over what protocol they adhere to; but * use of the project's technical forums, commenting systems, pull requests and issue trackers as a means to express individual protocol preferences is forbidden. diff --git a/substrate/CONTRIBUTING.adoc b/substrate/CONTRIBUTING.adoc index 7098869dcc..b797e72e82 100644 --- a/substrate/CONTRIBUTING.adoc +++ b/substrate/CONTRIBUTING.adoc @@ -33,10 +33,10 @@ Merging pull requests once CI is successful: When reviewing a pull request, the end-goal is to suggest useful changes to the author. Reviews should finish with approval unless there are issues that would result in: -. Buggy behaviour. +. Buggy behavior. . Undue maintenance burden. . Breaking with house coding style. -. Pessimisation (i.e. reduction of speed as measured in the projects benchmarks). +. Pessimization (i.e. reduction of speed as measured in the projects benchmarks). . Feature reduction (i.e. it removes some aspect of functionality that a significant minority of users rely on). . Uselessness (i.e. it does not strictly add a feature or fix a known issue). @@ -47,7 +47,7 @@ When reviewing a pull request, the end-goal is to suggest useful changes to the == Helping out -We use https://github.com/paritytech/substrate/labels[labels] to manage PRs and issues and communicate state of a PR. Please familiarize yourself with them. Furthermore we are organising issues in https://github.com/paritytech/substrate/milestones[milestones]. Best way to get started is to a pick a ticket from the current milestone tagged https://github.com/paritytech/substrate/issues?q=is%3Aissue+is%3Aopen+label%3AQ2-easy[`easy`] or https://github.com/paritytech/substrate/issues?q=is%3Aissue+is%3Aopen+label%3AQ3-medium[`medium`] and get going or https://github.com/paritytech/substrate/issues?q=is%3Aissue+is%3Aopen+label%3AX1-mentor[`mentor`] and get in contact with the mentor offering their support on that larger task. +We use https://github.com/paritytech/substrate/labels[labels] to manage PRs and issues and communicate state of a PR. Please familiarize yourself with them. Furthermore we are organizing issues in https://github.com/paritytech/substrate/milestones[milestones]. Best way to get started is to a pick a ticket from the current milestone tagged https://github.com/paritytech/substrate/issues?q=is%3Aissue+is%3Aopen+label%3AQ2-easy[`easy`] or https://github.com/paritytech/substrate/issues?q=is%3Aissue+is%3Aopen+label%3AQ3-medium[`medium`] and get going or https://github.com/paritytech/substrate/issues?q=is%3Aissue+is%3Aopen+label%3AX1-mentor[`mentor`] and get in contact with the mentor offering their support on that larger task. == Releases diff --git a/substrate/README.adoc b/substrate/README.adoc index 90961cbb0f..cf0e1970a7 100644 --- a/substrate/README.adoc +++ b/substrate/README.adoc @@ -10,9 +10,9 @@ Substrate is a next-generation framework for blockchain innovation. == Description -At its heart, Substrate is a combination of three technologies: https://webassembly.org/[WebAssembly], https://libp2p.io/[Libp2p] and GRANDPA Consensus. About GRANDPA, see this https://hackmd.io/Jd0byWX0RiqFiXUVC78Bdw?view#GRANDPA[definition], https://medium.com/polkadot-network/grandpa-block-finality-in-polkadot-an-introduction-part-1-d08a24a021b5[introduction] and https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf[formal specification]. It is both a library for building new blockchains and a "skeleton key" of a blockchain client, able to synchronise to any Substrate-based chain. +At its heart, Substrate is a combination of three technologies: https://webassembly.org/[WebAssembly], https://libp2p.io/[Libp2p] and GRANDPA Consensus. About GRANDPA, see this https://hackmd.io/Jd0byWX0RiqFiXUVC78Bdw?view#GRANDPA[definition], https://medium.com/polkadot-network/grandpa-block-finality-in-polkadot-an-introduction-part-1-d08a24a021b5[introduction] and https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf[formal specification]. It is both a library for building new blockchains and a "skeleton key" of a blockchain client, able to synchronize to any Substrate-based chain. -Substrate chains have three distinct features that make them "next-generation": a dynamic, self-defining state-transition function; light-client functionality from day one; and a progressive consensus algorithm with fast block production and adaptive, definite finality. The STF, encoded in WebAssembly, is known as the "runtime". This defines the `execute_block` function, and can specify everything from the staking algorithm, transaction semantics, logging mechanisms and procedures for replacing any aspect of itself or of the blockchain's state ("governance"). Because the runtime is entirely dynamic all of these can be switched out or upgraded at any time. A Substrate chain is very much a "living organism". +Substrate chains have three distinct features that make them "next-generation": a dynamic, self-defining state-transition function; light-client functionality from day one; and a progressive consensus algorithm with fast block production and adaptive, definite finality. The STF, encoded in WebAssembly, is known as the "runtime". This defines the `execute_block` function, and can specify everything from the staking algorithm, transaction semantics, logging mechanisms and procedures for replacing any aspect of itself or of the blockchain's state ("governance"). Because the runtime is entirely dynamic all of these can be switched out or upgraded at any time. A Substrate chain is very much a "living organizm". See also https://www.parity.io/what-is-substrate/. @@ -39,7 +39,7 @@ Block := Header + Extrinsics + Justifications === Extrinsics -Extrinsics in Substrate are pieces of information from "the outside world" that are contained in the blocks of the chain. You might think "ahh, that means *transactions*": in fact, no. Extrinsics fall into two broad categories of which only one is *transactions*. The other is known as *inherents*. The difference between these two is that transactions are signed and gossipped on the network and can be deemed useful *per se*. This fits the mould of what you would call transactions in Bitcoin or Ethereum. +Extrinsics in Substrate are pieces of information from "the outside world" that are contained in the blocks of the chain. You might think "ahh, that means *transactions*": in fact, no. Extrinsics fall into two broad categories of which only one is *transactions*. The other is known as *inherents*. The difference between these two is that transactions are signed and gossipped on the network and can be deemed useful *per se*. This fits the mold of what you would call transactions in Bitcoin or Ethereum. Inherents, meanwhile, are not passed on the network and are not signed. They represent data which describes the environment but which cannot call upon anything to prove it such as a signature. Rather they are assumed to be "true" simply because a sufficiently large number of validators have agreed on them being reasonable. @@ -71,8 +71,8 @@ impl_runtime_apis! { Executive::execute_block(block) } - fn initialise_block(header: ::Header) { - Executive::initialise_block(&header) + fn initialize_block(header: ::Header) { + Executive::initialize_block(&header) } } // ---snip--- @@ -86,9 +86,9 @@ The Substrate Runtime Module Library includes functionality for timestamps and s === Block-authoring Logic -In Substrate, there is a major distinction between blockchain *syncing* and block *authoring* ("authoring" is a more general term for what is called "mining" in Bitcoin). The first case might be referred to as a "full node" (or "light node" - Substrate supports both): authoring necessarily requires a synced node and, therefore, all authoring clients must necessarily be able to synchronise. However, the reverse is not true. The primary functionality that authoring nodes have which is not in "sync nodes" is threefold: transaction queue logic, inherent transaction knowledge and BFT consensus logic. BFT consensus logic is provided as a core element of Substrate and can be ignored since it is only exposed in the SDK under the `authorities()` API entry. +In Substrate, there is a major distinction between blockchain *syncing* and block *authoring* ("authoring" is a more general term for what is called "mining" in Bitcoin). The first case might be referred to as a "full node" (or "light node" - Substrate supports both): authoring necessarily requires a synced node and, therefore, all authoring clients must necessarily be able to synchronize. However, the reverse is not true. The primary functionality that authoring nodes have which is not in "sync nodes" is threefold: transaction queue logic, inherent transaction knowledge and BFT consensus logic. BFT consensus logic is provided as a core element of Substrate and can be ignored since it is only exposed in the SDK under the `authorities()` API entry. -Transaction queue logic in Substrate is designed to be as generic as possible, allowing a runtime to express which transactions are fit for inclusion in a block through the `initialize_block` and `apply_extrinsic` calls. However, more subtle aspects like prioritisation and replacement policy must currently be expressed "hard coded" as part of the blockchain's authoring code. That said, Substrate's reference implementation for a transaction queue should be sufficient for an initial chain implementation. +Transaction queue logic in Substrate is designed to be as generic as possible, allowing a runtime to express which transactions are fit for inclusion in a block through the `initialize_block` and `apply_extrinsic` calls. However, more subtle aspects like prioritization and replacement policy must currently be expressed "hard coded" as part of the blockchain's authoring code. That said, Substrate's reference implementation for a transaction queue should be sufficient for an initial chain implementation. Inherent extrinsic knowledge is again somewhat generic, and the actual construction of the extrinsics is, by convention, delegated to the "soft code" in the runtime. If ever there needs to be additional extrinsic information in the chain, then both the block authoring logic will need to be altered to provide it into the runtime and the runtime's `inherent_extrinsics` call will need to use this extra information in order to construct any additional extrinsic transactions for inclusion in the block. @@ -167,7 +167,7 @@ It won't do much until you start producing blocks though, so to do that you'll n substrate --chain ~/mychain.json --validator --key ... ---- -You can distribute `mychain.json` so that everyone can synchronise and (depending on your authorities list) validate on your chain. +You can distribute `mychain.json` so that everyone can synchronize and (depending on your authorities list) validate on your chain. == Building diff --git a/substrate/core/basic-authorship/src/basic_authorship.rs b/substrate/core/basic-authorship/src/basic_authorship.rs index 55b45c1c45..e9b6c909ad 100644 --- a/substrate/core/basic-authorship/src/basic_authorship.rs +++ b/substrate/core/basic-authorship/src/basic_authorship.rs @@ -177,7 +177,7 @@ impl consensus_common::Proposer<::Block> for Pro fn propose(&self, inherent_data: InherentData, max_duration: time::Duration) -> Result<::Block, error::Error> { - // leave some time for evaluation and block finalisation (33%) + // leave some time for evaluation and block finalization (33%) let deadline = (self.now)() + max_duration - max_duration / 3; self.propose_with(inherent_data, deadline) } @@ -197,7 +197,7 @@ impl Proposer where /// If the block is full we will attempt to push at most /// this number of transactions before quitting for real. - /// It allows us to increase block utilisation. + /// It allows us to increase block utilization. const MAX_SKIPPED_TRANSACTIONS: usize = 8; let block = self.client.build_block( diff --git a/substrate/core/client/src/block_builder/api.rs b/substrate/core/client/src/block_builder/api.rs index 8aad262777..48abb38024 100644 --- a/substrate/core/client/src/block_builder/api.rs +++ b/substrate/core/client/src/block_builder/api.rs @@ -28,7 +28,7 @@ decl_runtime_apis! { /// Apply the given extrinsics. fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult; /// Finish the current block. - fn finalise_block() -> ::Header; + fn finalize_block() -> ::Header; /// Generate inherent extrinsics. The inherent data will vary from chain to chain. fn inherent_extrinsics(inherent: InherentData) -> Vec<::Extrinsic>; /// Check that the inherents are valid. The inherent data will vary from chain to chain. diff --git a/substrate/core/client/src/block_builder/block_builder.rs b/substrate/core/client/src/block_builder/block_builder.rs index 63e18e8279..fd1ce4aefb 100644 --- a/substrate/core/client/src/block_builder/block_builder.rs +++ b/substrate/core/client/src/block_builder/block_builder.rs @@ -64,7 +64,7 @@ where Default::default() ); let api = api.runtime_api(); - api.initialise_block_with_context(block_id, ExecutionContext::BlockConstruction, &header)?; + api.initialize_block_with_context(block_id, ExecutionContext::BlockConstruction, &header)?; Ok(BlockBuilder { header, extrinsics: Vec::new(), @@ -97,7 +97,7 @@ where /// Consume the builder to return a valid `Block` containing all pushed extrinsics. pub fn bake(mut self) -> error::Result { - self.header = self.api.finalise_block_with_context(&self.block_id, ExecutionContext::BlockConstruction)?; + self.header = self.api.finalize_block_with_context(&self.block_id, ExecutionContext::BlockConstruction)?; debug_assert_eq!( self.header.extrinsics_root().clone(), diff --git a/substrate/core/client/src/call_executor.rs b/substrate/core/client/src/call_executor.rs index 0dad56be07..20460f72ad 100644 --- a/substrate/core/client/src/call_executor.rs +++ b/substrate/core/client/src/call_executor.rs @@ -73,7 +73,7 @@ where method: &str, call_data: &[u8], changes: &mut OverlayedChanges, - initialised_block: &mut Option>, + initialized_block: &mut Option>, prepare_environment_block: PB, execution_manager: ExecutionManager, native_call: Option, @@ -213,14 +213,14 @@ where method: &str, call_data: &[u8], changes: &mut OverlayedChanges, - initialised_block: &mut Option>, + initialized_block: &mut Option>, prepare_environment_block: PB, execution_manager: ExecutionManager, native_call: Option, mut side_effects_handler: Option<&mut O>, ) -> Result, error::Error> where ExecutionManager: Clone { let state = self.backend.state_at(*at)?; - if method != "Core_initialise_block" && initialised_block.map(|id| id != *at).unwrap_or(true) { + if method != "Core_initialize_block" && initialized_block.map(|id| id != *at).unwrap_or(true) { let header = prepare_environment_block()?; state_machine::new( &state, @@ -228,14 +228,14 @@ where side_effects_handler.as_mut().map(|x| &mut **x), changes, &self.executor, - "Core_initialise_block", + "Core_initialize_block", &header.encode(), ).execute_using_consensus_failure_handler::<_, R, fn() -> _>( execution_manager.clone(), false, None, )?; - *initialised_block = Some(*at); + *initialized_block = Some(*at); } let result = state_machine::new( @@ -252,9 +252,9 @@ where native_call, ).map(|(result, _, _)| result)?; - // If the method is `initialise_block` we need to set the `initialised_block` - if method == "Core_initialise_block" { - *initialised_block = Some(*at); + // If the method is `initialize_block` we need to set the `initialized_block` + if method == "Core_initialize_block" { + *initialized_block = Some(*at); } self.backend.destroy_state(state)?; diff --git a/substrate/core/client/src/client.rs b/substrate/core/client/src/client.rs index 699bbcad8d..86d643d3b7 100644 --- a/substrate/core/client/src/client.rs +++ b/substrate/core/client/src/client.rs @@ -285,7 +285,7 @@ impl Client where backend.begin_state_operation(&mut op, BlockId::Hash(Default::default()))?; let state_root = op.reset_storage(genesis_storage, children_genesis_storage)?; let genesis_block = genesis::construct_genesis_block::(state_root.into()); - info!("Initialising Genesis block/state (state: {}, header-hash: {})", genesis_block.header().state_root(), genesis_block.header().hash()); + info!("Initializing Genesis block/state (state: {}, header-hash: {})", genesis_block.header().state_root(), genesis_block.header().hash()); op.set_block_data( genesis_block.deconstruct().0, Some(vec![]), @@ -1351,7 +1351,7 @@ impl CallRuntimeAt for Client where function: &'static str, args: Vec, changes: &mut OverlayedChanges, - initialised_block: &mut Option>, + initialized_block: &mut Option>, native_call: Option, context: ExecutionContext, ) -> error::Result> { @@ -1373,7 +1373,7 @@ impl CallRuntimeAt for Client where function, &args, changes, - initialised_block, + initialized_block, || self.prepare_environment_block(at), manager, native_call, @@ -1630,7 +1630,7 @@ pub(crate) mod tests { } #[test] - fn client_initialises_from_genesis_ok() { + fn client_initializes_from_genesis_ok() { let client = test_client::new(); assert_eq!( diff --git a/substrate/core/client/src/genesis.rs b/substrate/core/client/src/genesis.rs index 7ebae4c558..eea0a251ca 100644 --- a/substrate/core/client/src/genesis.rs +++ b/substrate/core/client/src/genesis.rs @@ -93,7 +93,7 @@ mod tests { state_machine::NeverOffchainExt::new(), &mut overlay, &executor(), - "Core_initialise_block", + "Core_initialize_block", &header.encode(), ).execute( ExecutionStrategy::NativeElseWasm, @@ -119,7 +119,7 @@ mod tests { state_machine::NeverOffchainExt::new(), &mut overlay, &executor(), - "BlockBuilder_finalise_block", + "BlockBuilder_finalize_block", &[], ).execute( ExecutionStrategy::NativeElseWasm, diff --git a/substrate/core/client/src/light/call_executor.rs b/substrate/core/client/src/light/call_executor.rs index 00a3d8895b..b2e4c45a7d 100644 --- a/substrate/core/client/src/light/call_executor.rs +++ b/substrate/core/client/src/light/call_executor.rs @@ -118,14 +118,14 @@ where method: &str, call_data: &[u8], changes: &mut OverlayedChanges, - initialised_block: &mut Option>, + initialized_block: &mut Option>, _prepare_environment_block: PB, execution_manager: ExecutionManager, _native_call: Option, side_effects_handler: Option<&mut O>, ) -> ClientResult> where ExecutionManager: Clone { // it is only possible to execute contextual call if changes are empty - if !changes.is_empty() || initialised_block.is_some() { + if !changes.is_empty() || initialized_block.is_some() { return Err(ClientErrorKind::NotAvailableOnLightClient.into()); } @@ -245,7 +245,7 @@ impl CallExecutor for method: &str, call_data: &[u8], changes: &mut OverlayedChanges, - initialised_block: &mut Option>, + initialized_block: &mut Option>, prepare_environment_block: PB, _manager: ExecutionManager, native_call: Option, @@ -270,7 +270,7 @@ impl CallExecutor for method, call_data, changes, - initialised_block, + initialized_block, prepare_environment_block, ExecutionManager::NativeWhenPossible, native_call, @@ -291,7 +291,7 @@ impl CallExecutor for method, call_data, changes, - initialised_block, + initialized_block, prepare_environment_block, ExecutionManager::NativeWhenPossible, native_call, @@ -388,7 +388,7 @@ pub fn prove_execution( let (_, init_proof) = executor.prove_at_trie_state( &trie_state, &mut changes, - "Core_initialise_block", + "Core_initialize_block", &header.encode(), )?; @@ -435,7 +435,7 @@ pub fn check_execution_proof( &trie_backend, &mut changes, executor, - "Core_initialise_block", + "Core_initialize_block", &next_block.encode(), )?; @@ -516,12 +516,12 @@ mod tests { assert_eq!(remote, local); // check method that requires environment - let (_, block) = execute(&remote_client, 0, "BlockBuilder_finalise_block"); + let (_, block) = execute(&remote_client, 0, "BlockBuilder_finalize_block"); let local_block: Header = Decode::decode(&mut &block[..]).unwrap(); assert_eq!(local_block.number, 1); // check method that requires environment - let (_, block) = execute(&remote_client, 2, "BlockBuilder_finalise_block"); + let (_, block) = execute(&remote_client, 2, "BlockBuilder_finalize_block"); let local_block: Header = Decode::decode(&mut &block[..]).unwrap(); assert_eq!(local_block.number, 3); } diff --git a/substrate/core/client/src/runtime_api.rs b/substrate/core/client/src/runtime_api.rs index 77d733f64e..a912b8c576 100644 --- a/substrate/core/client/src/runtime_api.rs +++ b/substrate/core/client/src/runtime_api.rs @@ -102,7 +102,7 @@ pub trait CallRuntimeAt { function: &'static str, args: Vec, changes: &mut OverlayedChanges, - initialised_block: &mut Option>, + initialized_block: &mut Option>, native_call: Option, context: ExecutionContext, ) -> error::Result>; @@ -121,8 +121,8 @@ decl_runtime_apis! { fn authorities() -> Vec>; /// Execute the given block. fn execute_block(block: Block); - /// Initialise a block with the given header. - fn initialise_block(header: &::Header); + /// Initialize a block with the given header. + fn initialize_block(header: &::Header); } /// The `Metadata` api trait that returns metadata for the runtime. diff --git a/substrate/core/consensus/rhd/src/lib.rs b/substrate/core/consensus/rhd/src/lib.rs index e42083a40b..cbdf95d987 100644 --- a/substrate/core/consensus/rhd/src/lib.rs +++ b/substrate/core/consensus/rhd/src/lib.rs @@ -66,7 +66,7 @@ pub use rhododendron::{ }; pub use self::error::{Error, ErrorKind}; -// pub mod misbehaviour_check; +// pub mod misbehavior_check; mod error; mod service; diff --git a/substrate/core/finality-grandpa/primitives/src/lib.rs b/substrate/core/finality-grandpa/primitives/src/lib.rs index 92bd0e4584..7016a708bd 100644 --- a/substrate/core/finality-grandpa/primitives/src/lib.rs +++ b/substrate/core/finality-grandpa/primitives/src/lib.rs @@ -58,8 +58,8 @@ decl_runtime_apis! { /// This should be implemented on the runtime side. /// /// This is primarily used for negotiating authority-set changes for the - /// gadget. GRANDPA uses a signalling model of changing authority sets: - /// changes should be signalled with a delay of N blocks, and then automatically + /// gadget. GRANDPA uses a signaling model of changing authority sets: + /// changes should be signaled with a delay of N blocks, and then automatically /// applied in the runtime after those N blocks have passed. /// /// The consensus protocol will coordinate the handoff externally. @@ -83,7 +83,7 @@ decl_runtime_apis! { /// Check a digest for forced changes. /// Return `None` if there are no forced changes. Otherwise, return a /// tuple containing the pending change and the median last finalized - /// block number at the time the change was signalled. + /// block number at the time the change was signaled. /// /// Added in version 2. /// diff --git a/substrate/core/finality-grandpa/src/authorities.rs b/substrate/core/finality-grandpa/src/authorities.rs index 49917ae1c2..ffded9a1ab 100644 --- a/substrate/core/finality-grandpa/src/authorities.rs +++ b/substrate/core/finality-grandpa/src/authorities.rs @@ -136,7 +136,7 @@ where let hash = pending.canon_hash.clone(); let number = pending.canon_height.clone(); - debug!(target: "afg", "Inserting potential standard set change signalled at block {:?} \ + debug!(target: "afg", "Inserting potential standard set change signaled at block {:?} \ (delayed by {:?} blocks).", (&number, &hash), pending.delay); @@ -257,7 +257,7 @@ where .take_while(|c| c.effective_number() <= best_number) // to prevent iterating too far .filter(|c| c.effective_number() == best_number) { - // check if the given best block is in the same branch as the block that signalled the change. + // check if the given best block is in the same branch as the block that signaled the change. if is_descendent_of(&change.canon_hash, &best_hash)? { // apply this change: make the set canonical info!(target: "finality", "Applying authority set change forced at block #{:?}", @@ -381,7 +381,7 @@ pub(crate) enum DelayKind { /// Depth in finalized chain. Finalized, /// Depth in best chain. The median last finalized block is calculated at the time the - /// change was signalled. + /// change was signaled. Best { median_last_finalized: N }, } @@ -550,7 +550,7 @@ mod tests { vec![&change_b, &change_a], ); - // finalizing "hash_c" won't enact the change signalled at "hash_a" but it will prune out "hash_b" + // finalizing "hash_c" won't enact the change signaled at "hash_a" but it will prune out "hash_b" let status = authorities.apply_standard_changes("hash_c", 11, &is_descendent_of(|base, hash| match (*base, *hash) { ("hash_a", "hash_c") => true, ("hash_b", "hash_c") => false, @@ -564,7 +564,7 @@ mod tests { vec![&change_a], ); - // finalizing "hash_d" will enact the change signalled at "hash_a" + // finalizing "hash_d" will enact the change signaled at "hash_a" let status = authorities.apply_standard_changes("hash_d", 15, &is_descendent_of(|base, hash| match (*base, *hash) { ("hash_a", "hash_d") => true, _ => unreachable!(), diff --git a/substrate/core/finality-grandpa/src/environment.rs b/substrate/core/finality-grandpa/src/environment.rs index 685337a311..587762b608 100644 --- a/substrate/core/finality-grandpa/src/environment.rs +++ b/substrate/core/finality-grandpa/src/environment.rs @@ -125,7 +125,7 @@ impl, B, E, N, RA> grandpa::Chain Option<(Block::Hash, NumberFor)> { // NOTE: when we finalize an authority set change through the sync protocol the voter is - // signalled asynchronously. therefore the voter could still vote in the next round + // signaled asynchronously. therefore the voter could still vote in the next round // before activating the new set. the `authority_set` is updated immediately thus we // restrict the voter based on that. if self.set_id != self.authority_set.inner().read().current().0 { diff --git a/substrate/core/finality-grandpa/src/import.rs b/substrate/core/finality-grandpa/src/import.rs index 0c59bd60fe..9afbe443f9 100644 --- a/substrate/core/finality-grandpa/src/import.rs +++ b/substrate/core/finality-grandpa/src/import.rs @@ -570,7 +570,7 @@ impl, RA, PRA> GrandpaBlockImport { info!(target: "finality", "Imported justification for block #{} that triggers \ - command {}, signalling voter.", number, command); + command {}, signaling voter.", number, command); if let Err(e) = self.send_voter_commands.unbounded_send(command) { return Err(ConsensusErrorKind::ClientImport(e.to_string()).into()); diff --git a/substrate/core/finality-grandpa/src/tests.rs b/substrate/core/finality-grandpa/src/tests.rs index 7e0537ed7b..582439419e 100644 --- a/substrate/core/finality-grandpa/src/tests.rs +++ b/substrate/core/finality-grandpa/src/tests.rs @@ -297,7 +297,7 @@ impl Core for RuntimeApi { unimplemented!("Not required for testing!") } - fn initialise_block_runtime_api_impl( + fn initialize_block_runtime_api_impl( &self, _: &BlockId, _: ExecutionContext, diff --git a/substrate/core/network/src/message.rs b/substrate/core/network/src/message.rs index 221a867c67..d0f697b8ab 100644 --- a/substrate/core/network/src/message.rs +++ b/substrate/core/network/src/message.rs @@ -66,7 +66,7 @@ pub type BlockResponse = generic::BlockResponse< /// A set of transactions. pub type Transactions = Vec; -/// Bits of block data and associated artefacts to request. +/// Bits of block data and associated artifacts to request. bitflags! { /// Node roles bitmask. pub struct BlockAttributes: u8 { diff --git a/substrate/core/primitives/src/lib.rs b/substrate/core/primitives/src/lib.rs index 38ecec0fa4..f078b5446f 100644 --- a/substrate/core/primitives/src/lib.rs +++ b/substrate/core/primitives/src/lib.rs @@ -21,7 +21,7 @@ #![cfg_attr(not(feature = "std"), no_std)] #![cfg_attr(not(feature = "std"), feature(alloc))] -/// Initalise a key-value collection from array. +/// Initialize a key-value collection from array. /// /// Creates a vector of given pairs and calls `collect` on the iterator from it. /// Can be used to create a `HashMap`. @@ -105,7 +105,7 @@ impl OffchainExt for Box { } } -/// Hex-serialised shim for `Vec`. +/// Hex-serialized shim for `Vec`. #[derive(PartialEq, Eq, Clone)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug, Hash, PartialOrd, Ord))] pub struct Bytes(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); diff --git a/substrate/core/rpc/src/chain/mod.rs b/substrate/core/rpc/src/chain/mod.rs index 9b7f5a909e..de7ad3faad 100644 --- a/substrate/core/rpc/src/chain/mod.rs +++ b/substrate/core/rpc/src/chain/mod.rs @@ -57,9 +57,9 @@ pub trait ChainApi { #[rpc(name = "chain_getBlockHash", alias("chain_getHead"))] fn block_hash(&self, hash: Option>) -> Result>; - /// Get hash of the last finalised block in the canon chain. - #[rpc(name = "chain_getFinalisedHead")] - fn finalised_head(&self) -> Result; + /// Get hash of the last finalized block in the canon chain. + #[rpc(name = "chain_getFinalizedHead", alias("chain_getFinalisedHead"))] + fn finalized_head(&self) -> Result; /// New head subscription #[pubsub( @@ -81,19 +81,21 @@ pub trait ChainApi { /// New head subscription #[pubsub( - subscription = "chain_finalisedHead", + subscription = "chain_finalizedHead", subscribe, - name = "chain_subscribeFinalisedHeads" + name = "chain_subscribeFinalizedHeads", + alias("chain_subscribeFinalisedHeads") )] - fn subscribe_finalised_heads(&self, metadata: Self::Metadata, subscriber: Subscriber
); + fn subscribe_finalized_heads(&self, metadata: Self::Metadata, subscriber: Subscriber
); /// Unsubscribe from new head subscription. #[pubsub( - subscription = "chain_finalisedHead", + subscription = "chain_finalizedHead", unsubscribe, - name = "chain_unsubscribeFinalisedHeads" + name = "chain_unsubscribeFinalizedHeads", + alias("chain_unsubscribeFinalisedHeads") )] - fn unsubscribe_finalised_heads(&self, metadata: Option, id: SubscriptionId) -> RpcResult; + fn unsubscribe_finalized_heads(&self, metadata: Option, id: SubscriptionId) -> RpcResult; } /// Chain API with subscriptions support. @@ -192,7 +194,7 @@ impl ChainApi, Block::Hash, Block::Header, Sig }) } - fn finalised_head(&self) -> Result { + fn finalized_head(&self) -> Result { Ok(self.client.info()?.chain.finalized_hash) } @@ -210,7 +212,7 @@ impl ChainApi, Block::Hash, Block::Header, Sig Ok(self.subscriptions.cancel(id)) } - fn subscribe_finalised_heads(&self, _meta: Self::Metadata, subscriber: Subscriber) { + fn subscribe_finalized_heads(&self, _meta: Self::Metadata, subscriber: Subscriber) { self.subscribe_headers( subscriber, || Ok(Some(self.client.info()?.chain.finalized_hash)), @@ -219,7 +221,7 @@ impl ChainApi, Block::Hash, Block::Header, Sig ) } - fn unsubscribe_finalised_heads(&self, _metadata: Option, id: SubscriptionId) -> RpcResult { + fn unsubscribe_finalized_heads(&self, _metadata: Option, id: SubscriptionId) -> RpcResult { Ok(self.subscriptions.cancel(id)) } } diff --git a/substrate/core/rpc/src/chain/tests.rs b/substrate/core/rpc/src/chain/tests.rs index bad3c5aeb8..26b7202305 100644 --- a/substrate/core/rpc/src/chain/tests.rs +++ b/substrate/core/rpc/src/chain/tests.rs @@ -157,7 +157,7 @@ fn should_return_block_hash() { #[test] -fn should_return_finalised_hash() { +fn should_return_finalized_hash() { let core = ::tokio::runtime::Runtime::new().unwrap(); let remote = core.executor(); @@ -167,23 +167,23 @@ fn should_return_finalised_hash() { }; assert_matches!( - client.finalised_head(), + client.finalized_head(), Ok(ref x) if x == &client.client.genesis_hash() ); // import new block let builder = client.client.new_block().unwrap(); client.client.import(BlockOrigin::Own, builder.bake().unwrap()).unwrap(); - // no finalisation yet + // no finalization yet assert_matches!( - client.finalised_head(), + client.finalized_head(), Ok(ref x) if x == &client.client.genesis_hash() ); - // finalise + // finalize client.client.finalize_block(BlockId::number(1), None, true).unwrap(); assert_matches!( - client.finalised_head(), + client.finalized_head(), Ok(ref x) if x == &client.client.block_hash(1).unwrap().unwrap() ); } @@ -220,7 +220,7 @@ fn should_notify_about_latest_block() { } #[test] -fn should_notify_about_finalised_block() { +fn should_notify_about_finalized_block() { let mut core = ::tokio::runtime::Runtime::new().unwrap(); let remote = core.executor(); let (subscriber, id, transport) = Subscriber::new_test("test"); @@ -231,7 +231,7 @@ fn should_notify_about_finalised_block() { subscriptions: Subscriptions::new(remote), }; - api.subscribe_finalised_heads(Default::default(), subscriber); + api.subscribe_finalized_heads(Default::default(), subscriber); // assert id assigned assert_eq!(core.block_on(id), Ok(Ok(SubscriptionId::Number(1)))); diff --git a/substrate/core/service/src/components.rs b/substrate/core/service/src/components.rs index e89921742b..eb37a69a14 100644 --- a/substrate/core/service/src/components.rs +++ b/substrate/core/service/src/components.rs @@ -356,7 +356,7 @@ pub trait ServiceFactory: 'static + Sized { } } -/// A collection of types and function to generalise over full / light client type. +/// A collection of types and function to generalize over full / light client type. pub trait Components: Sized + 'static { /// Associated service factory. type Factory: ServiceFactory; diff --git a/substrate/core/sr-api-macros/src/impl_runtime_apis.rs b/substrate/core/sr-api-macros/src/impl_runtime_apis.rs index 8bdf977303..b5dd3f21c5 100644 --- a/substrate/core/sr-api-macros/src/impl_runtime_apis.rs +++ b/substrate/core/sr-api-macros/src/impl_runtime_apis.rs @@ -271,7 +271,7 @@ fn generate_runtime_api_base_structures(impls: &[ItemImpl]) -> Result + 'static> { call: &'static C, commit_on_success: ::std::cell::RefCell, - initialised_block: ::std::cell::RefCell>, + initialized_block: ::std::cell::RefCell>, changes: ::std::cell::RefCell<#crate_::runtime_api::OverlayedChanges>, } @@ -320,7 +320,7 @@ fn generate_runtime_api_base_structures(impls: &[ItemImpl]) -> Result Result::Header) { + fn initialize_block(_: &::Header) { unimplemented!() } } diff --git a/substrate/core/sr-io/build.rs b/substrate/core/sr-io/build.rs index 62ddacbbf4..5b5d06b65a 100644 --- a/substrate/core/sr-io/build.rs +++ b/substrate/core/sr-io/build.rs @@ -3,7 +3,7 @@ use rustc_version::{version, version_meta, Channel}; fn main() { - // Assert we haven't travelled back in time + // Assert we haven't traveled back in time assert!(version().unwrap().major >= 1); // Set cfg flags depending on release channel diff --git a/substrate/core/sr-io/without_std.rs b/substrate/core/sr-io/without_std.rs index a4d62df30b..e4e32bd17d 100644 --- a/substrate/core/sr-io/without_std.rs +++ b/substrate/core/sr-io/without_std.rs @@ -297,7 +297,7 @@ pub trait ExternTrieCrypto { fn enumerated_trie_root(values: &[&[u8]]) -> [u8; 32]; } -// Ensures we use a Blake2_256-flavoured Hasher when calling into native +// Ensures we use a Blake2_256-flavored Hasher when calling into native impl ExternTrieCrypto for Blake2Hasher { fn enumerated_trie_root(values: &[&[u8]]) -> [u8; 32] { let lengths = values.iter().map(|v| (v.len() as u32).to_le()).collect::>(); diff --git a/substrate/core/sr-primitives/src/generic/era.rs b/substrate/core/sr-primitives/src/generic/era.rs index 037013b4fe..e5a7b24f0c 100644 --- a/substrate/core/sr-primitives/src/generic/era.rs +++ b/substrate/core/sr-primitives/src/generic/era.rs @@ -166,7 +166,7 @@ mod tests { } #[test] - fn era_initialisation_works() { + fn era_initialization_works() { assert_eq!(Era::mortal(64, 42), Era::Mortal(64, 42)); assert_eq!(Era::mortal(32768, 20000), Era::Mortal(32768, 20000)); assert_eq!(Era::mortal(200, 513), Era::Mortal(256, 1)); @@ -175,8 +175,8 @@ mod tests { } #[test] - fn quantised_clamped_era_initialisation_works() { - // clamp 1000000 to 65536, quantise 1000001 % 65536 to the nearest 4 + fn quantized_clamped_era_initialization_works() { + // clamp 1000000 to 65536, quantize 1000001 % 65536 to the nearest 4 assert_eq!(Era::mortal(1000000, 1000001), Era::Mortal(65536, 1000001 % 65536 / 4 * 4)); } diff --git a/substrate/core/sr-primitives/src/traits.rs b/substrate/core/sr-primitives/src/traits.rs index ef3f133df6..0454b74f6f 100644 --- a/substrate/core/sr-primitives/src/traits.rs +++ b/substrate/core/sr-primitives/src/traits.rs @@ -252,23 +252,23 @@ impl > SimpleBitOps for T {} -/// The block finalisation trait. Implementing this lets you express what should happen +/// The block finalization trait. Implementing this lets you express what should happen /// for your module when the block is ending. -pub trait OnFinalise { - /// The block is being finalised. Implement to have something happen. - fn on_finalise(_n: BlockNumber) {} +pub trait OnFinalize { + /// The block is being finalized. Implement to have something happen. + fn on_finalize(_n: BlockNumber) {} } -impl OnFinalise for () {} +impl OnFinalize for () {} -/// The block initialisation trait. Implementing this lets you express what should happen +/// The block initialization trait. Implementing this lets you express what should happen /// for your module when the block is beginning (right before the first extrinsic is executed). -pub trait OnInitialise { - /// The block is being initialised. Implement to have something happen. - fn on_initialise(_n: BlockNumber) {} +pub trait OnInitialize { + /// The block is being initialized. Implement to have something happen. + fn on_initialize(_n: BlockNumber) {} } -impl OnInitialise for () {} +impl OnInitialize for () {} /// Off-chain computation trait. /// @@ -290,14 +290,14 @@ impl OffchainWorker for () {} macro_rules! tuple_impl { ($one:ident,) => { - impl> OnFinalise for ($one,) { - fn on_finalise(n: Number) { - $one::on_finalise(n); + impl> OnFinalize for ($one,) { + fn on_finalize(n: Number) { + $one::on_finalize(n); } } - impl> OnInitialise for ($one,) { - fn on_initialise(n: Number) { - $one::on_initialise(n); + impl> OnInitialize for ($one,) { + fn on_initialize(n: Number) { + $one::on_initialize(n); } } impl> OffchainWorker for ($one,) { @@ -309,22 +309,22 @@ macro_rules! tuple_impl { ($first:ident, $($rest:ident,)+) => { impl< Number: Copy, - $first: OnFinalise, - $($rest: OnFinalise),+ - > OnFinalise for ($first, $($rest),+) { - fn on_finalise(n: Number) { - $first::on_finalise(n); - $($rest::on_finalise(n);)+ + $first: OnFinalize, + $($rest: OnFinalize),+ + > OnFinalize for ($first, $($rest),+) { + fn on_finalize(n: Number) { + $first::on_finalize(n); + $($rest::on_finalize(n);)+ } } impl< Number: Copy, - $first: OnInitialise, - $($rest: OnInitialise),+ - > OnInitialise for ($first, $($rest),+) { - fn on_initialise(n: Number) { - $first::on_initialise(n); - $($rest::on_initialise(n);)+ + $first: OnInitialize, + $($rest: OnInitialize),+ + > OnInitialize for ($first, $($rest),+) { + fn on_initialize(n: Number) { + $first::on_initialize(n); + $($rest::on_initialize(n);)+ } } impl< diff --git a/substrate/core/sr-sandbox/build.rs b/substrate/core/sr-sandbox/build.rs index 62ddacbbf4..5b5d06b65a 100755 --- a/substrate/core/sr-sandbox/build.rs +++ b/substrate/core/sr-sandbox/build.rs @@ -3,7 +3,7 @@ use rustc_version::{version, version_meta, Channel}; fn main() { - // Assert we haven't travelled back in time + // Assert we haven't traveled back in time assert!(version().unwrap().major >= 1); // Set cfg flags depending on release channel diff --git a/substrate/core/sr-std/build.rs b/substrate/core/sr-std/build.rs index 3cac768316..af9c91db87 100644 --- a/substrate/core/sr-std/build.rs +++ b/substrate/core/sr-std/build.rs @@ -3,7 +3,7 @@ use rustc_version::{version, version_meta, Channel}; fn main() { - // Assert we haven't travelled back in time + // Assert we haven't traveled back in time assert!(version().unwrap().major >= 1); // Set cfg flags depending on release channel diff --git a/substrate/core/sr-version/src/lib.rs b/substrate/core/sr-version/src/lib.rs index 71a4c5149d..3d1dfb4313 100644 --- a/substrate/core/sr-version/src/lib.rs +++ b/substrate/core/sr-version/src/lib.rs @@ -91,7 +91,7 @@ pub struct RuntimeVersion { /// serves only as an indication that the code is different; as long as the other two versions /// are the same then while the actual code may be different, it is nonetheless required to /// do the same thing. - /// Non-consensus-breaking optimisations are about the only changes that could be made which + /// Non-consensus-breaking optimizations are about the only changes that could be made which /// would result in only the `impl_version` changing. pub impl_version: u32, diff --git a/substrate/core/telemetry/src/lib.rs b/substrate/core/telemetry/src/lib.rs index 21289459c6..fba75c196a 100644 --- a/substrate/core/telemetry/src/lib.rs +++ b/substrate/core/telemetry/src/lib.rs @@ -93,7 +93,7 @@ impl Drain for Multiply { } } -/// Initialise telemetry. +/// Initialize telemetry. pub fn init_telemetry(config: TelemetryConfig) -> slog_scope::GlobalLoggerGuard { let mut endpoint_drains: Vec>> = Vec::new(); let mut out_syncs = Vec::new(); diff --git a/substrate/core/test-runtime/src/lib.rs b/substrate/core/test-runtime/src/lib.rs index 74ec56240c..744bdd7fea 100644 --- a/substrate/core/test-runtime/src/lib.rs +++ b/substrate/core/test-runtime/src/lib.rs @@ -167,9 +167,9 @@ pub fn run_tests(mut input: &[u8]) -> Vec { print("run_tests..."); let block = Block::decode(&mut input).unwrap(); - print("deserialised block."); + print("deserialized block."); let stxs = block.extrinsics.iter().map(Encode::encode).collect::>(); - print("reserialised transactions."); + print("reserialized transactions."); [stxs.len() as u8].encode() } @@ -297,8 +297,8 @@ cfg_if! { system::execute_block(block) } - fn initialise_block(header: &::Header) { - system::initialise_block(header) + fn initialize_block(header: &::Header) { + system::initialize_block(header) } } @@ -319,8 +319,8 @@ cfg_if! { system::execute_transaction(extrinsic) } - fn finalise_block() -> ::Header { - system::finalise_block() + fn finalize_block() -> ::Header { + system::finalize_block() } fn inherent_extrinsics(_data: InherentData) -> Vec<::Extrinsic> { @@ -402,8 +402,8 @@ cfg_if! { system::execute_block(block) } - fn initialise_block(header: &::Header) { - system::initialise_block(header) + fn initialize_block(header: &::Header) { + system::initialize_block(header) } } @@ -424,8 +424,8 @@ cfg_if! { system::execute_transaction(extrinsic) } - fn finalise_block() -> ::Header { - system::finalise_block() + fn finalize_block() -> ::Header { + system::finalize_block() } fn inherent_extrinsics(_data: InherentData) -> Vec<::Extrinsic> { diff --git a/substrate/core/test-runtime/src/system.rs b/substrate/core/test-runtime/src/system.rs index ffc01182d4..a119c8b62d 100644 --- a/substrate/core/test-runtime/src/system.rs +++ b/substrate/core/test-runtime/src/system.rs @@ -63,7 +63,7 @@ pub fn authorities() -> Vec { .collect() } -pub fn initialise_block(header: &Header) { +pub fn initialize_block(header: &Header) { // populate environment. ::put(&header.number); ::put(&header.parent_hash); @@ -201,8 +201,8 @@ pub fn execute_transaction(utx: Extrinsic) -> ApplyResult { result } -/// Finalise the block. -pub fn finalise_block() -> Header { +/// Finalize the block. +pub fn finalize_block() -> Header { let extrinsic_index: u32 = storage::unhashed::take(well_known_keys::EXTRINSIC_INDEX).unwrap(); let txs: Vec<_> = (0..extrinsic_index).map(ExtrinsicData::take).collect(); let txs = txs.iter().map(Vec::as_slice).collect::>(); 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 afdd492c6aafcd694ecd49e3ef81a312154b0896..cd36b9f405d7837e1be1ea913e77611695158e4c 100644 GIT binary patch delta 5027 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 z z=HBzSkR5e>tFu|FfU{e>5qFbvH5tAxA{Rb6B}JRpoSZntMk=Pfz;s?2YV7 zL)2}Nv(Und%}atlVd3vty*eGmo46qq>yBpu=MtiO2j&@ gw!L}T@>uIr!Ae2mWJNTTP>|Feb}9K|-vs9vDbt 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 diff --git a/substrate/core/transaction-pool/graph/src/listener.rs b/substrate/core/transaction-pool/graph/src/listener.rs index ac59b4c57e..335ff8a053 100644 --- a/substrate/core/transaction-pool/graph/src/listener.rs +++ b/substrate/core/transaction-pool/graph/src/listener.rs @@ -93,6 +93,6 @@ impl Listener { /// Transaction was pruned from the pool. pub fn pruned(&mut self, header_hash: H2, tx: &H) { - self.fire(tx, |watcher| watcher.finalised(header_hash)) + self.fire(tx, |watcher| watcher.finalized(header_hash)) } } diff --git a/substrate/core/transaction-pool/graph/src/pool.rs b/substrate/core/transaction-pool/graph/src/pool.rs index 9c3478d3d7..91ded26630 100644 --- a/substrate/core/transaction-pool/graph/src/pool.rs +++ b/substrate/core/transaction-pool/graph/src/pool.rs @@ -728,7 +728,7 @@ mod tests { use super::*; #[test] - fn should_trigger_ready_and_finalised() { + fn should_trigger_ready_and_finalized() { // given let pool = pool(); let watcher = pool.submit_and_watch(&BlockId::Number(0), uxt(Transfer { @@ -748,12 +748,12 @@ mod tests { // then let mut stream = watcher.into_stream().wait(); assert_eq!(stream.next(), Some(Ok(watcher::Status::Ready))); - assert_eq!(stream.next(), Some(Ok(watcher::Status::Finalised(H256::from_low_u64_be(2).into())))); + assert_eq!(stream.next(), Some(Ok(watcher::Status::Finalized(H256::from_low_u64_be(2).into())))); assert_eq!(stream.next(), None); } #[test] - fn should_trigger_ready_and_finalised_when_pruning_via_hash() { + fn should_trigger_ready_and_finalized_when_pruning_via_hash() { // given let pool = pool(); let watcher = pool.submit_and_watch(&BlockId::Number(0), uxt(Transfer { @@ -773,7 +773,7 @@ mod tests { // then let mut stream = watcher.into_stream().wait(); assert_eq!(stream.next(), Some(Ok(watcher::Status::Ready))); - assert_eq!(stream.next(), Some(Ok(watcher::Status::Finalised(H256::from_low_u64_be(2).into())))); + assert_eq!(stream.next(), Some(Ok(watcher::Status::Finalized(H256::from_low_u64_be(2).into())))); assert_eq!(stream.next(), None); } diff --git a/substrate/core/transaction-pool/graph/src/watcher.rs b/substrate/core/transaction-pool/graph/src/watcher.rs index 419a98ca79..5516d8c43c 100644 --- a/substrate/core/transaction-pool/graph/src/watcher.rs +++ b/substrate/core/transaction-pool/graph/src/watcher.rs @@ -30,8 +30,8 @@ pub enum Status { Future, /// Extrinsic is part of the ready queue. Ready, - /// Extrinsic has been finalised in block with given hash. - Finalised(H2), + /// Extrinsic has been finalized in block with given hash. + Finalized(H2), /// Some state change (perhaps another extrinsic was included) rendered this extrinsic invalid. Usurped(H), /// The extrinsic has been broadcast to the given peers. @@ -70,14 +70,14 @@ impl Watcher { #[derive(Debug)] pub struct Sender { receivers: Vec>>, - finalised: bool, + finalized: bool, } impl Default for Sender { fn default() -> Self { Sender { receivers: Default::default(), - finalised: false, + finalized: false, } } } @@ -108,17 +108,17 @@ impl Sender { self.send(Status::Usurped(hash)) } - /// Extrinsic has been finalised in block with given hash. - pub fn finalised(&mut self, hash: H2) { - self.send(Status::Finalised(hash)); - self.finalised = true; + /// Extrinsic has been finalized in block with given hash. + pub fn finalized(&mut self, hash: H2) { + self.send(Status::Finalized(hash)); + self.finalized = true; } /// Extrinsic has been marked as invalid by the block builder. pub fn invalid(&mut self) { self.send(Status::Invalid); - // we mark as finalised as there are no more notifications - self.finalised = true; + // we mark as finalized as there are no more notifications + self.finalized = true; } /// Transaction has been dropped from the pool because of the limit. @@ -132,9 +132,9 @@ impl Sender { } - /// Returns true if the are no more listeners for this extrinsic or it was finalised. + /// Returns true if the are no more listeners for this extrinsic or it was finalized. pub fn is_done(&self) -> bool { - self.finalised || self.receivers.is_empty() + self.finalized || self.receivers.is_empty() } fn send(&mut self, status: Status) { diff --git a/substrate/core/trie/src/trie_stream.rs b/substrate/core/trie/src/trie_stream.rs index e97516103d..e283a512bb 100644 --- a/substrate/core/trie/src/trie_stream.rs +++ b/substrate/core/trie/src/trie_stream.rs @@ -24,7 +24,7 @@ use codec::Encode; use super::{EMPTY_TRIE, LEAF_NODE_OFFSET, LEAF_NODE_BIG, EXTENSION_NODE_OFFSET, EXTENSION_NODE_BIG, branch_node}; -/// Codec-flavoured TrieStream +/// Codec-flavored TrieStream pub struct TrieStream { buffer: Vec, } diff --git a/substrate/node-template/init.sh b/substrate/node-template/init.sh index 5dde6d4241..cf5ecf9792 100755 --- a/substrate/node-template/init.sh +++ b/substrate/node-template/init.sh @@ -2,7 +2,7 @@ set -e -echo "*** Initialising WASM build environment" +echo "*** Initializing WASM build environment" if [ -z $CI_PROJECT_NAME ] ; then rustup update nightly diff --git a/substrate/node-template/runtime/src/lib.rs b/substrate/node-template/runtime/src/lib.rs index a82f8ce585..c5c3b0d01d 100644 --- a/substrate/node-template/runtime/src/lib.rs +++ b/substrate/node-template/runtime/src/lib.rs @@ -242,8 +242,8 @@ impl_runtime_apis! { Executive::execute_block(block) } - fn initialise_block(header: &::Header) { - Executive::initialise_block(header) + fn initialize_block(header: &::Header) { + Executive::initialize_block(header) } } @@ -258,8 +258,8 @@ impl_runtime_apis! { Executive::apply_extrinsic(extrinsic) } - fn finalise_block() -> ::Header { - Executive::finalise_block() + fn finalize_block() -> ::Header { + Executive::finalize_block() } fn inherent_extrinsics(data: InherentData) -> Vec<::Extrinsic> { diff --git a/substrate/node-template/src/chain_spec.rs b/substrate/node-template/src/chain_spec.rs index ca314ba001..3cb8d21d5d 100644 --- a/substrate/node-template/src/chain_spec.rs +++ b/substrate/node-template/src/chain_spec.rs @@ -10,7 +10,7 @@ use ed25519::Public as AuthorityId; // Note this is the URL for the telemetry server //const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; -/// Specialised `ChainSpec`. This is a specialisation of the general Substrate ChainSpec type. +/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type. pub type ChainSpec = substrate_service::ChainSpec; /// The chain specification option. This is expected to come in from the CLI and diff --git a/substrate/node/cli/src/chain_spec.rs b/substrate/node/cli/src/chain_spec.rs index 818a194f99..a45b25249f 100644 --- a/substrate/node/cli/src/chain_spec.rs +++ b/substrate/node/cli/src/chain_spec.rs @@ -28,7 +28,7 @@ use substrate_telemetry::TelemetryEndpoints; const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; -/// Specialised `ChainSpec`. +/// Specialized `ChainSpec`. pub type ChainSpec = substrate_service::ChainSpec; /// Dried Danta testnet generator diff --git a/substrate/node/executor/src/lib.rs b/substrate/node/executor/src/lib.rs index 22bf1a9b79..c855a4e6f0 100644 --- a/substrate/node/executor/src/lib.rs +++ b/substrate/node/executor/src/lib.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -//! A `CodeExecutor` specialisation which uses natively compiled runtime when the wasm to be +//! A `CodeExecutor` specialization which uses natively compiled runtime when the wasm to be //! executed is equivalent to the natively compiled code. #![cfg_attr(feature = "benchmarks", feature(test))] @@ -132,7 +132,7 @@ mod tests { let r = executor().call::<_, NeverNativeValue, fn() -> _>( &mut t, - "Core_initialise_block", + "Core_initialize_block", &vec![].and(&from_block_number(1u64)), true, None, @@ -165,7 +165,7 @@ mod tests { let r = executor().call::<_, NeverNativeValue, fn() -> _>( &mut t, - "Core_initialise_block", + "Core_initialize_block", &vec![].and(&from_block_number(1u64)), true, None, @@ -198,7 +198,7 @@ mod tests { let r = executor().call::<_, NeverNativeValue, fn() -> _>( &mut t, - "Core_initialise_block", + "Core_initialize_block", &vec![].and(&from_block_number(1u64)), true, None, @@ -235,7 +235,7 @@ mod tests { let r = executor().call::<_, NeverNativeValue, fn() -> _>( &mut t, - "Core_initialise_block", + "Core_initialize_block", &vec![].and(&from_block_number(1u64)), true, None, @@ -353,7 +353,7 @@ mod tests { // execute the block to get the real header. Executor::new(None).call::<_, NeverNativeValue, fn() -> _>( env, - "Core_initialise_block", + "Core_initialize_block", &header.encode(), true, None, @@ -371,7 +371,7 @@ mod tests { let header = match Executor::new(None).call::<_, NeverNativeValue, fn() -> _>( env, - "BlockBuilder_finalise_block", + "BlockBuilder_finalize_block", &[0u8;0], true, None, @@ -807,7 +807,7 @@ mod tests { twox_128(>::key()).to_vec() => vec![0u8; 16] ]); - let r = WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "Core_initialise_block", &vec![].and(&from_block_number(1u64))); + let r = WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "Core_initialize_block", &vec![].and(&from_block_number(1u64))); assert!(r.is_ok()); let r = WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "BlockBuilder_apply_extrinsic", &vec![].and(&xt())).unwrap(); let r = ApplyResult::decode(&mut &r[..]).unwrap(); @@ -829,7 +829,7 @@ mod tests { twox_128(>::key()).to_vec() => vec![0u8; 16] ]); - let r = WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "Core_initialise_block", &vec![].and(&from_block_number(1u64))); + let r = WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "Core_initialize_block", &vec![].and(&from_block_number(1u64))); assert!(r.is_ok()); let r = WasmExecutor::new().call(&mut t, 8, COMPACT_CODE, "BlockBuilder_apply_extrinsic", &vec![].and(&xt())).unwrap(); let r = ApplyResult::decode(&mut &r[..]).unwrap(); diff --git a/substrate/node/runtime/src/lib.rs b/substrate/node/runtime/src/lib.rs index ad31c08296..cb128aa184 100644 --- a/substrate/node/runtime/src/lib.rs +++ b/substrate/node/runtime/src/lib.rs @@ -58,7 +58,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("node"), impl_name: create_runtime_str!("substrate-node"), authoring_version: 10, - spec_version: 49, + spec_version: 50, impl_version: 50, apis: RUNTIME_API_VERSIONS, }; @@ -250,8 +250,8 @@ impl_runtime_apis! { Executive::execute_block(block) } - fn initialise_block(header: &::Header) { - Executive::initialise_block(header) + fn initialize_block(header: &::Header) { + Executive::initialize_block(header) } } @@ -266,8 +266,8 @@ impl_runtime_apis! { Executive::apply_extrinsic(extrinsic) } - fn finalise_block() -> ::Header { - Executive::finalise_block() + fn finalize_block() -> ::Header { + Executive::finalize_block() } fn inherent_extrinsics(data: InherentData) -> Vec<::Extrinsic> { 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 fef986a4f7864f2825830a7786dd5bcd60add8d8..8aa08585ecbfcc6ddf086e155c3ca3db0537dd0a 100644 GIT binary patch delta 248226 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´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

%B_8 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μay0A7>q0lBsm89G`jWt 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ℑLfo! zD|j010G;2%-J=4wVA9_VdXs}^anW`!{mB^jjwDVC)l0^@lh}Pp{ry;XqIIRN9OsTi zTHAi(T-Y%pW<$3(G&J^-|RNuSeZ7V|HT$PWpBez^OrllyY=y(y%I9d zh9FFrU!wEl+_(7MoBN=5i`yRfmV1me`OhYIGvM`x?|zyLx-eTe9N?aY#M=*WAGOM^ zK@ewlp{1uyb?eip(yt_-n)J`7y6^IfJEpmBSc~=SZ@UWtj!(bsZZ3}lT6kAqTWMib-#gx2juzX#I3BrynBQh@yR!cPGNhQV`>xw>bStzwtvv;A zmTbofc{w(HjXmlMzv~W-UFLze$)&&O8Pqo>_`UBcpzdyqlZwd5Yx~D{-E)%c=h-K_ zu8scx;8gcdDfEBlOo;yvo@r~H=^krU{5VEuYxFf)hst_b)ek| zv)!NdxE|t%SE(7`WkCVfS?(&d^~hQ7$!x3p+3tz$+q&!=cLm!TbgnyW54qpP?`DJ< zeWw{CgJQk=VoTfU=em8`SF`9m_W@Qj`g~yXM*Y3>-K|#Fwh0%wv+Z_+TYDjd-F5oR zi=bex)Yo6+&L}|pj~BUP`+V@shJ;t{Ti~pO$D>%%KKefPV)s+KN0iqK`I0{I2kuA7 zu0i?-&*+hJ-G%lwmj3ZvcS<;C3~4!-GYTzVtDU^N%(_%Rkaz2?7xmkDcRU8rRx!`L zD4J}R{_yVk?l17+iC4N~1B%^-Jt5{Mz-K|RZ4X}Qo?%-rwspJO?P?8+QBS8N(>CQA zcS_QJaf=3>^rf8crPt1K(`^r4>kdppQapD91cttFv0EL2Gf6gDqaR-E-bTRl40nCx zO>UKSW83VT+-X(;s?RLJbUJX*%2#mEmf!5&5quzx^>$A2ee+Y3F8;bZudYVYbu9$his|(ZpN490_Hyg^T^roc{0PpCAWo|G0 z?7z%ycCpJe$;C=L+oo?>=Dw}#Z-cOS$JR@i+O>M^`CYrTExXO_nbJ#^yPu#RSKfhs ze5P03;SNK0-nhfP3g@>Sc_*x`&-9`@!S(;!_TZf`b3+c1p+QKmTI?R8Z+JS@TmSZM zcMJ#FeTBQ@$QT;B1sprd{E7=8xQ^%3&trCfFcZHGx-gm_R0T8kt1)NLb@#Zl`(Ruc zS)+H~#|_Uz4fD{dF2?P?Rr@=gUX?g#bq4J&V|#HW*yv{7>5}HX1Y7mltKB(= zaEX{_6Xv>Rx#U=5pWr$Cnc=~~V?M62Ps){ZDqD`5w)`0_9$RCDSjFrHS8WRS0CZ2n z8-zORA8~VeX^a;VcL#02onRshmP`0Ofu53K=0d+1l!xK(?W z6I8s%A^=qu;te*aR|!z{2?2(Bxla11J1B%&MJcG^M(F<+a1&W55h`8}jLm>Agr0up zQMaqsRjInr!3iMop6f2tu#$o2 zIk`$zfxk+G`&Wv8IVtXCE_386=v^)cg1eAFd!u{}Zi=eFJfpYSqEi9I*IU-Py7O4S zKBf%fZ7WnyM%-1XUL;R+RyL1RsS3)o9+F14Pk1LbJLPpzeg6+@UjiRRk^MhClL<+t zI}Ay&_=l35Cua5U#y{dZk>Q!}hwch?%jUWBhj3ePHdZrRz zmxJVLo&#rt*tzQ+MRwlPZ1#G`&{zS)DMTw)y42etFt3@!G@dPny@r(=EE`B-fJ@)m4QEy!E5#SJ0xpGqyr zMs9F)FObc}q8l82x@L?{x_R0Q?O(OQ5$r4KPR}^7XE`09v)_uF)ATa>{1+B+B$e|< z_QwWCXE~F#7c*J!jgC3Pje*~$&&fQ25Z|U$!H9G4Tj}6Bw_{h>^!8$_nZ2?RbLS}! zIqt_oT-oF}lXd~l{s&y3ovhu%SVTN?74toe<@hI8vELtd9NqQetKq*FVq2pFeb5FU zC=Oe36JTfO5;mpPadhY|kv*7aqaO-kbn?bw6BK~&m(v5#BE*R1QY(UVL0>25rL8Zv zIw}?A?bh!%J9;SA9q+VucoeH3>-Hzv<&QZ+aAvnY=J*MpFMi~4hZo?>$6@|oWMiLj zRCRjMhH@PEbQ+}D0ejmHyRvYCuYSTY3YafH0l)ht_RAAk&%ea_KgnaKJ?VG>KX?a?+bRisYp>T$QDM^o)#Gw{GD54&LPv9pKofwNDF)MJ!( ztiJ>1#_F=O4bM8J73lV2n?Q9uJRRw|Md5Ep{AmYKO6bg3$Jk@SyM{z627J zwft8v7w_8VUzgn?jk%p>P#^geNY_jO)vSNDGOMCRUKbkfEGn9 zMT-`&l&W@270h%O=pByN6y(926=Q64t%tLauXm$&&hqt+a3b)U08#1PdB+v%ov7pV zf=PG>vXF=L9o~FNNZ5^<%XGI$p0*sndBV5633$`am2AI}hSDsh!zflWcnG83k|C zo`)xM*I{E7>VP+4>2CgO6dWDWpI2~p2=6=M@DSdb!|5Ts>xI)pym}r7A_nbk^vDmi z*MZiGH^A@;@;I#uU4h{3{Oy#nXk$h%htX^0?j7{ngj$W00;%n09`x!J@vy-YLB_L! z5nW@Bpk!1;j1VVA&k`etAuYq<5rtX+uVoS!2kw5ryNcs92QD+Pj>1cdTrLaPAt>14 z>VS5{4++HYCBct#LNX3(IZ%Dhtq>1$Ik!S}0KJ(&4}zZ;SzYnGmuGbe<7|;SkP5pt zQy79$_5vykaVqOtDl3IH*e1AiLNz#-ju_*1DnzsvDn+3?Fva6smV(1ybe5NQkVDAW zrk@}+uP6?Wi9Q1f4t%Xpv@XO`RFrrkbO&Cu&;D~0QP+Zd*BfJ zZ0^W}I*B5noF6DDDq~Pq8F&#E19AyYsJw|$g?4wnMoZbfcn1190+rUd>kX^QA9C-- z6KKpm`akgu+5)w+>)%ia@Ke0()mz_-)e^S>BADmiPh;#`x@+t^Yq-!gwn@daal*=T z;W}Ya$d5)LKUr1WyO(C+5_s-|#NuOO@v{|Md*HynD^*Jqx8Gq*A;Nqy85QR1S{a4; zx}1kc-+?(}uT9Pw+E97}$`;frH-keq$58UX~|-U4VQ6+6hnu0Oy#9REFdYd0T`;~u(&p@sWWg>+8rHN5$r!mzXB1$bCsIz93#Ub7x2 zqAl(sXd&ETEE`_K?J#%ZMQc@GMeov&(^a}3=6YNbLCEyEmpAAwdScJ-hk0GW*&FmC zbp)z|DGrU4)j~+eq?eLCfP=GEn)#@z_y@h1>6H%^cxI((b}%lC+b#SH6NwH>vj!0g z1J93$9{hoFNM{>Gfzb6~DtC$3pi-rdbgQ|_ui2Py7w%}WgbifL3Sw7q{ieTGa3|GAB4xX#U)xG7IW^kP3 zHWb1|!Rs=eD11Fcyp96p!z@=5%xAA+0*ZY?_o0xngK#abPwBiHZWTsJpP=G&lj5g} z{s|QDC?%gmswimg61)AV?;3?)b!H1=x2*+yKS4or9Mm*WH=M6l3s_?}b%=H8J?zeI zYQM@leykA-Fr0tNqsFMa2W>;eiuMz;ysL=q?*@bPfDNti8bq<6@v*o@>?$6^VfaC` zO1K&$3Db$)c^dq~LFA?uhNr+yr6ZI;w$V`&G#@dznx9*u_7uB;ywmtc!He!6tzV{p ztlYnpUa-SLVHB+n@QwL_@Wb=yC={6U3-JNP^N1BTkpPV@#~+3vxq{_vRdd0>a8t30 z@t)tVps>iHYQ@D4eU9D-uW3OLcgtAqI7A^Ty;(F*9pNzA6OQ&L%1|ZWU9R88j_#rM zNKpgQ5QJi&G4&!M&&TZ|$9IP>{!e9Gce>Lc59@P04MtNG(HP2UISE}e#41BT`bcr-67;4!J#@Ghs~ z`V4A>kDw~9&v{_6;`)Mgg{n}9D^*W~W(!T>R)&mEz9^844tEHOAiI4gg`F?q0e2B9 zW$4%6ft|v_PQRBV1Qri~FF4+VyrQ8B=I5D|%1H}xM{B*VQuh_=pW)De6Yz6DJkQs^ z0JMNRCxRSDfp(vwjisXw;Ail*(_Pq9qnkLoT~Gak8lXR#1~tWMhAK^r>~s;fsJe)f zuy(>zkq5NJ91TQIE0@5gUOHJjMpyN%$|XE-56)N|V+=Cb=&oRWy+Xr_AXUH67+onc zCwzFh@{PfPO1g2K3xviU!6=b7vBa=}YCvzigWdL*o9HE>AZ$z+kodLp;2+m6sAG5G5Rs(TlPPmvkqW zDwRv|rDjN_DsQV)E#*yhKI>JnD!*OUQ_!~0LXlB8BJ)_rlLlU~yi1gYn zB*E#2Hi~Tvud<0Q*sthcr<;|hQWt!u=-;$WrDpxNqJNuCr7l>XhZjRvp*OE>YBOFWg>;q8>~+NKh_9~9gzEOCk5D!h|{mnKN*Ebbr479l)T$#eaLq2)TruQYQ$0j8 z73}1X3U1HlChrPTQi^9r6UGqYZN?Dd#u%d4H*A#um@%fdP{$!o!v}zdj|OFemXaoL zD@SGig+>_-AmGpd;+jVpS5gM-FJ(LqP{b9gK#n^%6h(|LC>O>TMg-pm$HZaR-L690 zC~ltJ7!*e-d7#FfHZ&G#9w?;k9X?d(Ofgo-<`HQghld$`)G}%HL939`q`1L>Svf>k zFl6~?6&(aSEe0*BMe1OOp3|V^6>}F+1MpGec2gd2F*H&6OgGv?j$6C_74Jc?;Pw^O zxi>|V0nr+R2IzdGqz8&nP_%)aR>Fp6@+ibGRFX%9N+PJ~D4AqK3(}Q1)EgMlZp?q6 z(DWjT*-7ir%Ge=G%ctoF4QpLQGaV>F^9UNAyCbCLg+{H*sc%S4sB`SRbI3T9)AkK+ znj`_rdB1ae>&BNVc}iM?Xco@rx)m!hER}4eLZgw;5Zox&sz4A^!xU1(xQ!0`3XSq4{-BxEorSz%%Jrg5yA&Ahf(nw^&WD8c z{CZTgw#pViL}y`@Nn3GK0nAN$0)df9Pa7~Te`VA9sGU+ja$~|>WHJZbme^hBh$|F6 zufeRqGixGGUZij{VTVtI7w>2vQ^a95;NBT_gP`ap>V7e`3cEq`1$@>yZg|%#U>9|^ zzYi9wXd&`@Y3^pf_ffm2jJ79VLRd3&dLeyS1GnRlMdVR(Ab!Y1$uvMCaknvY(VBb) zF}l{y?L!f7u|ko-M>#AH&A6DFNxfhnNbG$|N*hI2QlJ%R;7Jt}nw3wUlo)sgl!uWt zQ_Nn557lPGkwZz9;WS3A_`GFuxDM4NO;(W)IH61s29^=Ukvf^j8B|n^Gbp$ah{hQv znW1K?lm8sJ~- z8sJ~-6wn@rS1d%iNn0*sp8bHn9)rwVD$we2fBw9vnri+$A7%d}O17VZ&ebsT24CRbL zL4r=SfS?n#ZcA68j>S?R`*^g@!d+&xn4;xOf&Lp?*kA3E!lhf7dGXZnVk<7-5-YND z{WU9AWCXAxE2o{3Lj5uz(g33UM_R5gr42=g{)QFS2M2fyz~v2`lf{K}Z}9uHuop>V z7?-4Bz+D2O*XiXxYG))bv(n(X+}eU0|8{{YU*828yPyDqJ;3WPR=t?U{}oo;21N(P z@p*@r(bam#Qmy}m{{%MH})t@yG4C9JU0hJgjw)axsG0;4Ybn`K~hf-X-}8;|bZ_ZyH(n{DF`TpFOynbHUdIxOD%)9Ly7J zRF7@2v|P9?c3#5*^akBI_g2b!KlZ2YrAxdfV@0*rdKv9eU5pP#Oa>zFvA3->XvKdz zpBre~WH(x^z5cf7S$eL9ea-^cZnQbnlJ-W6$fdIJEf@VQZ2DrCfO?pW(p%OE+G!%1 zYJqo;C9z(P4YR`gNdU-mAIWnX?U$9Ky~b;&akKFjinQn`0*sbmhA790h27NsDi-91 zNSOQ!U2kE94m3C#SY+`=C?vHJ4O6JUilB{q@4w+e!(acENa@q zrw7b2Z7Q0gnw~6n2C1ee=d3B+9?fft-OhC5n`(;k&>;1$cWJ8}Yh2fRR{B&4#LiFm z+SQBP#yOJ_NV`XQ%Z&Yb?p!Q-DCG&*wdFegV&IdUpQj`-*R z$t`N6X0ozsRE8Y4nH}B*E>vA@QraU0lhS)QAw!MeK@=WX4hdW`Cv`~6bwd_uanQ+G13fLbyUm)6pz;xD+XP@i|>e zMjv}22b`v$4fyFD$gE?|4kb`M4lM^mM3QqcDQV>iD zA-f|hKPyY*^gs^w?WIZ&K@<;sGd#kBWr|P{E05xImkzU3G|Zw9EF@bC2v-1mi&*?4 zEKD=qeVtF%maHjK$^HVo$3t#_#jw6T)8>pDVbiQ)hn1b6O*z!o7POgEresVl;gXkW zOeiVLD2AQ2QlGzNbrsN7ugTsb=^Zh(7zP&>Ud-!uUZDr*dd>hUh}pKk1^Ydyv)HM# zg>f+!KHzk;z2u)@a^+&dGgA5D zh8|sH(zJ9MHh}5a%l$5u<|#at48vmtDZO7nsWe5?<}?+X5>uj4`Yx;2qVfG`K2f%j zOje0@#SC<@r_~0F*Ahd$0KNJf`Z8bNW7XGN&vOCblfoOUm$(7crPzbhAF^JybfUh= zim{CGFWQ787a|Gf>5@oTv#exdFp2B`;7$fk%oOMkGrw2umC7QaZ8syS)e33I#yrCB zeYEJ0@pF3Qa8s@R2F%?&|8a8I2vKCLK?dC_hz|flc7h_E)S0_ocpBuluBOH8QY(AM ztK!3jqSN6_Ed?Vdc~yU4L0ks0ZG$cF$AsL!($ZUh*m@pWOStUY=;9yX{0GmjWZj;m zzLz-nP(cU&tWc zXhM3?%xFah=Xw*)OJJaq-|-~6OdaFU_XAPY{2V%6|CVPazVB@unmAy^!6yAjVh7*3E3qGpl^AWieF;QbiG9MElmnTs#C{@Ie6(1J z{RGPzcIZD5vw9Z*t;F`hMb$q?{6}k;jy8B4`a#Ikg&c!wJw;)s`#*GwgD_pc(D?y6 zuLk0;G48N^iDW_^L8nigW3?ij{2(bPigUFVdh%B;ju?k`{}pc`E#_|_kq5!wc*2Qn zGsKfeaYHqK0?B@Gh_++*1k_Jc^YwXpWxadB1l;4_tj{C6I2Slj8)5nf*1Ipz`w4SNW_nV+ z`$D>h%A!w3_hE;uoRauvn@wMUn>6waLYz9q$9wQ?lEE$Ri?BaTBy>&+W{Y#v=j#h* zy2}^&t(&kj$KA?uj2L&3eiC#~tTgp%-RdOR4S2eqF3W_9fFIHyigXg)IC^)hQ-*2wo*ZH7L zpUhiFU&u!keF_DxBRwEM73?!{D;;kd$l|($ya3{}6ijhS6XIT~;9w6+j!@4TU8loe z$bNiYM^g)WVJJN{A4-Q;=>q!ibBoR;*I2wZ^IDW!7nKZ??Mh;HXk;PONCm~>ZWml0QwsG zD7zekl6syyKm6!WS1dD%trkV$oi4md{X*)(%kX6lY#4}6oj+4wg2(L^=-m=*lN9Om zCuknDL1hc=rQ*MQtm2FA*K29Fq7Ew`5BZh(`pEHwMqcG*d_E^_(DSi+w?hr_;=*ML zJ`qUr!HvupOCp3&G)t$PSA0j~xh93Tf{?DwZQP7uK z6r3*r#HlIt2YLz15sG7k@$B>f!=4iFJ}jX6lGG+~7N^C5RX2;H;p4>YzlK1De01p7W=Q;d?%~(s!gAM@ z;!o@3@`N5Ek`~~JGUmHOXVu@tu>9@656eGjSYn+;!}1RdOQ_2qVpsy0h9yqS{!ZVW zMdM%0hNxj@+YCA!PGzy-&<|KlxV5WnZfGfWJt?=loYnUF20nJPX`~n8Y}Dnw#of;AN1xihx!KZNgG7k8L;_ zr@abj2-1f5U^;|?1ydnTK9OLkuwFpR>mnrR+R71lx?g}uJ%ku6HaUx+`+5QGZ@Lc| z59Or)v=>V=B=_$SD8h3-K1D*H{BithFx1`fk&MX{-^<}=qVgd;a1@+H=DmkPS+B5K zT}~g=;SXhLhHb(6qwUnm=VB$FZ4RqFz4@Y_%SpTs3qyViLi^*pso3% z)nY50M;!gFr!&Am!yBbn`kA3y0aD zo~UQoG+&W_`XR~&_y}dw_!LLm9PF7f zYDJMaa%aamI`-`twR|8RJ<^jm_E@#& zso4zjsOfq0L1@f^P+tdjD}OdT5@M3Ftg^lh+Rp?4oSQKk` zA+AJ4*IaJJUB1g`{$C9WJZ-^LgTNJ5Y~A7W8(8xrc9j*klew;@=u$+lNl|DqLf2Zu zgIzfNVhbP0$3sI3>_-6iHNR$sFi>EUX21$5216dHj;~A6=Kku*Bu#U?c z5reabBmS<{*6>@nL7HyHSR<3m>T!SL=see2>*yYIe`9;Pzfs5ijp0Rff8!9`-v|b+ z*z$b98oo-QOB@$3a;>-G8r;Q;Q;Qdma%~Xd#mL-f9bM^q$cU@1O>}hrAJ*_6_}N?! z6QdordRHr5HMyB$*xSIn0j@`^;R@HIGNGd0h20NZ_;H|OyTcYtk}7_K`k+ zg10PPpOR94#+CYWE0p>RQtE$^Qh!NG{S_(o*VGH&P^W*(2RzLeXx%(+uIt2X1=DZq zkJ-yrtJ|hjTBlQLoc^hGK48-=+;!$_0DhRZmR1AlRRWDsS{vY{XZnX;vEm16xqWIU z%v3&`ahy72a3Nk($IIZxsYcxCOQG>%{=G`kd(&Os+~dU+*r&6`v1%9gO1_$ZhTfaM z-zMHCr1y)d2Elr`tZOjFE3HAyO8~>AQNfNh-YL|Jy3>0A8KXuobJO-dU06q%*DCDM ze6@Uf`c=gugEj7Em#jU4weL{YIInwn*2@)|b8Mr~9XK{ZFGQx&r4;f~@?qWR7H_)5 zTbRNXz$)vP*J*}X9`TG?( zb#QIwJOomor>yP9X$=HljB<>Z_`i5(gdYw-I^G%K7lm7JkR74ds1Acm z%L_%NbYWS$6VwTKvHGMF)Xqoo3uEv$G(IQ*htz_p9$Ntx#rxN;}m5hd;S#F!s(N>D19!kZbW`0>=px1(KV5=x?89qTZo6}% zK+wXOTpZ2c$cCM!hC9nlUsmSz$W)C?tll8j)>G9AW}B*ZC`~78w0nWK#hq(dzo}fl zx~b|Z$_DntRJE6~v31W>HD7V#%?=2|1?-b4h0=U(EEx(QO5Pdjv8d0)GdPoL&QSY- z$-`%$aW=63oS_DgS9PX3MO3*9yYo!-DTJq;rKWm5x|+Y^O1ERso5T;T=5K{zGp4`g zzSZoPv(%%DpEadDxtc9MTOGvuovn5#-etSviIUXnc^qv9>IuVhq|wogV; z+Md;H$vNQs1UUa+xg34es=JMP2r+J!Q6a{185LsuMMfdUlDpZk2zsjgY_%P$I9F{f ze%6%x)ZOf^bJd0%X#?1?)6_9JGoCqI#>nZ1QY@dYHXQYpEK*4SiHr*A-34GJbIZ3kqK@g=Dv<^4dKm@n+Phges*cK8g-4?5s^b5cka0UA8e#xj9#enKN%3r4 zZTjz}4Pc8BYNwnGb{sCFTk=TiF@W8jJd9}X%s5Pu{b~=BG52s8&miMSYN^*9hI7N= zG9IrxR5y5w2kVcl`p?v>J&RV{gDt~$c(nOo>%Z#N{)+t##qoPS>oQAC!iuJ5!H&az zZ=9tLNA%lSYGomJN*vu?8tX7Tuaq4lC=Tdr0^A;4%|T zF$%vs0R|o`Kb`J5gcAi1o9<13|A=K9xl0aQPVd5J){*4k?vvgwEM6kSL%<5GWO4q6 zb_6j6Vq*ahVs%G%9qXu>ZtJ8J7Nc|#3_b1OPpEOn53T^FXfD^9n}SLb_i|0~}MwU9%Gx8~^c<@7NWOb@->HmV!$9;W9s znBg6$la19aPzTVbf%D-Bppobr7rxbk4KVBkT1U}+*Ou@)abgnGXct#LdMcmpW8nwv z={5{Bn7kN??@#buBpWyUIE>3vc;GRl#G<5wmEQ91RHbgF?JPC4EhH{rw2w$j0?Gy^QBt*VX$ zI(B8pu`4SbyW-h6Um}~r9(I{B%<0{bjw4rTexm8@;jT!BKbcO)c`GZOw@N2S#J)(! zX{&TP4qI92uoXOhaWKy44LgonS^0N)jUztk^xjCvK`W!12N^NiCCs}Y9}l5pRwcTf zAG5+@bfQ)Qk2#;l0PPN0F@$gcvy4{5d6XapvFa)4Obd-SS0082E(8<1Jv3a%8-+Eg zhq1EJDJvUSY%FEuAuIb*G-e@0!9yX*F&`T>Ryt#qPLOTT3+Z^?la&tr>x2wEHA-jT zcojctlSyzO0Z-VB%G->XY$7b9taP?2jW0{AL^^i84@vKWbeyB&>`?zaBP#hx^3F)d z67~>sH`1|zcu0B$(y@D(PRFK`m7c1k6C~sANXL^Eo<7~IXFZSsi)X0m5X4|?(&X6N zq6AvyP`{8ZBtxU;(IF~yGHvp5vxArVD1;}ic&5t6U7!x{x%D3I57N4yT-(QF6yb;P zzVHR=F@yHr!#!c~X@>rmcO;6Scuht@@xnc<_(FAZ(Q2Aq$@o3UYA;k>aJH|wQ2l%H zeFD`=1+Bh^jb5luIO;Z;COkSOqr#)RRz^ixm&+&^{IRC>xrOSFh1OfFE4Q_)X5U?= zcJ6eG71b-FjY+^R94gLRSg*^~??>g%BLe=7OhEpHOw39glW&qE(IdIEp0rGT&!*hM z2497R!_6#lmD<0Qqb?K$QmIthU012@cGxGRSDx9-tJL1PuvT8JmU#*wCP>O0{Sd%; z3>3$ARh?xBmCz;er zqU+WEC12euZi4Lr{y2USUbmAya=p3(S6E$kgZhJFhdip4opgiRo!xq)x}ahk@S%se zEAa`NOF>A-G^Z;L)iV0&*3JLE^_vgB?#_ZM)v0XxEox~2ZiXcEE^OT`YN*Fj$VAul z(}iUP+|S@Dj5csS!IWFoTa>TaZMUk&^xXZAr|Cisi>m;0TVZ&;)m0Q;`!LcR0PNRW z)#{!%JccOU1lJKLop8sjt8@5GO6vm9I`KAjsA7G4GrQ<^HEg}%F}CG)oX`UN`F8bQ z>-Ud~^!-nXbU^)1To@s~eSjy*Xs+0u>SK!XMr-+9PzdF<)~SD0|7KNQWxuRe&nAENK0b+5N5wutr*^{NA!lo`FgCep`|GjYtfTUjkEQZ+5`|A zFH3L|J)-KJ($d(Jpn?+mjJkP= z20dEW5NTSVPmMIsMi-&c>Kf1o$RD7`Y9nvW+za>>^W@lL+UW5ZBo5#$~Lt!7oT^YQOnsskjYNjs9t2Z z(2p&DMjdh(869^*cvLW>Ni`_0u2+)mz)Bj_OG2kZ5R}JEIn3 z63v;M+YoPVePolW*;?OfRlBw8a@h9xd5hYc4cw|u&L0+;+fqA>&3Ia^VV^yOR=VwJ zHIPfzub);=I6T91H>qc_{@c`n?5Az&-;YP7hc?Y^Zix-8uJQN-zG%Q3^hA8#STIrJ z3C2U!F@Gc)OjLQQqyA95I-U#+ZElJUomCf&LGOk(&#H?hhR$w`4{2&VJZ)Or-oYox(JI&M+ne_l>%= z_~gV4*wjSRgob1zT5j~WY7ALxzE!LJT-N_tT2`=M9e>2l$>#4@pJ69{sQ##2&^m6f zdPzRui=V1n|73VlZCcO&PHnJv7&Zg5PJB*8j8keE??JT}`{YM;JR9+o`u*XXr12oe z_>O}Z(v`ofBUtEl_1LqHRFB(?#>P3#LnBRfEwyObV}&&1FdNLOYgwS5keJ^xuCXbG z3HthjYJc|lLAAWK$oqhMax`qWE+UOg5Yu+4Mb7O-xgmqK2h3zLa#4+BR^|1|e zXP=U2x$$~!5sO>3*{pKES{eR7%gopx>Q#qtr-v1-PY&@|2UT+)p6UlhbF+S$wvsJT zwT`T_Rhz`NTeXEOGG6OgDr-c|W7LY(=4)fA7edU|UYpvkIngq0W?}(zIke9041D&4 zrk&P$yiMzAYYn&4cH74Pf3u=1Rc$%zR;*on*vaUHVyz!Lv%NN+ed^R&TL0Q!8>6(I z*+ILr(EC3Rk=DxY+LU%s^o!iuU~8_{MQJ@+_f}}w#v{!<;^EYKdS7jhQXpq=wzHph z9qThd82+j>;B=GSPtQrvddrW#hYCjDBewYy=j1jvEL9u8`&hW?K_!&kLRKUJ7otAbeWTe$;ITf$~5HEFE-UY)UfPV+{080F^OP!WH#783i1VCJh zX6Xq?zZIaB0&iN|R^T0o^Hxj=T+82pESq>AGR+c~-P<<)_+Lb!L|TD75M zzx%*9--tY(h1=urPD@HQ6XD$0E+fS42s@G12N1j0mV-A@%wjni@nd+%VtFl3v>HX< zMOfC>1so~VrYS<8mHAG~X~6pmP&hIuuMGV!5&JbdExirK_GYI=`1ck|5yBmf^urbS z8w!_vWPys^i7#?w1V0Ax;}E|Za1h`lfa5G^|345o83`vrvax{l+it4akqGdG3IE>+ zI|Lg`F2OdSOX`u&Tl8!My4#!(j4UfK63J_ za*+Q6>LweU1js5~H`U#Pu&lF$Te8SsLOegybU_pO_#EV~0bP?72h1X$Y$BhYgZu-K z%YmOm_*xVB{2b(;W|0Rjg<;7Ezt}{6T@LbZ{#^K*Oyp~GkpGfZdRE;(H<7Q;L2fI^ z*bJ&Ww>ez+v81${P2}5ike7g*%$MxQhIyH(hYvzxRnA#iHfHqyRTC>Jm3}?Iie@dz z$~=a-LCMW(cMevSU`5)Pi&Zu9I&oHfRGOvQn}gK^pcj*P#;=1eJC|3=+`I=(0clNXBe01Uduok^?SW~^{pDv`AfMH~hAIsQn3?6|5rEenyp3~&_S1^A=6?+49kaRYXS8$*-% zL-?b~_XNa=uS|c$NC&XYLmufCekseIU)xT=c@Jf*2w^M+vNQpYf7Lcm&B8VNQf0`K z(-!gZnQ(W5Cpo2Ci{YY>Lnd7g38kwd;f)}mdCk(^Y3T}pFM{yeevL47Oss>`(gSck z(y1dF@kgyN66qDD^z)7Mtxl&UNa-nqU<)GDQ#T`nnoTm=iZCh1d0FYtAdLhXi*$k# z|7nCL;;$6xL?_dKLYM^l3gz`PrKkQtgqmp?GRy_zDiYyDA#Vk0Q2OaJgA_P0Ve?7 z3TPJiHN*!aoql&gD6Z71h+7^&LJ^q^;Zo#1nlY*I9JBIfpqqVyKOvu$gFM@z`4jRZ zacKU8{74*{KOsL7hbBYL4Y#@Jayc}49fi+KMvi`F!|gy`_sndx0!=4>t4+-))A|D4 zJR6x=rKJ*cq*Ci>^+!4TY zkpCngEdWcqIxQyxMgdO(dHuEQ}09th{dmfB!xun-ATCd zivVfx$@J$DC;SSCM1xPJpM>}+h_415$3EJKneaTYq-Cg_5g$WEX-1rZ)}RK-j^EM4 zX~7PYD!sfj{SyOpgK0vMej!r#$1bO@6#BZf#cFTaKBK=5zYZ$;w=o6%T;1be*ot z%3GTi9}8S*LDy&HZ8yis5>EoMROeUCnaKM*D}Fj~rS;sOl~?dY+uB|Z-%c*vuR-`| z@bd$b($Q}y!YPR$*SKX!BqxD>D#A3T=*JyJz?~3aBu}weewv+`SS0;p$d@+yUW6t6 z0|=AtzXnk9zqlM{QmD`AcNsFM$>M`i=eWnS2 za&PA_?kCMb2C494$dGg2r4?tk zR-_X$&MQJ9;+I(>@itjuVzoL4tDRsa`<%$rk_gYjEXleY{{8u26zh85Z=k;k@_ael*aq_`5$nu`a zke4AWJB#2^{ls>W1~`PzhT2no#kS?mfPMKCqfJ7Pyz_y8ZswY*mG=1pWsn=Y6OdLA zG{w@7n9}UB4C!MzwS6Lj!^K=xfnX(a<(zWu3Ng+CAS0EO>HmT_V-Pz0d5B)zBVgwOC~OK;}0NHOVMvTGR;C9%pmi8bx3AFShlyt^&oB* zq71mwy0+;_a0+rXNKKv;ut7cM^B zCR2-_k^%uW|Jy*A1XzLiPy^A-*euY+U?3Sw9V3$0!9%(&a&~(XX=Mh#Tmq$*0YN@f zNFgkBK{^#gdx?qhl_;DXxv5Aan?}D82+J-r`v;?tE}g!K2-6@N3P^*a7a;Vb8_`>C zL9Hn<{iBhUnF(%tS!x}&ClQuiEaAN%mjjqsY(jh>C+D8QJ`;IG4)PCyPVFh#$#G4r zK1ZI5Se5e$b&!eGa1$#+rC*^ZQ)7x}&BsekQ_5^xI6OugFpQ z@gSFjf|@QvehiI#Gx@q488-{{+boP9u9%1D_<4<(3TJv8VvK{P_@;EC^QAh}B9SppLlN zm8wGgW1n~w_;C;w%eI0`R#s2zi$Uhh4{{(CToPw;=v)EIyJ&`{dPOUo6cY1;pzMmTwLG9>_;ir7VLGpiyuXAgv%zFyiL`k{v(Kh%W~0g!oE8 zGT-X~Xj4wcZ5aQn>zbBw$x!}7JbGIBWqk?j>!)!R^)yy0Kd`k=B(za84 zGLYpk&Bk47!VNDKeB|0F8$Jp?qrmTaK$=IU0anv&EE5p4{0E8Bpk<$+nDSaip9t3u z?@MZ1wikDH7H&u2%8AK*fP#Aiv$Bv~hFeF4v>?yi8cR*M@@a&GAA^p%W)~o}m}~)t zI4#qqyC~t%5RL$xi43V!2Mt6Q(nzVM4;OBs6VU7yt~yG@<<8T7#Obkz#FNW;iDz~n ztw(1(uf=bq+SYFU8*St5fh@N*wjfXX3Mk8>@5(qI6nC2#k4GL=K>ns@#fJiycOA8V zZC2)D#LbT8NFd8O@}{i3y;<=|z?Dwu!7RScH{0?(7q}_ugjOQcEb*u;qu9P zggo?F3Z+^s&jMeTape{0e>p5(MuzlcWr4SbMSka+{?vSrNYQ_KR$3jAxNc(Qs7 zXzIXsolzbYF?9s`Uow&s4KN5U0i>b%KA_Z*Tupj5m{7}X2Am970Q_=5`cVOrzx1vZ zq@9MmFQ6k>9}KYEh`^Lg0?}E{LI27^DW2sOPJdr^KK6nUmU=5;J;>!EC0o9_|tooV@rA7{v&AeVzt*1gl1%y^?>GEK)FPIKv=9Hp0ooO_9eh-NR58@7zY zX_h1iR@uEU0IbNSNy*Htg2;1bSe z()%e$OgrRa=hj@Q=_Ybn@|hqvkIFwGugyUo2f4KKBvD2;_!9x60NjjlTmdk z|02XIGwQGyg~;D^rUGT!8lYz|ES856=j)F{t9z4)Tvqpapi57VSiX)pUsn(0hi+Dx zN?-p08*;JM%X-Uk?1YPP{N?oHusg<2)>u0p#}*-}X!``QTe4sRy94pmZ{wYoT5wGu zoov-Bhz|kmgFpI_6!gU7UZnR0Yy>3td-Sp5IppntWVU}c;Hk*(hPZ-w7;xn{f%hFC zHG&Ip8sK6;c;THaAB`0=-wS}W&vQRu55D|hXJ4W@QwhY$Wg7@c1)Bw<#m@I=jvyfY z%sYCkzsZ;d%99f#h3RMBOIq<^X6R6!377k|miN$*a+Gfavh15IWQtlo1g@O^_xu;! z?|>`4tlYSwe9qXssl^|5@KlTC!YeZSm~wxVvI>sRSTQrc73p&L$=Q_f-6njBXKXGX z7-o}g42;7Yc}`JbGARbdP?TXF3z;(bCXvrXF$Q7T&Ju1xRi!6GB8~*RUVJ3-0?n2~ z6zF;r6l5$U2XjN518Q-6joW3j*)nMWmBW9vKsOsxGpn=>DnFbc^FU2=iWKA$#OXv9 z{dlkCHpRIFx#dp;S&KYARS7|6nHuyU`{;6Qr2QpeH1p*<3og_2^uf3h6U9P24uMF> z?0EK?iUekbKHT4(eeQt_}fk$iZo`4mUiJ$R!Mkx4>eVNXt%w1XWsUR$%4E)yp z+7@?D7Vb3Q%6! zOqWcTPeJ%{m+JpdFxCN|0_+Xg3^)-`E@zJe13IBWc8$iL^iGuxY8>l;#`kJDE-W-G|L<1%SGD#r-@bHLBL5s8Ve-a7op!8q{*7g#oGd; z4Hns!0K(~3L|6(q1!2iU(h*4=(p6c1^RzG*8M3Ly7>v3D_Am-^A}sxr1gtHM^ViTK zBLPnYq=QXs00$cQvr!4NYrg<-SrJw{UaJt#-@lXsV@DEU*@m)%7lX>YJjq(w-DV%8GzAXp2oJ7-YVVEmobvGod;4=|#haDi7zda^aGVKMR%OOQ+uOlu_ z>zqpVV4sQnfQg(+KJ^T-T)!7EfVd5i_JGa)9of8(P8a8{ZwDMBHnZyytQI@eVFbkn zwB3zhxi~ej4`Pe}ZMNOqex^{v?*WG+|2zCqH*PyiypSc+-!sw=ApHb{W%?c?9l$dB zY}3Ti_PBP+vZ-x?oyavblWSd_FB&S&JPaH{hv&=L5O{sUouu(7R30=8e$iP+VxUdETmqXx)tTUt?lpeivXR(mMf?p=tq~4)`g` z^#DE%SOIu1pme`a2M;;CS7ph(8F8$LGPY)AB7=N0!n6l*78sD0N^5!^;^!d#GT=~C z`frHG5WjDYP|xY0_ajcfO(wn+=L$jr{$usyH8=Ma%$jl&T1%?8gstFXHa1y`X6~Q$ zCURNO(;%1rETv_UZ#MPMc7)~pB1?Y-`RFKcQB>vgl%sbwvZz9INqE%VpV6=put&Mkl=0XO206fHabO{5LPAN?My&+Ip4FR?fMno$(O-3nZ}Is5ppc&ckQ z7(0M$j=utAY5B6>uKUWwSgyC9pDDHqrOzQBD-T9GIYJi$js=wYeP?2GfTr&EP|)#! z^!o!yQn{A>kr{H7_bTEtkK(pjnTcUP@}x3SUIEOe+=ZjK23#2rB9G(B(LEUna>^s* zQXosKE5|ma({B}WU>MTB3gF84Udhw-ZJEw+hA1|?r7l3-rwF9H)YwIg*+L^^66T(8=z;o1@S+@t<1um z4_vvj^rZ8Qo*17_5UqA4kfl{J{EKvR)&ke8t~UW!?)YUG3-tL}d>;g^?BK_&0;z_wngmU%WjPz?n6E={~aL7{*ikJG&;s#6K$+{0GL95SRo={VVaa>8B&VyP&YF01wepsQ=A~^gza$fMowA zgXO3ht(Rn6G9(@Yfh(Q=DugSM_89~oW5Pci{Xc+LCGn{J4~K{>ORheRL9ii`!GEF8 zr9)$eupCixIb1c{c`ko} zZV56c0I3+Tf}>+`j-euLBVU3beGAga30pO{?es+?pCe5wF~u{_|F|17Uz6hwI;dvs zm9$$wg1jTq8NV#@E+CP=${gg5d2LJ2xS724IVN&X4)T5=m#ss^_z>r>-w1a*Xd)k< zgWNo0<{+PJBA=dv{3w)`sotM9U2P8Xi6EDI0#y2+)O~Rd^0Tt)o?dSb4AanCYwEaV zAeW|Bc3dsUX@Zq;^ID;Sxh8A9`I6&06Pue%Qjoy(yWmgQEJj|4FF6ijwJHazM}SV& zC6`3pE@xP+1-blfHnEbVatWI2WGS~>8CF|NtX|E*YCELjYbt}cxt-EYE>7W^n|yZ; zRGe&~iF-!G= zrcUpYgS;cirLRHcSsS*KP2{*A|JxX=@j; z2E@;qjyNrk`VfEo2=@Z~sYoa1=gEu22C_My=B4Y9PBZi43&m-=K8Vjmd?Dha00#n| zB+ga;`$Dk~X=ZUDQ0_wdNr2-4Y1L`YUx@g!3-H=I-~m9hyHo*unmQ*SeI#HNAbF*C zFA%HQKLAO@C4j(Vy{Bp&>=O_P^3C^-JLijMlhWJiiY%N4r{m&hAghH-Z5=tEeXtS7 zOP)a+lQeP<`FO0T$alhp*SxWuON{m8;biCvWS;7aGir4MF1EkG$iN6SOFX9sbYfR}b$;g6?FfybbtU|%`gl06`aEn&T z4s6o8u&-LR3hri_kMS&Ywrx|XcA(`y^D&-vz?J5QGP7~bZ+}VGlkiNt?)4USMaKO% zWr){{2^&B20a^LTlhO}&5=TC9BOLm@fHK6rYTSe_Ey+yoD-f2ZQ^G$x!}1|miOZlk ztJNk}x0zUpa&e0h(9KSe`3%c1$Q#D}1n!EOS#8R}D*Gv9+L()TX^)#E*-^r-Y1MjZ zuU;wE1GfWKb3Q{q^}3WmVU~z42iT`+H1L3=*c%e&WAyu8E_cV zdjZPy1}Gb)YuAf{$^mIV%6Ws6UyQUJVd~lah?C8cM(gYqVyMf(a4q8FX@z|`kceU1 z3>YmV9l&zyjTv7eTfxVaWt4|-?*p!!@v?Czns8qMULP8Ik0L;e8|O-4Ej@rFIjyhV z_*-nGuL2x}csDe8f55$n4+hkjXo0SPG!jPuQVYoYK>r2vNEUNF(#HYDKu@m875HO$ zk7{KpDdxS{i6&cmGcZY_Pr!~SDPITdaS+3bk>wiv72P5f+zCh${~LJp+;BG9 zmFTOGPJKKckbDW5-z@S|mS$v-9lihp5aOwb6Z3Nn!gt}&QXid;d~!&WfHYy$1Co!I zjsF4gso*Zi9|(91AXVrLFeNC9E9V1PYL`4v>awHp4FshO(vJ0v@&07C;hs z3Z$Vnm+|q4b2lf(x02be$Fx-?&Q;`|lL(+YcOQzLfDw zgmqJV0K(>csv5Pk#2Cmy!(*#b(^IO7cozpkzikL z)kbvbM3H7(s~v5eKW%nmc4O0mY52s2{e};f9!mZVinU9}b|q$mm~Q)6RGF)M#Y>#DTB z;T!bmU0561ok8l3bF`NVJsZO2>uLWyQp1P7}V(Fl}y2GRPizMti6v zk&Jn&lc9hw=8q-4zGU~AZ0}o`5Jx?)4P@6nr*(10W1eU%9`ySYK~EwYt6^Vk)6Ojk zh2oLw>SQ1o@OlD?P|&qV(CvQ~o3Gub{311@aZcHN{ zTM`KQVcP6uhH9rUPDql^~=k-@tM}q!1!WFa9^0i~{Jf|I9;=yMF z63OaBD3VP0V}Y7J1`pKWSZ5#>t?_vx{%9gr6R(OU8GByyI}OWCI-BXzTe4Xcd>W6_8QbqGWfu}Ct+zTU2NFY(mG zB9TzFFA}c~hC<%JpzIFl5KJZ`fk-^=@l}U>zJPx)yJx3%L5VL>9g0>5t9`Lhbxk7V z8#0cy|5zK)OFwPIh+)H^2q-cT55=ph{l28%6ZLq4fuZNHEpKQ&*-gJ{p1x6k)RzcF zW3hxk>4}7*p3-U4=(`Nl@coR&*t820O^u1Tmwo-RRz5UZ6$Bc-%}|xBiHAJFs^f=q ztYO2NBIi$=mxv7;c5>wW(-N`aQwHhb5$vuPv~p)nO){4B1VW)esHO&L#(KV@Eh()@ zR3jr8@Kwcves4VJJ9;>K?FFdZ{{F>frPY3jiLMR>W9S}lpk}m@+rd}dwKNb7R7ZSC zUj$kcOGXm@V~yOCjxFw0lJt6OqE#WECs^Z6cs&5{XD8!Jd0na~5q`&1p)^YK+8*8OCoFy2X?5z*0o~W0tY&Iu{Sg z>lYcMv#p(qeXOWsacL<=xW^ap24cxrAnFSx#!eZ|9)3;hJCyLCRHqHnClX`vJr{h| zrX>O9sD`H|5vU0SyuPY?@q{86uE(~`hSFCj z<4K<<5e&h8#Kt$V<(-RruvbcpkM168oISgaS_8@vt&YX2y|H96QC*#w5N5Cah->{% zc|+?_60eRWyrCLzjXx2M_&omO0_-k(ac4I0J*}tF2(5hgMqWBI9>??|aI#sdWyR-o%A)q5Q8jDt86eUBG&S2plU_Eb_R@EU{ zW2s5g?V zf!%8tAV)1}C7O3)hG46cR zE;R7I*{_}0bw;Ea(t4^x)xkvE?~VFl4}7ud7;&?{)jSm#WteWJ)iz=-z;}aS+iQaX zG+Znc@nRTN!3ss#mT$EM9TGK>SXDIc@uM(b!W)cI@=W&deyzA9ilGsY#C;Jznlu@U z#ul@!-)i+;4JD}#KnHvYKc<1IYA@!ui+Of8@f|7@neYdz1EFX#8LWz+28jgQ`<>Q; z`7)8H_F~iqJb_rEI+hf4-HB}i{ZSk8gTxzw#}S9gu8PdKgfs4eD&ebDRPjVrB$R|< z2u3jtM2))v{{KHHwdsd@whkY4a7aD zMOD2hfqi>GD=LAN^alcgh_5DE6ZBSB&%9bNpZ9}SR#J^=*pEhu2Qbe;fLWKbkG?~L z75u1arO{Xdnx90Y!3M(Pnw>KGY{ZY+86^>4+>1dIf_DO^%NJ|-i{M-KljiJ@B=094 zN>*WNp$WH|xrkO>5)_RvF zBB4k;6sq$1f`Mov8g02pVZZ#0nRxThC^vzWBs`vEq}mhmctdl?2wjJ2;_%mhw9Xw8 zf(zhA{T6A?~g6k*^lpOmtgKkcc6Cg%xVID zU+6-1=?7Y$QZJ%4iC8ca@$Fq<&>tVq;F+b4&`iGndOvblbWJwHmX#Hnt}~xqj`Vt-rwO2;JVAT z1in4L@AE#-e|YxVbuR$q*gk7CauPGOKc+2{=C11G`7Ntd#a17)QQsizh|4dPaeuCB zvN}OEKz9;e_;IbhIAUIT#Fp|)WSXv`>5Q! zldABO=c*G%wWx28F~xs)uIkkjHv+L3hLt#p3$MCBYvA=$p064;;H#&?JOaK3xf5P^ zc}*;>C(L~cBu+p-wrAR()V8TWGA63pT%Nq0uef#bji#-uQm%Bz&T3fqEiVC+#}w6s zBpY3%oi{Q<%$a>%eSAD{aMldakLy#vToz#F_!n#E?sHJJ!Dw4$z9Min@nege(L6_smR-zYIogt z13P2=s@kYB(q#<9h@dxR_)>LJ-Lbsbb#2EnqYP~3Zr9Ezf@$crruJ@NVh94B)`?@1 z8DZraM*JylMX_^*$h+c&>XbU%!1I$Z_6#Q4wEfG6M+tZ}>rqw1jsbw44I|CW)J^g$ zw9AIv-}-tQT5jqBG7Rur64_F_aLD%4Wc5|5i|bMaa>`Tcr?5Bc(?i$fY4XZft7Gel z1779Rd2#3|C}Vzxfw=qC>R|(qM^uiM@7P^+>#D$ISrBvY9OFix)t2skwvvtkdmVNKZTTQQkjL+=*6W6CaT5Ng_`e}=LIUo}x%s`fjjNn%JL`AgJ z1H*(0xheV44JewoX^Z4*FIT6uDumleik*BV5{MKV9Bq4<4H%7V_bZn_E9NxEVd^** z$<}j%*vNz1HMEM&rkFTKm9=Djrs_GWT(oJOsuylVHSsbB*cmAjb%*xN!J0mCcuha4 zbKRzh@1SO~_GWc{9hnOt9Oj-I6XbsK)q%{fl$yF}1wj(IBx@v&#Erj3Fdi~N9Kniy za=Zu#Rt1WJ$cQW=KS;l>tuCqJ&F>J0HwQ5|%OnvbIf*Ja@6`M<9A@$qu_~P%>&sk6 z?c_|T7P&z(b&YRmw!Hi4YRd%5+AvpJ)~1>oNLQ67zo) zju_JRP3=8gZin(VRZfbvjAdU_tjt0NR%tG)&!chrWHYJgm{Xwxv1Bc~du>5l)Mk39BD0hz) zOKJv?oJq4n$PpYfc~~A@6&q`2Xp>eEI1+{Ged7^%PgQg`1B@7y%;7e@Fp14awWVb+ zOEt^Q&<1s3kQmbdkNc6DM1AUXkJvTt4dQ!fBoH(kM#V+iSAY~;xtk@sR8^?(@6n7`| zttiNB5AoA{N;^_^oG8Z2u{CiJcrK2}oT^9%v7h-*Yp!fRRm^Hy5A0$%5Y__E&AlZ1 zNqOyWZw$ zomi%!D5UdC`RfBj`#29W2KtU&)K@gpU&-A~BCMrRWEu#djCcT%bDx!W)J4bCL5Pal zZ3Ir9Ga3=--g!>#&{o4|u)d&e8ItK|m-*E(@`z!CM28Mn3Vt{8GS0NY z5kUe8Js037_uf89gmnaM1Ni|gN3;QZ zUMfd%@bMg}hGBf}qakJn3Vh~TvEje0oewlPv?3<&3k@a|&;SLK+e6PpwhxdPf3Fe- ziy4@JCles%AUnISXi#2t8dbjsa7N600G>g6#;{wDajsfNx6A87wCa$_hg$=RPj!}4y>-iLb3r@xEH1k z6MwBBU}`0K5xP9^1_bQ>LAyqNR2L^voOkGANi((+)Bu$XSx~t@e;l}o+*}dk&ma#o z)ozGng`*HSf6_i!s*8MCmn4Gx*4Np!i3Gc`djmhTsXzG&y3!v9aTX_qD9xIg~Kg(a;5w6xd86Q*vn#2F{-~o%C7E%<6ZF33YNa^}$5$puE^&^1Akt zympj0ooAVLpm;xSVQiD5F;FPcI9-2fj5ARikS)l~$SA%QzM<{WWNj*{^2W*Hr~)FK z1ob@Y#p|wr)aaHQt~68{btSobr^QxW*sL*k|mCeFvEpFVe zD*4R@H{{14K`T>#I)B%WX>2a40f;G&l)Qs;7$N)qLtEL{T>3>=0=P_IhESpD@SmC- zH&t}hN#?K&^n5#Hty|W=w9V>acpb_WqeeBpvn|boh24aTjT-Gar1mtvt&o1dA59mpX(4agm~8@ zqp;qR=p6mzV%?Y8{(ycnm`?)SUX~;bitD0&ohz447bn&zf5392VXQ6ITzsCqdb+rw zj%v@eSTR}?;!v8Oua{EGe~myoWM((USIjBy2^sVg`q*QLah%1TUc&zZeO&R+A)x(2 zy{Y&q`=2c7r>+-3_LKVUe3Z6DOph15@y3Zh(#eqK936~)9g4|aY!sYtPwla<78<9ua zd)D_JU^+djJrfAh$)(oLKgiIWpWJ*kDj41na``rudj?_YmvPqq`mt3{Ky=n+Ht{-M8 zrQi2bGyA-JV5XR^ePR2y1ICX&y%FJG+WN%qE)*=E<8-MRBqJQ%J&>5jG3i~ zS~yvqeWi(l%MV(0EDN{=6})NtW1}WkZq`3o96&kPeVCYAHwl9rRS?z#D^J~9hHr18 zzXFHBC2yNnWJbxYdQp~}Osog6K5ki_Q_t} z2Nay%UjB|xfD&m0VS=3vddTjOXU;_pFbzWy%Qyi&80gDiZTt*5KtBb21-6Cg{I$l< z_(>RVm?W8z24?W};^$^mD^<303)Gl6sdcA*jxJvtOYXgFjyOecX_JfQiaB!JTrrQ~ z;O|ZiThGCYO|ji#+ljMps57;X^C1@&LL<2&$AY=5IR7{lVf+M}IL-qXx+TwGUw|qu zWgY|m6AO#W{+531;JTkzRP#+~Cn246^knM>fJvs*Fd!5Olv)s{ck9Ot9#sl?a0(nw zst?W+R<(7HzH-Pe1w*zW&`AI@rIh;UkoW2*4B4fS@|+x7(G2OfL7stb+^6@dT@I5| z=TXWNm2^0F%1XfXbMMzTms>BLC)&oPAO~*JiAb+0M!I}*5ewB!Ic0NkFyh9A&B zQXccs`C>&KR2C{lA4AnqEhrD_J>}Ma%oj&fx*%)HZiAGdyTsqo@mtm1bS)6a*2#oO z!HjHz%!}9gkltTz-LpVpO9UNcG;*s=dyt!aS6|*pl?AXs&P4i*2`<`E_{;b7RgKLB zuprhm8ifL$m0JkC@9V1@n~P!c0@jTQ&QBuCLSOv>>wTbXkC97{q-g^-#OYDE;5k+r zxIfg}%Ux80SDhQB3(>I!&RV#dFlt(sd>k*V%gA|n=>7_>M%~>#U0b3Jy&VN2HnD6- zk2K)m7b569qNl|jPLM5zIJ()0lm}nNzYoBx;9oG zx9X;7AQ@_?`6C?}Ozqsl&Rep+uJV$oCn{aCmU3ppjvmuD$o>O_(w#qh0AL1@Jj|ik zIjjJKDtug*@{gA2O+o&@~9aZ{i1N|ml-Ceyr zKKGj^HZYda2U*h*V?Ln@dC`@D3$(mBQ>`9=Rr=a63ew<7y{%OBij{&~hGz!z3_SX8 z0z3S%4reGzVlnjya4cu&DK;@k*Lg}`(b%k}em=8}UFLJssYQNso@T5{kg)G<7uTC_ zBOu_Y=O|V|j=uC0ec9U|p>AP58kiGhKAJr1o)q+6e_l>-Z{4>fYI0^-Nh>qJ?oFs}E!zIgw8s}Y~$rzl^ljnOy3yiT~2U+YTSY#m3B7@mcNX-)K}(Qo9Dp*X2dD^-wyhmfvWhe`BXy{%};D$_QtPzVY! z1Q^JT5b^@cUNvkLYFC|`rwxK$9~1`!O#65GigK%(^k$QWCtAjU)_7%+XY5jOUZBn* z#i?KE$|B~_+0Zs$RB>KxE>j#boq| zd%^I?Azy%;#ndq2fkPqkNxQi)Rl4VW%nvbiqTR!NDBLRP~FbcGX^J>vXv`1>5=&i*_PgFuk zy^C#NIIqcbJp2Uu2ZM;k9b#w#=dwTO&&Y?Dh~tNar4G?uv{dYaEgN@j3bjDh1~PiNUbbQ%LV>mdy~sggC)E~;zf!n#~Kc>RB>lh`%G zxA1eIS@fo0pZWh%KOZ4?EE1#ZG34B)fcOAzMD*lM;Ep=&v=rx_29-p$rXY1>s(>&m zbQXs8zss9z6gGA+Gj-=)$}^zX+4fr?BF?gKnyR^-o0L12qc%panX~*57Q_6^3at_B zBKNe3F-^)(Fi;oBaWp_%_E{Baw23*>*7eXm-W_qgW#cVm&1J$IE@@%KMMzQ4xX@Y8b1GW-lDtvnz{>N1a+Gp7pki!$Mn+(o{n; zHP5MJGz}dGf4jaNgoHGLP@`BiQmttu=T`n(-Zo84DH}&U)c~AZK3J7<=Edh#UXgb$ z6J63=A*RWt#}uXeKbMLRtB^Kz9*ufmHWnu)R)SJZB5Dy0#^+a1z7Jh4CMrk(7yb~u zodIAYm>^{_5_rtSCo0RO`OoTX`M=ANTuqEa(ly;eF&z@#1(gOnP-0#JN{Ery)6BWB z@jE$^c122t=P1yUeX{($&azfb!#s>~-rV$}$}Osc=OYIV;0o^k11rR&I&6fb#*o-R zBmBdQE4RuESBNeE3d+=+DUC;?1w6KC5T`vBbeC_dkT%t$mGA&n6AuWTm$nAg40%a~ zv{`H}(k7|givzl%a?B3fN-wRDHjB+FJJoT9==D)n9VQcQ(PfqOa`P$(`qRgv#n5!c zGVvfZwA-NoY_EJsYOBO_xp<{m+?11eXe$hfYpP20sY-Xb@s^chnKBJh8_O5{9{u0Q zFPCqv6dg4hIaO!6!2}~b7{L{?YnAvwO_@gq*^DfKGG@~jzjKvX-%MjKL6Red!b&37 z{&XcQZ(ae?jZA7sceJ&uXlnJyi~-%6Chhg)qWCkFMdhx_RP66A7|Mn$T~~ltP&`e# zDVWV>u3b3I|bee{Khi)TxI`eo9gzkO=a_t zv#cPyszUqX31T`OD0F0QEPAa7L2?LL5(hX!c_$%#zH&;rpI0J+W&OOAk@d8#Q0S8e z!LAKkvW~v3-HKo-Y1uTfn+yc3jEKNJl*CTBm3YqZOTAPS=&=SBnL8n|6Xc zhDFl$9a@Qdb>&FKm+NX#>@^8tG&vZB?k|W7X#SeY+PA-YRwE{PSYL!6&%cUqw6ZTUt|N?iFU?kF0wHvA>*mUk?&UhFBr+Bq(+LTm<#$VENjW;fiK4kM8cD=FgR;_{ z^j7)46KSAQ9tz{(8T2yn)X{B~;Y}qWSFf*?krJWB2Iyd zHr5m63Evy*l3umj$&01R)zw{2;hN&lw%J9Oe6pcyQ>KoKXmwCc)}HGDxP9x63U70) z6$>ZlJ-nyH4i+?#Q@dc!I&f_@IQ4mF;g-_9J`M z;BhG1pjJk@#l4swMmz*LNfGd$h@UA^xJ+chnct{;HzXtfHjfvL= zh;&4u^t*D*siZvo9XrK$clb#)4t-B9IaRpL%q{H<0Ywi3#Lw;TtA)APL&n~5syLLp zMPek^fbfCZj{O6vohD}0c!>y7!a7#%_UK$cl-_A#_6fYLf|tZY(??^vY4UL80A6FG z3G0LyV_Tht#)3_q>(=*e*xE9ORubNC RAo;f-i-ZddYk?Ka{XeFJH`V|E delta 247939 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�RY2Kd_S*L4%}Q-|gM!I~B+*3B3;?%Qy#=(@M5FDDYr}L1If`%}AsD zK9|L_9G{^4o|k#0SVY9amYAZ6G`DqR_Ro&3%L{HS)3HOeTD`z)z^*UqYt zS9UK4<-I!^q&LSwMqDGYD+|kqr8WX=F?-acLHszSC@^ zHH5<-0}91kWCZmuYm;t{sii3W50lzqa ziJ~IQDe=6*TBIFB^L7UGKdJ=nLt%^>!FoH3LLL!1hOSV+XWeL{V;%Jx8Xk9-9O0M; z48f9CKo%*ay0ikMu8dA#j2YsZ(MGh!aFEm1aFtgLuOb~h)d5_sm*P2jg&)w@xN>dEOh(JXz)WWqzB{-f(Od*}kP?ot=R zIBbHo>T$?*9L`cf68sV-jmHFBggndwx?n!BWP@!db$|=5NKAntXJJQy4OqBDMYxbj zN`eI7V%8uCA#96|e8Zp!xo`+nECXnOmvU&VIdpoWWsBY8j7yDV!{XTSMmNpaL|GlM zyJoymRV=kosE%x?ljez41U2%R*fribLD?Y6Cm2=g9S@4}6AX^p0V6(^6pwwW-@U}Z ziAMjUe3YHKMSV8`UMVH|e3ZPx5@f#35`=gYB#5|oqEXT(sV~2rfGJerG9DkyBcEU) zisO)J8c0nQ|CwkU2N5-Kk}=s_xu!V)si`AZ?Z!#QS?W96MbTtqBjwtO3$fYQ- z#5AK^{mUKVwQ0sInyR|#M*qAw8OD<(jNzRp5I0UY3XkzXjH1P9Gcy$>X@Bw|INQ_c;(_~twXaK9bwtEcSNVqLU3(#igW#A z;+)fE>-p=zW9alTo|b)n;VSAF#7JyH|F7T?|hKxZlNzQPQm5O1<=@bi^~@nJ%PPj z7Z|6iE7yqPbAc2H^ZWI=MnA%;d(SoANx37%dB)^+pXG;xSnH?tew`IGP24cv=+OR9 z*07%p#KS!3a+cW&KC>dpOz@ZIL)#!sC*S z(33b7qLs?vp5Sn0N(aiMg8J|e=rZI4sdB8n{R)jLk<(eVpyptN;ew45kfJeo-lp;y zhylbHglzmA-l#5|hEL#xnVChdLefH5nZ%W}lFVQ|+%n~{0M`2qQTiL>=s0rj!~JB3 z`=dAY@I+ZOde(rDql(YdfVGXJJP?Z3rs0{FAX5;w%i)|2?G9)#kdmF~GwOXN1XmVR zP&z#l5Fi;v=dU7E%|<4zEE^mPmOE6J;mt%QVG1kJ;|M~F>YnaJ?IP4TJX~1_Nhn7- z6-nha%W^Js=3(ej1`xsb>tI7>3xxbwDd{PfSC6F${gk_q1 zPshCh7AQ8ILIB2cGSOE^zK{eC1S`R2bUecjZi4cTqYwcdJ15!i5F$QYp~SsFZ!ow6 zq%T98-cO1kt%nkQ0@hi2W*&7IsaAZVjCR$$&ukV-6d6Mw1KC`Tc>uTgkwYr?*HldC z3zqrWZ;T=cd}06A=wc+B6BB=H*zxzt$Uw?yXhT>H3qY|XYQdyZPxsRx3tpWw5BcXF9fig!zMF&F4 zLSP$C$K&VN$I&iz3;j%@1>H!_&FX(J3%zz(xmy6M!z)m1@t3bd1vvVEbUTJ6Y!|?i zCmqm>LjLeQcb#S)5Noh$aHK;r8u+Fl{WEvk46%KoQ4lwQ%P!WTN@A1a)Oz{nQMw5` zqJi>zM1#S4o;}|7Ll@ z;>Vzv%p(`xx=n{D=-{+;$`RpZ6j3VBfH3)Z4PawTo8$H&_8!m|C06{>93=pl8q8}uj1`SYeyz!yb z8=np0{mYykS0zOMg)`^DrzG;ASr^>daCmMF!h0F zi|Gzikfb|&(F)z6)axS-hjR(f*GGX9JEJEY3CVz#XoseNCVe=P3rg~bAtDEAAZ->H zQxM%`xk9)G7N03@=oTs!`K$GIabDe`vtjX04kQXj!FCI-B=vJ}<`3-spFt`FKQK|$ zlj;tYHEY<@0ck+CkFiM%Z#4Q3|CqTqTq(r8Nh^`+F0ou%l*9riuAahtRi;LHz{B`Y z<@~GgWz~qi-HiMg0;s47sW9P~8YWc|54__C5m|G^DO1Av6%k^)MAq0&m>&y~7)G>t z1?Vut4q?l=9gHc_fLbp;dnlM62V_7#bFs*b^ZM{ZsSZF-AmOf%WnVr01WAtQwa7J%iPQQ(Kv3cnVwa9`s#X`hgD zN~$?VYi@x%Qj>Z@p?7X;)Wz4~36_0?;)P103dK^|C?e$y=OjfS!*%wwke)*a+2dJe zEF;bY7U{(KSRt~Y>dGY z;q8l!E_Ll(VeDP$6ds?#Rt1Xul1Uz(1tR%;6u>T4E;kBHkIWGt_t4cCY5nC!Sv_x0 z#J(~63XZXpOp8buj!5i00MO~UJzyJ%I;sTgF`Gm`G4eOz-k=4^8C4n+y)o(#+-cn^IExw#Lr`<=rj@VDds(SlJ}su5j&4gcEj>DDHO;S-4M%d!FzH^ zj&gLV`udgY_KTp0a_StkFy=+=ct*gBNZX{^q}^j+(0Ey~k=o}fqk9CS4U&CJ)&h-O zT(;PVbqi-@xrPM+2H*2zf{SZR@KS!Bcn&Y;ecJ}VQejNqezj3Ud@8%IY}NyyZ4kda z65A5R*BIyJx5k^q+G~v3>}PIGot?GoR`K>VM*Ff?Zgt4!3p#;bfj`}fqqedcszHYx zk)Lff3Pks%SO>i)aqLp#b0y_y8h@Q}mscaApeh5XF?78Vg-a^Y?RsN@@6~n7jIrcl z{`)e60}g5FPxQLM7@MlC@dl$30fKkkUw52zydj_^pj&bT97PS=a>2%kjPSMLZ<()aq$;7M-I!QowF#J%h35FP|z;K;7m z)*IxY8?eFn4Xs*lfFBY8KSmUJ%)!NDV&ytM?d$LBj6rJtSE^!?BuG1I2HIoC#AEjw z1C`urSO`HW=Qdk77%U{7-w}$6#v#a&9+{?x6FGMp3OP7)?_$6BFLB9!iam1BZ=h$w zW&YG%#^ZQn@!dvWgmOM|w{a4F72abUkITG!j9!RdSaT1a?G}6Q!D2cNMA^iJBR3iU z)-V6lj(}5+@WxU18pFj8_Zb~%zEpv}v_SQ$;qnCkbbo8>Av(>ncyqCbR#VItn_(7wnt0ukZ zkAB}w3`Fj<$ai;DY?Qk%E<(^Lc2yK7K6uc$OPRj$QQxKvti4cB{J*c=k^0=-yz%}v z`Q8URlpGU68lkqAkgz6asfMctD?r6{DmzVswC#0{m^~!J5K|sD9#fWx9ovio9l5%Y zRyUR@raWd8m0eAa5EUM?UP@rFvPAyM;!^>GOT@{Kz<1jyu6+dRWFwMr8xzavbFdUz zz%G!l5&5~57XFw@&w11sSmahit6lzT#P&yx@*{NWKfdo_JEwnt%wtFV{_@9+ZWSBl zFjTq37^KTa)%koGP>Hs@;&BA9aB$+wRyD8vMx5fl2O%JKQU4(AVB(mh2(C>+*#@_L zqp04-AUbCoDCcJYy4~YO=eXM^f2cG1^bqwa-`^+hI$H^(@WYQ)iN3oX#KC^)9fX?? zr|m-F2xU$sLTy9=_WzOy*HU{$aZt1~6w_LaVwfQ+FT4g3=ES%{;g@CJNs+MJdIiFR zl}5sqpBab~^)#m*mS7Qv~5y?5Y}o7z&X4pnatjmFRshROO-`Msfy2 zSap6-7LdtaL_mhyJLF_sh|@3O)N4W-G`g(R8*XnLl}j_#bboi z$zE*c5YxOAzCNgm7r$2uy6mD!MXD6!FWCqiyCR^mbrJ}&w-pbO^CY-pyHOZ_9C-#% zSb;6pQwWaS9#;FS16Q-#k#UBGT96zn%_oLh=pX7543!(jP?uoRFu@9rKF#ySOT@H? zhJvcyHh2_qdf)=nYbx203sYGxiI;>Tfp(WVSYga{k)#RkPCiQ2=?*vkUwKe899nt< zS`ePe=991k^f9bLoDu7FAk}VAI2C3=oEqALhOl(X*w_S@bray4H4)!jhS|%bPgqVb z!7rXsK*kT3#emB}nhd1t_!nJ~S^EpRqTfxy{(*1kKA$`FIYRvGti_YFvQZNuTrE0| z$1ZB8I?kvUqw{kJkCT~Z(7gDx*=RrVP_%33O#=;f3FaV@M7t%lAOdt)rlL@yT_IlD zB_{4LI^?y5V3~dd6F2WLisDOgfL(p&u*2dIEmJUU6C)xV(*3Y%1Bb$1=LuB~wt_>9 zLUEo>yg@blVS;ir)D{l$+;}(yDJXGB;t!#c4~O7ubem631)&t{p+P4u@hLe#dIW7+ z;)E}KBT(v~AEkoK;MA;fc=c|0p?R-7qZFbgP__>#D19u2@QD~9;nP~W0-sjXwLb>2 zN9`Y2Pd{j1*`UBG+`8b1sp$gYnI!WS(f5sfuxQC=nMhg&H)T3stlU9Nq8vG7%LGY3Y)^di)6D_$^vfVvu zibxLjyH5jb&wLskDvkQn!V0vgN!l$)?TX5jf;g|ojijWH;H$IwS<~F3JW9;8=fVx1O zDcKgQFfQhTaLK{#Dlln#P-t%e2)i}?!8_17G$E^uMKBH~BJ^&(2X9ah+WC8c(TcuX z)kvxn6mYhOD8EG)Ab%)6@Jr_W^aeI@5Niic;a}ifWRC1W40d8C6v5R)egwS3*~v0( z_`gPF6<{S14_nIUe6P#47c+(ev1qrE2gRjTxorL@p8DTY+{BbzZk4B+a`b+khQR0Y z)SpUmwWy6K&c{Q4HpQ7P#i7a;=#Wc@3H>I84}KmBOe8ka8WLdH;YT6?f&qY#9ulBF zMglVv{+mN*-|ZlT+|QbQ>S;@@j3w&Nn|;4hHu(s%?*YoE(Ml;ABfOBaA4?6Y=}2nX zaC}8-nMq8Vnbv=$mPw`ywM?pG3?!HtqV!p#Ok6d=vc%EP8tqz9w{(xXXn;%bUD&T~ z@pMAn3cKo-j+b_c)z2PA-8#juZn^qA41x;i^AthBT!Qqkn#^A0+>(nhWMZ^HT^DoT zPD+1|Z!<4F+S39KH3tb7Tx-km;~?v)zUkYjiUr-xf@*FU7zqXoI-wo%M<(qs-Q?JHq;7~$4Jw$YyA;x?@C>qvl*a*tW@S>cCQ zzHo$H>r8_=TS{^S2`n%e$*^M%ge`iIATSfm39u-Tp_0u<1gsE{M&Z~@_tu#}yU#{u zMVuWhh@BFEQ_0H7Jc@!=IP|A&nV8ZelSBH;4z-|@#3Z#%iR`RcA#z_d%8mmcUG#f^ zB{vBcEDw7+mfr)=Dn})?>=4N=7QJZXcY~6wjn2|CyZ#7tr5O>K7g;4@^ISbNz_Vjr z9PRC^f$~C12Y{rkWa9qxDvoPWMK!HXx>TCgHM3jt=bB(vb!N}x&!uWsMP{Yt+`u!D zS%(LnH@$Q(o5WfSy0$nXr)bBO)W7n}tS_e#nYD%6NT&YT%**1dB z_CR?`1Zdt6nDkD4u_W@$*=96zFFgW}*`qc{$92iioV z(y)#eVXYl~h|=6q&x-75WT}!_O~3B}lR!)g2{{CX&>$SS`<*JL<;pb#7rFbLZ7pgA z8rwz>T(3}8jr85`o&5o*h0<;8)VWtLOjYbq!+HLl8Qz0H>SXi)b=wEJbbZ_TJrPR* zx|if3tS+@wxrr;afZ@)7gTF{Xyz!}F6|Tcr7?w1qBrL_rFB>KOfH?$8bOJsKB^o7A z8WNOP?qXorQM)K|4Zf{VE3i20T(?@>^D<@uy*iYSwxn>`AT2E&O6Zt;qiwc<#t$KP zOePMoK;lT;h_VBQ-WPpF*dkd|MmH6PhtR?u5K`>N5Y?j8^jVz<=DW34U?rFcyZzTvtGC|ZNHDZi^gs#3s( zLsY3Ge&Ar5!?3O&rAB3owNEkv;VVM$d zoevVd5l?})JwA%!XXzkOA|IDEMqSqElQMV+8e};a?l9 zhaVxR0y7uwgh(9Tpvg36$bmO0X7PX~5fDe;!?<@f6z~<0H8rMbwg}Z7d+S;8*kaBi!!BrZl^6X;aGX zTkPHEIelRFl~5>qi8q=&yTs{1NRi@FB~B+QNXh9EN_`Gcb$#SR zpKUg}O(X!v_lpc{^X15IidCaFz$juG5f`8j<}WUO#~9HE!^e(ejKlz6CSMNEEzX;v z4Y%bK%trKKdzgXM`zGrmtF@)|fumD^y_K-%M~f_O_Z8&8EG(U)9aTjE~}Vb3{uCoEY6 z0fA?RvAT=gMnBD~hiv$3(N)OgL;dI>pI5J=?4U#g4-1@>May2jPM+*QCul@19lHSs zXC2IV-{|&ZgzG`9&!o94XtANCyMoGE%2+B(cUK&$WgnRo9iBXC7?3QHe{Bs6<%j6n z;=I2aU4IP!agv@I)5m|DD$ME6)h*B;$%EpDu0i}{H;t!PknAKub;w8|9+OrDmIpl5 zO@SIxBqj@Uk{onRkuX#^>fjn+*bZz4r66DcR@*VVj4 zms#Sv40Oxc$Il(O3SyZ>ego5Qs(LCqo2KIG4~=$hNXb2@-{~MH!N(v6dGzr!kSX_o zk$)2LL>yaz%}k`J${%A9Z|eMAcE2Om9CQ7>mtAND_-)8>&(?B!7)2+xO2SfiTFMNL zh#YC~XimVj@b41X6LTcLrG4ahz`A^f^N?H<#o0!zR<0A79~m7=K&hmS(f35O>{!8u z*7sJ5`i~&&pexai0j?f;v-G@y{Uc}*N4CMig855ToXKJzp#anyxK*C!)|V+#s4Rh* ziwBY@u*o4!6>i-g5>LLS=A0&{3>sxiH;bPtT#fQaKm{5lxlmjgC6!4r;crH5E*w+r zfPq(vQ!%U)*Zuah(mRL*9;}{`?ZpZeBr~@F_)}$2%G-B<+E7dvuKcIFr=gdAd(!X-vU`gR zE|QO|9n*lxFGI0!l|h}_;YWDNvX`n)y7mF&$oY7D8)FyYs!zad;=;zHzau!od60{i zq>3Db2eG3JC#z70sZA1aH{+hBFj7w#282c*yHg+8tUyDNb41-IMrC~a>UwG2OMgtl z`w4%{ecpYsGeA20$=ylrD6C{tMwS|y+LYqQao9Z9e$k0AOj+iQ3_XdWNK(v*L&XRk zYJrD8!P_7Ghmkj=^=V7mkXYE}{XS$v(xDjcR6>f7zhwSDjAHePmE!7u7?piJZk*;1 zY>i#}UJ%h}IIlAWp*w+!z}>6s{i`VJJwO7et3~;zM*DME2>}S%5}Eg&mcpy<6j}Jw0Dol=q6K`6#e?l44pKlz>yzB_7S*xo|m?RY`7iYFmlf#r%)>!lvp8cM+0(hR46lex(cv{mK$N-x-6}&5z`8i zN00u&l1ze2X{ibsEMIZ;qW##MA@!m`qU)E&;K-e8b^yC^Qjd{|?S;sdzu-%w$7sS+ z>HoyqUIpsG<`-NMZ(8cGnt4cA4FC)9^s# z*&s5ga`t=r3Xdcwkn=M++7~slM2dSN$;)%@iX>Q95J^%zg&kKTG1%UnMi;0xO+YcAZG$x=%p_A2M?Z^InY+s>lVWzp!MoJJ`y%f;vx<5~JybBpy%Rv6Aq+9>_n z7y{Vd5r}S&%Zg*QBRSmOr8>kba_9R2%+8~0M6drC1y-$H$NTeY>{>DDKZaco9e@nA zDndv0aFclw>xKQ$4bdvQ7a4*Gns12pl8@!P?hi6$#C`uUO7fGn_@BIqC#CL_5YZbn z15}x6N92BElypvZiMS&xHzD#>r1eNl{Kn|rv6k&1HkiJ_r3iM8Jtm09lS zF%uZQ*!Rs5Jys>(8WX+s+^Td6YN6su3aV+O~jvK;yXa(x~C14f!u}(6yz`}8IDP_FO#Zjcmb!b>|eNw-$Fxxxz3sz_u{mQlb(n-0z zy;K$ejCSvQenwknWexOJlUVhGF%#+6zWTwK+6zqF?rWDtE@h>r#p6e)?xSs#K@Z%Cz{X68pK_3`9X9A;YsMY4F3 z>=17~>4dUD)|x>AEF|F0Y&FcCEF}7Z3|h>Dm|S6I@Ya~7VEWb=gnp`Q;jYF|Qc>?n ziI2})(dv0g0s9!P2clBc`!#e0?(KmW;YPYI=Kftxc|I&3kgEdkMF!X{aQ&wUPzKJx%V(vH6R82ks0(26KYRwWb3cNuY6&mQA(v7$X?gAtN zNj64rp~?(9mR5wiVscUiHiMg(U**+$+oCs zI5dDV$P-x}D<@ZExr;*>S2-F=_M)6TP+ptmgw&qWSB_efLu&6-h<}I8oNyP+YG;v^ zVNOZygk3h=>@Auy%uK5bt;b8zEbhxd$SX}zC+e??OLAmX8f%ClBL*(1Qt?@a*#Qzw zP6YnN)Ph4GC7xn;#k-w>IWTSDJtI{RQ*CE7#Jc#R4XFsN^-PXIzJ;cG*-1&vAGU9Z z)v)kmKFu>hVK12BIL#+jTx)kpc8!WqaTmL1S`jMlY4=JiLdCu88n4JV#UZ=aEj5xA zS0(GKPF78~y1qCJRQGZ4*l` zw{5%gJi7~ggXPedkscB6|dg(%UDg z+Vu@~4g20~r@^k3cf;`pHbjc2OmhIB;4wWa$J(oW{zah%!O=R`lY>ZHpJ>sj?1OV2s`kZ=QGWYN|X2`)9hQ?o0$t~ zMHmJeyvlpA216g3WtJ&@#EEpN6~Dz=8GH`klb4aWao%k zGuQ`6B-jHWX&BT;=uTFW0PHGnPqrVn*GJ4BlCV7|4Yu==ustgY+p}HRZqGF*9#w0f z(hys!*r(DKS(qt=B@69Z{#|YVibJ76gb2lnVL1=!ouZf6wGQ^!hUhghuASMTN39d2 z-_`aR^g23R)i43rh19{QhcX}2=gCnLFv1-q0h%H9`s34wgZ)aYE zz5L_y%#W}gzhAzoP?~`L1!h<1qv%m&53&R-RnP-;c+R*iB*chk(E*tF_TmE5E+JjQ z#-`I+sZ8)sm41nb3e1L~r2fEl_@3h%0-H0aIS(Nau%qU^u>KA{Ktug_Ny{qflWscHI$jZFRfr9 zhIMiO4u2FPd4VPK4D4jK1BH;27c|RXZt{W(F|pk2T5*tFuW2sCgNpMi>B8{W(U}13 z9atw89We4vJP3}@Sd-a5Sb@hdC6L@d2vwZ6b!1L*muD2GB(;?s@=!8Xg{N9>Kpz2W^<+W;&GMR59^ z?v8i@AHb254dkp|d=(4Ef7@g2mRWs%qIModc*Fm2JT<$Mvv+I^Dgfv9{s_)FLj2*<)UII@NEDLU8Tg`I248!Dc!ES3uJQ07>c_z z<}D@SRTpILiAubHOF(dj$Y)G{1Z7}K*aIguhY@B6X|i|@$OIAJ#?0aw6=*;59Lg)y z8uGGH-f`-m+BcRjGZ^BeQ5B~z@p)JD5b7s>T!{3>JgZ2zfWv&S#RF9XWW1v8C}YI@ zPG;#OuYiIW3h`OT3-J+fBsaBTj5e>jgHnBB1bpS4b>J(sdXC3Fz7jtIUl~m}*CzRx z9#EJa0kJJVj>)MGFWbt)ojDVkn6&QvRSV|9TTb ztf=2dZn%(A*&YV34q?mfT)c_{UWez)E?aK?-^44PH$ZHi68G_C-VLp#BNlB9luft9 ztDnM_n-68n6hnQticIc4zKkKl;s)Lv!kk@60#u{Zp$OGh`%rB?-AmrQioOOVFmEP4 z4bMKCc5y4m^%ic}j*zNV6pxl+u5==`=Ac6Cjp8X}sug%1df=PG z%_gsq|Cre%c=4=wqPsI7hhs>8w&<2{6K{1lwbLqmg1ecI(Ufz^tA^>*z;P`o`ib&; zo$x{1gJTQE1!hDmQF6;Cv9>yuXr5*a|AL_9^6x<VAhf)(Yd6W!gCWNG^MRWnbq(`On6Fv~l zCvz*{I>6^tDZx;3!x#*{q*j2U?oGNCc4 z%V4EocNJ=1R73-ewufFr*K_Yr$diOt*NUvBVxOeN+vt#dJ0+EA{Eb9IVs))~{&a#hbP9@bBvAQkr6)jlQgG;ruVQz8 zNWqZ^<41my;Rh9QdT;X=>c?xvbG^+N654=n>EJ?$G4j1hprTpg0+Q6cDj3{omO4aF z4sDjGl%Avyi71WG*)}LopTWDmY$V^t@`NMi_A%$ghoo&FCr;;XAjd6jASZ=O?jL7u zgoak95^(^I@58y*V)M9fxv-7fQguXlWY34E4JZywk2Y}nAlRu7qrro*NQO9OwVsWGg67m`p zHbI;_TIIx})s7kM=~&TTPENGOu{rLeUqiIFg9UhyKwl>>+7B58>YPZlzY~lOa3)6w zIu}I;Ib))Oo%zurPJOh)Q0I*3QO?8h=rHG$XuY#J9(9}<(c$o(j1af5eXwP5XZ6##jAB@*Z9x#4?xL?(wQYus*kmdsB{l7)wpahDx;H7 zBoQkRu%j|QiK&I(s&rL1Kr|^pTy7ana}-EN-7h7n15vOc2v{SuJTR;Z^-D#R4KSY=3@wDVE#qZ67Z2x) z1}RbfL3j6Z3mpaYDQh5tTPF$!n%$6P93+mPEr^cc;THQSj$z^!r^t;k2ZiaRPe&QJ zg}w?%+4nORUI(Z7X{q#MAi0AA&8nyTQ}jg|v>OcmLkkF+gg(!Li;)^I5pVMhB#W4DGxWV8cN{4+X@QzP z@#wjGm?w~*iRuW_`5sh>#8yb!_y4E!(Id+LNwd;;T0Qg;9u`;@12Zji82H#6*>nt5z~VL{AW;Nh$Yrn3yQ^ zAQ~$7J=tw~05!;UBKcUVWViTqDo_h4nn;!F zLkcVek&cPzeqW&ojUW*z$B8FM?Tg1AieOYW9Nrj0dRZ=&rB<{sX!>FgaRvGWL?}Z< zuv}s10SPEXq+EuGfX30cn9rbWQsdk;pG8T67H!75`BDW^QEo%5A_d_V(@*tQ`onwB z6O1@!mn5eIQ%%*D*xk~K#-ZMBc7<2woBps}>6U8AnyqAo*{OQy8{&i&qT|u#`IwfQ zjy5O7s}W~|1$k0UZDTIX=Lq#9}SrWG4&cIzI;y}Y#tdB9>La`$PvHLc}jz)2xhPXSCVY?sAUld8> zLC3Y;^oQ*_>}bV5?hwOvfBN0u`yI3k$V~|zoqPdnPa5i%ziFWmL$mAwG%5^WvP}bk z!dzlk(W5vRmue3LkFf`Nm8$k&`aLA|dno-rD)oC9{jN{_cIfwT2`-|N5<&|)RInQY zThJ5{JP)l0IavzqLL4s%TvE|yN)I4KDrF>0uLiq9 z-XRNZm~yBgq5(mn1WNt^ck0nJe*V!9$j+KKl>91m5;4~XlDW0B?77i-PGbKk(^O8w zltjsgqS7UWj3@?o>V{%mJT&78ETRciZCuWFA~&Jv}XYn=!g$xgfY&X2%McU&U`ta7PS1JISHT< z!^WF~Q15TYo1GOjvvz_x6rmz-O+d^;r8svYgiR&31@9JXCL#!@QZ!FAMQJ6Oy`$M> zix%NRnhWlu*;D7w#f#@nGP^?6Ts6t;U(9hM=h{c7MUmi__-K-O)=v}A$)y`m0+dl! zG8||GWaz?RWcr9aMSO~6N^52Tm9us#Il2dESM|q-RGuz^hZ3K^pX339G2pVH)IL(#We@j=(&aFcdYtMEgaDC+hbnXa3~h&a!Pbd)o;31? z`;|GrT_+m@`*hupa0jyr2w1RI2B$IWSzjxn~FIx$E%? zd=^7sZzC2zY-8-My^Z`eTy4^;uSnf`0P`<&P-$su6O%sJS?U}u9Fs~5{hECG_5LYY z2c#fVo3Rb40WpoNkKc9gm*0FvMf88bA?zq(<~mb2M%7%E{cYsc_Lk-tF*a-D3;@&DlP=Fz}c8KW#ZkL=E#|ZtsZOn z-*wE1MJJjUj&;d3Ck=AIh%^S_B4IL6gpsfX4vPAd{Py3?CqWO~FWxxG?5QsOOc=Aw zS_%hsI;nYL(kwGiMeyM-W|>nZCtFA z&7QanI@#=%vN9K(Y*tje-Y9||$w}86MJP`{U2jy7?#UbV)XC&e!DqHr9ugpEh zYu8=wx8Q3yzSV8ydGYr%&4GzO%`smOX)mfO9qlVF>1uQn$2ORG%HPH54dxknAKVWo z59wyuN8G63Fy6?=;++QblvW>1oohzpJQAeurQU3Q-ParUoU*?><{OFEnKyjzxlma8 zj<3u;FYWGKzHdYBh~Jg(^~TwDYP}=AKGQ50559>Nk|lSEPu?`U7O%T!SAe%0D$dh^ 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 @@ -47,8 +47,8 @@ validator: {} # substrate-1-key # substrate-1-node-key # - # pod names are canonical. changing these or providing different amount of - # keys than the replicas count will lead to behaviour noone ever has + # pod names are canonical. changing these or providing different amount of + # keys than the replicas count will lead to behavior noone ever has # experienced before. diff --git a/substrate/srml/assets/Cargo.toml b/substrate/srml/assets/Cargo.toml index f274661e6c..129f884bd9 100644 --- a/substrate/srml/assets/Cargo.toml +++ b/substrate/srml/assets/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" hex-literal = "0.1.0" serde = { version = "1.0", optional = true } parity-codec = { version = "3.2", default-features = false } -# Needed for various traits. In our case, `OnFinalise`. +# Needed for various traits. In our case, `OnFinalize`. primitives = { package = "sr-primitives", path = "../../core/sr-primitives", default-features = false } # Needed for type-safe access to storage DB. srml-support = { path = "../support", default-features = false } diff --git a/substrate/srml/aura/src/tests.rs b/substrate/srml/aura/src/tests.rs index 98b57a1251..e74c7dace2 100644 --- a/substrate/srml/aura/src/tests.rs +++ b/substrate/srml/aura/src/tests.rs @@ -73,18 +73,18 @@ fn aura_reports_offline() { } with_externalities(&mut new_test_ext(vec![0, 1, 2, 3]), || { - System::initialise(&1, &Default::default(), &Default::default()); + System::initialize(&1, &Default::default(), &Default::default()); let slot_duration = Aura::slot_duration(); Aura::on_timestamp_set::(5 * slot_duration, slot_duration); - let header = System::finalise(); + let header = System::finalize(); // no slashing when last step was 0. assert_eq!(SLASH_COUNTS.lock().as_slice(), &[0, 0, 0, 0]); - System::initialise(&2, &header.hash(), &Default::default()); + System::initialize(&2, &header.hash(), &Default::default()); Aura::on_timestamp_set::(8 * slot_duration, slot_duration); - let _header = System::finalise(); + let _header = System::finalize(); // Steps 6 and 7 were skipped. assert_eq!(SLASH_COUNTS.lock().as_slice(), &[0, 0, 1, 1]); diff --git a/substrate/srml/consensus/src/lib.rs b/substrate/srml/consensus/src/lib.rs index 985a32bd6c..dfcc6805dc 100644 --- a/substrate/srml/consensus/src/lib.rs +++ b/substrate/srml/consensus/src/lib.rs @@ -183,7 +183,7 @@ decl_storage! { decl_module! { pub struct Module for enum Call where origin: T::Origin { - /// Report some misbehaviour. + /// Report some misbehavior. fn report_misbehavior(origin, _report: Vec) { ensure_signed(origin)?; } @@ -224,7 +224,7 @@ decl_module! { } } - fn on_finalise() { + fn on_finalize() { if let Some(original_authorities) = >::take() { let current_authorities = AuthorityStorageVec::::items(); if current_authorities != original_authorities { diff --git a/substrate/srml/consensus/src/tests.rs b/substrate/srml/consensus/src/tests.rs index 0145094a76..ff60660b0a 100644 --- a/substrate/srml/consensus/src/tests.rs +++ b/substrate/srml/consensus/src/tests.rs @@ -18,7 +18,7 @@ #![cfg(test)] -use primitives::{generic, testing::{self, UintAuthorityId}, traits::OnFinalise}; +use primitives::{generic, testing::{self, UintAuthorityId}, traits::OnFinalize}; use runtime_io::with_externalities; use crate::mock::{Consensus, System, new_test_ext}; use inherents::{InherentData, ProvideInherent}; @@ -26,10 +26,10 @@ use inherents::{InherentData, ProvideInherent}; #[test] fn authorities_change_logged() { with_externalities(&mut new_test_ext(vec![1, 2, 3]), || { - System::initialise(&1, &Default::default(), &Default::default()); + System::initialize(&1, &Default::default(), &Default::default()); Consensus::set_authorities(&[UintAuthorityId(4), UintAuthorityId(5), UintAuthorityId(6)]); - Consensus::on_finalise(1); - let header = System::finalise(); + Consensus::on_finalize(1); + let header = System::finalize(); assert_eq!(header.digest, testing::Digest { logs: vec![ generic::DigestItem::AuthoritiesChange( @@ -47,9 +47,9 @@ fn authorities_change_logged() { #[test] fn authorities_change_is_not_logged_when_not_changed() { with_externalities(&mut new_test_ext(vec![1, 2, 3]), || { - System::initialise(&1, &Default::default(), &Default::default()); - Consensus::on_finalise(1); - let header = System::finalise(); + System::initialize(&1, &Default::default(), &Default::default()); + Consensus::on_finalize(1); + let header = System::finalize(); assert_eq!(header.digest, testing::Digest { logs: vec![], }); @@ -59,11 +59,11 @@ fn authorities_change_is_not_logged_when_not_changed() { #[test] fn authorities_change_is_not_logged_when_changed_back_to_original() { with_externalities(&mut new_test_ext(vec![1, 2, 3]), || { - System::initialise(&1, &Default::default(), &Default::default()); + System::initialize(&1, &Default::default(), &Default::default()); Consensus::set_authorities(&[UintAuthorityId(4), UintAuthorityId(5), UintAuthorityId(6)]); Consensus::set_authorities(&[UintAuthorityId(1), UintAuthorityId(2), UintAuthorityId(3)]); - Consensus::on_finalise(1); - let header = System::finalise(); + Consensus::on_finalize(1); + let header = System::finalize(); assert_eq!(header.digest, testing::Digest { logs: vec![], }); @@ -73,7 +73,7 @@ fn authorities_change_is_not_logged_when_changed_back_to_original() { #[test] fn offline_report_can_be_excluded() { with_externalities(&mut new_test_ext(vec![1, 2, 3]), || { - System::initialise(&1, &Default::default(), &Default::default()); + System::initialize(&1, &Default::default(), &Default::default()); assert!(Consensus::create_inherent(&InherentData::new()).is_none()); let offline_report: Vec = vec![0]; @@ -89,7 +89,7 @@ fn set_and_kill_storage_work() { use srml_support::storage; with_externalities(&mut new_test_ext(vec![1, 2, 3]), || { - System::initialise(&1, &Default::default(), &Default::default()); + System::initialize(&1, &Default::default(), &Default::default()); let item = (vec![42u8], vec![42u8]); diff --git a/substrate/srml/contract/src/exec.rs b/substrate/srml/contract/src/exec.rs index 6c04a2e1d0..afd5159fce 100644 --- a/substrate/srml/contract/src/exec.rs +++ b/substrate/srml/contract/src/exec.rs @@ -44,7 +44,7 @@ pub struct CallReceipt { /// An interface that provides access to the external environment in which the /// smart-contract is executed. /// -/// This interface is specialised to an account of the executing code, so all +/// This interface is specialized to an account of the executing code, so all /// operations are implicitly performed on that account. pub trait Ext { type T: Trait; diff --git a/substrate/srml/contract/src/lib.rs b/substrate/srml/contract/src/lib.rs index 6fbd502f01..da3fe4dbf0 100644 --- a/substrate/srml/contract/src/lib.rs +++ b/substrate/srml/contract/src/lib.rs @@ -15,70 +15,70 @@ // along with Substrate. If not, see . //! # Contract Module -//! +//! //! The contract module provides functionality for the runtime to deploy and execute WebAssembly smart-contracts. //! The supported dispatchable functions are documented as part of the [`Call`](./enum.Call.html) enum. -//! +//! //! ## Overview -//! +//! //! This module extends accounts (see `Balances` module) to have smart-contract functionality. -//! These "smart-contract accounts" have the ability to create smart-contracts and make calls to other contract +//! These "smart-contract accounts" have the ability to create smart-contracts and make calls to other contract //! and non-contract accounts. -//! +//! //! The smart-contract code is stored once in a `code_cache`, and later retrievable via its `code_hash`. -//! This means that multiple smart-contracts can be instantiated from the same `code_cache`, without replicating +//! This means that multiple smart-contracts can be instantiated from the same `code_cache`, without replicating //! the code each time. -//! +//! //! When a smart-contract is called, its associated code is retrieved via the code hash and gets executed. //! This call can alter the storage entries of the smart-contract account, create new smart-contracts, //! or call other smart-contracts. -//! +//! //! Finally, when the `Balances` module determines an account is dead (i.e. account balance fell below the -//! existential deposit), it reaps the account. This will delete the associated code and storage of the +//! existential deposit), it reaps the account. This will delete the associated code and storage of the //! smart-contract account. -//! +//! //! ### Gas -//! +//! //! Senders must specify a gas limit with every call, as all instructions invoked by the smart-contract require gas. //! Unused gas is refunded after the call, regardless of the execution outcome. -//! +//! //! If the gas limit is reached, then all calls and state changes (including balance transfers) are only //! reverted at the current call's contract level. For example, if contract A calls B and B runs out of gas mid-call, -//! then all of B's calls are reverted. Assuming correct error handling by contract A, A's other calls and state -//! changes still persist. -//! +//! then all of B's calls are reverted. Assuming correct error handling by contract A, A's other calls and state +//! changes still persist. +//! //! ### Notable Scenarios -//! +//! //! Contract call failures are not always cascading. When failures occur in a sub-call, they do not "bubble up", //! and the call will only revert at the specific contract level. For example, if contract A calls contract B, and B //! fails, A can decide how to handle that failure, either proceeding or reverting A's changes. -//! +//! //! ## Interface -//! +//! //! ### Dispatchable functions -//! +//! //! * `put_code` - Stores the given binary Wasm code into the chains storage and returns its `code_hash`. -//! -//! * `create` - Deploys a new contract from the given `code_hash`, optionally transferring some balance. +//! +//! * `create` - Deploys a new contract from the given `code_hash`, optionally transferring some balance. //! This creates a new smart contract account and calls its contract deploy handler to initialize the contract. -//! +//! //! * `call` - Makes a call to an account, optionally transferring some balance. //! //! ### Public functions -//! +//! //! See the [module](./struct.Module.html) for details on publicly available functions. -//! +//! //! ## Usage -//! -//! The contract module is a work in progress. The following examples show how this contract module can be +//! +//! The contract module is a work in progress. The following examples show how this contract module can be //! used to create and call contracts. -//! -//! * [`pDSL`](https://github.com/Robbepop/pdsl) is a domain specific language which enables writing +//! +//! * [`pDSL`](https://github.com/Robbepop/pdsl) is a domain specific language which enables writing //! WebAssembly based smart contracts in the Rust programming language. This is a work in progress. -//! +//! //! ## Related Modules //! * [`Balances`](https://crates.parity.io/srml_balances/index.html) -//! +//! #![cfg_attr(not(feature = "std"), no_std)] @@ -136,7 +136,7 @@ pub struct AccountInfo { /// property (being a proper uniqueid). pub trait TrieIdGenerator { /// get a trie id for an account, using reference to parent account trie id to ensure - /// uniqueness of trie id + /// uniqueness of trie id /// The implementation must ensure every new trie id is unique: two consecutive call with the /// same parameter needs to return different trie id values. fn trie_id(account_id: &AccountId) -> TrieId; @@ -248,7 +248,7 @@ decl_module! { Ok(()) } - /// Stores the given binary Wasm code into the chains storage and returns its `codehash`. + /// Stores the given binary Wasm code into the chains storage and returns its `codehash`. /// You can instantiate contracts only with stored code. fn put_code( origin, @@ -272,10 +272,10 @@ decl_module! { /// Makes a call to an account, optionally transferring some balance. /// - /// * If the account is a smart-contract account, the associated code will be + /// * If the account is a smart-contract account, the associated code will be /// executed and any value will be transferred. /// * If the account is a regular account, any value will be transferred. - /// * If no account exists and the call value is not less than `existential_deposit`, + /// * If no account exists and the call value is not less than `existential_deposit`, /// a regular account will be created and any value will be transferred. fn call( origin, @@ -377,7 +377,7 @@ decl_module! { result.map(|_| ()) } - fn on_finalise() { + fn on_finalize() { >::kill(); } } diff --git a/substrate/srml/council/src/seats.rs b/substrate/srml/council/src/seats.rs index 867efe4ca1..f005cc6ecf 100644 --- a/substrate/srml/council/src/seats.rs +++ b/substrate/srml/council/src/seats.rs @@ -242,7 +242,7 @@ decl_module! { let candidate = T::Lookup::lookup(candidate)?; ensure!(index == Self::vote_index(), "index not current"); - let (_, _, expiring) = Self::next_finalise().ok_or("cannot present outside of presentation period")?; + let (_, _, expiring) = Self::next_finalize().ok_or("cannot present outside of presentation period")?; let stakes = Self::snapshoted_stakes(); let voters = Self::voters(); let bad_presentation_punishment = Self::present_slash_per_voter() * BalanceOf::::sa(voters.len() as u64); @@ -303,18 +303,18 @@ decl_module! { } /// Set the presentation duration. If there is currently a vote being presented for, will - /// invoke `finalise_vote`. + /// invoke `finalize_vote`. fn set_presentation_duration(#[compact] count: T::BlockNumber) { >::put(count); } /// Set the presentation duration. If there is current a vote being presented for, will - /// invoke `finalise_vote`. + /// invoke `finalize_vote`. fn set_term_duration(#[compact] count: T::BlockNumber) { >::put(count); } - fn on_finalise(n: T::BlockNumber) { + fn on_finalize(n: T::BlockNumber) { if let Err(e) = Self::end_block(n) { print("Guru meditation"); print(e); @@ -347,7 +347,7 @@ decl_storage! { /// Number of accounts that should be sitting on the council. pub DesiredSeats get(desired_seats) config(): u32; - // permanent state (always relevant, changes only at the finalisation of voting) + // permanent state (always relevant, changes only at the finalization of voting) /// The current council. When there's a vote going on, this should still be used for executive /// matters. The block number (second element in the tuple) is the block that their position is /// active until (calculated by the sum of the block number when the council member was elected @@ -371,9 +371,9 @@ decl_storage! { pub Candidates get(candidates): Vec; // has holes pub CandidateCount get(candidate_count): u32; - // temporary state (only relevant during finalisation/presentation) + // temporary state (only relevant during finalization/presentation) /// The accounts holding the seats that will become free on the next tally. - pub NextFinalise get(next_finalise): Option<(T::BlockNumber, u32, Vec)>; + pub NextFinalize get(next_finalize): Option<(T::BlockNumber, u32, Vec)>; /// The stakes as they were at the point that the vote ended. pub SnapshotedStakes get(snapshoted_stakes): Vec>; /// Get the leaderboard if we;re in the presentation phase. @@ -390,7 +390,7 @@ decl_event!( /// A tally (for approval votes of council seat(s)) has started. TallyStarted(u32), /// A tally (for approval votes of council seat(s)) has ended (with one or more new members). - TallyFinalised(Vec, Vec), + TallyFinalized(Vec, Vec), } ); @@ -399,7 +399,7 @@ impl Module { /// True if we're currently in a presentation period. pub fn presentation_active() -> bool { - >::exists() + >::exists() } /// If `who` a candidate at the moment? @@ -422,7 +422,7 @@ impl Module { } else { let c = Self::active_council(); let (next_possible, count, coming) = - if let Some((tally_end, comers, leavers)) = Self::next_finalise() { + if let Some((tally_end, comers, leavers)) = Self::next_finalize() { // if there's a tally in progress, then next tally can begin immediately afterwards (tally_end, c.len() - leavers.len() + comers as usize, comers) } else { @@ -453,9 +453,9 @@ impl Module { } } } - if let Some((number, _, _)) = Self::next_finalise() { + if let Some((number, _, _)) = Self::next_finalize() { if block_number == number { - Self::finalise_tally()? + Self::finalize_tally()? } } Ok(()) @@ -477,13 +477,13 @@ impl Module { let retaining_seats = active_council.len() - expiring.len(); if retaining_seats < desired_seats { let empty_seats = desired_seats - retaining_seats; - >::put((number + Self::presentation_duration(), empty_seats as u32, expiring)); + >::put((number + Self::presentation_duration(), empty_seats as u32, expiring)); let voters = Self::voters(); let votes = voters.iter().map(T::Currency::total_balance).collect::>(); >::put(votes); - // initialise leaderboard. + // initialize leaderboard. let leaderboard_size = empty_seats + Self::carry_count() as usize; >::put(vec![(BalanceOf::::zero(), T::AccountId::default()); leaderboard_size]); @@ -491,14 +491,14 @@ impl Module { } } - /// Finalise the vote, removing each of the `removals` and inserting `seats` of the most approved + /// Finalize the vote, removing each of the `removals` and inserting `seats` of the most approved /// candidates in their place. If the total council members is less than the desired membership /// a new vote is started. /// Clears all presented candidates, returning the bond of the elected ones. - fn finalise_tally() -> Result { + fn finalize_tally() -> Result { >::kill(); let (_, coming, expiring): (T::BlockNumber, u32, Vec) = - >::take().ok_or("finalise can only be called after a tally is started.")?; + >::take().ok_or("finalize can only be called after a tally is started.")?; let leaderboard: Vec<(BalanceOf, T::AccountId)> = >::take().unwrap_or_default(); let new_expiry = >::block_number() + Self::term_duration(); @@ -548,7 +548,7 @@ impl Module { new_candidates.truncate(last_index + 1); } - Self::deposit_event(RawEvent::TallyFinalised(incoming, outgoing)); + Self::deposit_event(RawEvent::TallyFinalized(incoming, outgoing)); >::put(new_candidates); >::put(count); @@ -584,7 +584,7 @@ mod tests { assert_eq!(Council::active_council(), vec![]); assert_eq!(Council::next_tally(), Some(4)); assert_eq!(Council::presentation_active(), false); - assert_eq!(Council::next_finalise(), None); + assert_eq!(Council::next_finalize(), None); assert_eq!(Council::candidates(), Vec::::new()); assert_eq!(Council::is_a_candidate(&1), false); diff --git a/substrate/srml/council/src/voting.rs b/substrate/srml/council/src/voting.rs index 4c5c62dc83..37c1444a74 100644 --- a/substrate/srml/council/src/voting.rs +++ b/substrate/srml/council/src/voting.rs @@ -102,7 +102,7 @@ decl_module! { >::put(blocks); } - fn on_finalise(n: T::BlockNumber) { + fn on_finalize(n: T::BlockNumber) { if let Err(e) = Self::end_block(n) { print("Guru meditation"); print(e); diff --git a/substrate/srml/democracy/src/lib.rs b/substrate/srml/democracy/src/lib.rs index c6e87e29c4..2673e43460 100644 --- a/substrate/srml/democracy/src/lib.rs +++ b/substrate/srml/democracy/src/lib.rs @@ -153,7 +153,7 @@ decl_module! { Ok(()) } - fn on_finalise(n: T::BlockNumber) { + fn on_finalize(n: T::BlockNumber) { if let Err(e) = Self::end_block(n) { runtime_io::print(e); } @@ -306,7 +306,7 @@ impl Module { } /// Get the delegated voters for the current proposal. - /// I think this goes into a worker once https://github.com/paritytech/substrate/issues/1458 is done. + /// I think this goes into a worker once https://github.com/paritytech/substrate/issues/1458 is done. fn tally_delegation(ref_index: ReferendumIndex) -> (BalanceOf, BalanceOf, BalanceOf) { Self::voters_for(ref_index).iter() .fold((Zero::zero(), Zero::zero(), Zero::zero()), |(approve_acc, against_acc, capital_acc), voter| { @@ -625,7 +625,7 @@ mod tests { assert_eq!(Democracy::voters_for(r), vec![1]); assert_eq!(Democracy::vote_of((r, 1)), AYE); assert_eq!(Democracy::tally(r), (10, 0, 10)); - + assert_eq!(Democracy::end_block(System::block_number()), Ok(())); assert_eq!(Balances::free_balance(&42), 2); }); @@ -671,11 +671,11 @@ mod tests { System::set_block_number(2); let r = 0; - // Check behaviour with cycle. + // Check behavior with cycle. assert_ok!(Democracy::delegate(Origin::signed(2), 1, 100)); assert_ok!(Democracy::delegate(Origin::signed(3), 2, 100)); assert_ok!(Democracy::delegate(Origin::signed(1), 3, 100)); - + assert_ok!(Democracy::vote(Origin::signed(1), r, AYE)); assert_eq!(Democracy::referendum_count(), 1); diff --git a/substrate/srml/democracy/src/vote_threshold.rs b/substrate/srml/democracy/src/vote_threshold.rs index d436757539..5d9b2b742e 100644 --- a/substrate/srml/democracy/src/vote_threshold.rs +++ b/substrate/srml/democracy/src/vote_threshold.rs @@ -37,7 +37,7 @@ pub enum VoteThreshold { pub trait Approved { /// Given `approve` votes for and `against` votes against from a total electorate size of /// `electorate` (`electorate - (approve + against)` are abstainers), then returns true if the - /// overall outcome is in favour of approval. + /// overall outcome is in favor of approval. fn approved(&self, approve: Balance, against: Balance, voters: Balance, electorate: Balance) -> bool; } @@ -72,7 +72,7 @@ fn compare_rationals + Div + Rem + Mul + Div + Rem + Copy> Approved for VoteThreshold { /// Given `approve` votes for and `against` votes against from a total electorate size of /// `electorate` of whom `voters` voted (`electorate - voters` are abstainers) then returns true if the - /// overall outcome is in favour of approval. + /// overall outcome is in favor of approval. /// /// We assume each *voter* may cast more than one *vote*, hence `voters` is not necessarily equal to /// `approve + against`. diff --git a/substrate/srml/example/src/lib.rs b/substrate/srml/example/src/lib.rs index 6ceb6da236..8ba83bfd88 100644 --- a/substrate/srml/example/src/lib.rs +++ b/substrate/srml/example/src/lib.rs @@ -201,14 +201,14 @@ decl_module! { >::put(new_value); } - // The signature could also look like: `fn on_initialise()` - fn on_initialise(_n: T::BlockNumber) { + // The signature could also look like: `fn on_initialize()` + fn on_initialize(_n: T::BlockNumber) { // Anything that needs to be done at the start of the block. // We don't do anything here. } - // The signature could also look like: `fn on_finalise()` - fn on_finalise(_n: T::BlockNumber) { + // The signature could also look like: `fn on_finalize()` + fn on_finalize(_n: T::BlockNumber) { // Anything that needs to be done at the end of the block. // We just kill our dummy storage item. >::kill(); @@ -258,7 +258,7 @@ mod tests { // The testing primitives are very useful for avoiding having to work with signatures // or public keys. `u64` is used as the `AccountId` and no `Signature`s are requried. use sr_primitives::{ - BuildStorage, traits::{BlakeTwo256, OnInitialise, OnFinalise, IdentityLookup}, + BuildStorage, traits::{BlakeTwo256, OnInitialize, OnFinalize, IdentityLookup}, testing::{Digest, DigestItem, Header} }; @@ -323,12 +323,12 @@ mod tests { assert_ok!(Example::accumulate_dummy(Origin::signed(1), 27)); assert_eq!(Example::dummy(), Some(69)); - // Check that finalising the block removes Dummy from storage. - >::on_finalise(1); + // Check that finalizing the block removes Dummy from storage. + >::on_finalize(1); assert_eq!(Example::dummy(), None); // Check that accumulate works when we Dummy has None in it. - >::on_initialise(2); + >::on_initialize(2); assert_ok!(Example::accumulate_dummy(Origin::signed(1), 42)); assert_eq!(Example::dummy(), Some(42)); }); diff --git a/substrate/srml/executive/src/lib.rs b/substrate/srml/executive/src/lib.rs index 0fe4b9e33d..48908a01b3 100644 --- a/substrate/srml/executive/src/lib.rs +++ b/substrate/srml/executive/src/lib.rs @@ -22,8 +22,8 @@ use rstd::prelude::*; use rstd::marker::PhantomData; use rstd::result; use primitives::traits::{ - self, Header, Zero, One, Checkable, Applyable, CheckEqual, OnFinalise, - OnInitialise, Hash, As, Digest, NumberFor, Block as BlockT, OffchainWorker + self, Header, Zero, One, Checkable, Applyable, CheckEqual, OnFinalize, + OnInitialize, Hash, As, Digest, NumberFor, Block as BlockT, OffchainWorker }; use srml_support::{Dispatchable, traits::MakePayment}; use parity_codec::{Codec, Encode}; @@ -65,7 +65,7 @@ impl< Block: traits::Block, Context: Default, Payment: MakePayment, - AllModules: OnInitialise + OnFinalise + OffchainWorker, + AllModules: OnInitialize + OnFinalize + OffchainWorker, > ExecuteBlock for Executive where Block::Extrinsic: Checkable + Codec, >::Checked: Applyable, @@ -86,7 +86,7 @@ impl< Block: traits::Block, Context: Default, Payment: MakePayment, - AllModules: OnInitialise + OnFinalise + OffchainWorker, + AllModules: OnInitialize + OnFinalize + OffchainWorker, > Executive where Block::Extrinsic: Checkable + Codec, >::Checked: Applyable, @@ -94,13 +94,13 @@ impl< <<>::Checked as Applyable>::Call as Dispatchable>::Origin: From> { /// Start the execution of a particular block. - pub fn initialise_block(header: &System::Header) { - Self::initialise_block_impl(header.number(), header.parent_hash(), header.extrinsics_root()); + pub fn initialize_block(header: &System::Header) { + Self::initialize_block_impl(header.number(), header.parent_hash(), header.extrinsics_root()); } - fn initialise_block_impl(block_number: &System::BlockNumber, parent_hash: &System::Hash, extrinsics_root: &System::Hash) { - >::initialise(block_number, parent_hash, extrinsics_root); - >::on_initialise(*block_number); + fn initialize_block_impl(block_number: &System::BlockNumber, parent_hash: &System::Hash, extrinsics_root: &System::Hash) { + >::initialize(block_number, parent_hash, extrinsics_root); + >::on_initialize(*block_number); } fn initial_checks(block: &Block) { @@ -121,7 +121,7 @@ impl< /// Actually execute all transitioning for `block`. pub fn execute_block(block: Block) { - Self::initialise_block(block.header()); + Self::initialize_block(block.header()); // any initial checks Self::initial_checks(&block); @@ -140,7 +140,7 @@ impl< let parent_hash = ::Hashing::hash(b"parent_hash"); let extrinsics_root = ::Hashing::hash(b"extrinsics_root"); - Self::initialise_block_impl(&block_number, &parent_hash, &extrinsics_root); + Self::initialize_block_impl(&block_number, &parent_hash, &extrinsics_root); // execute extrinsics Self::execute_extrinsics_with_book_keeping(extrinsics, block_number); @@ -152,18 +152,18 @@ impl< // post-extrinsics book-keeping. >::note_finished_extrinsics(); - >::on_finalise(block_number); + >::on_finalize(block_number); } - /// Finalise the block - it is up the caller to ensure that all header fields are valid + /// Finalize the block - it is up the caller to ensure that all header fields are valid /// except state-root. - pub fn finalise_block() -> System::Header { + pub fn finalize_block() -> System::Header { >::note_finished_extrinsics(); - >::on_finalise(>::block_number()); + >::on_finalize(>::block_number()); // setup extrinsics >::derive_extrinsics(); - >::finalise() + >::finalize() } /// Apply extrinsic outside of the block execution function. @@ -241,7 +241,7 @@ impl< fn final_checks(header: &System::Header) { // remove temporaries. - let new_header = >::finalise(); + let new_header = >::finalize(); // check digest. assert_eq!( @@ -394,7 +394,7 @@ mod tests { let xt = primitives::testing::TestXt(Some(1), 0, Call::transfer(2, 69)); let mut t = runtime_io::TestExternalities::::new(t); with_externalities(&mut t, || { - Executive::initialise_block(&Header::new(1, H256::default(), H256::default(), + Executive::initialize_block(&Header::new(1, H256::default(), H256::default(), [69u8; 32].into(), Digest::default())); Executive::apply_extrinsic(xt).unwrap(); assert_eq!(>::total_balance(&1), 32); @@ -463,7 +463,7 @@ mod tests { let mut t = new_test_ext(); let xt = primitives::testing::TestXt(Some(1), 42, Call::transfer(33, 69)); with_externalities(&mut t, || { - Executive::initialise_block(&Header::new(1, H256::default(), H256::default(), [69u8; 32].into(), Digest::default())); + Executive::initialize_block(&Header::new(1, H256::default(), H256::default(), [69u8; 32].into(), Digest::default())); assert!(Executive::apply_extrinsic(xt).is_err()); assert_eq!(>::extrinsic_index(), Some(0)); }); @@ -478,7 +478,7 @@ mod tests { let encoded = xt2.encode(); let len = if should_fail { (internal::MAX_TRANSACTIONS_SIZE - 1) as usize } else { encoded.len() }; with_externalities(&mut t, || { - Executive::initialise_block(&Header::new(1, H256::default(), H256::default(), [69u8; 32].into(), Digest::default())); + Executive::initialize_block(&Header::new(1, H256::default(), H256::default(), [69u8; 32].into(), Digest::default())); assert_eq!(>::all_extrinsics_len(), 0); Executive::apply_extrinsic(xt).unwrap(); diff --git a/substrate/srml/finality-tracker/src/lib.rs b/substrate/srml/finality-tracker/src/lib.rs index 5f417881f7..34be4ea66a 100644 --- a/substrate/srml/finality-tracker/src/lib.rs +++ b/substrate/srml/finality-tracker/src/lib.rs @@ -126,7 +126,7 @@ decl_module! { ::Update::put(hint); } - fn on_finalise() { + fn on_finalize() { Self::update_hint(::Update::take()) } } @@ -262,7 +262,7 @@ mod tests { use sr_io::{with_externalities, TestExternalities}; use substrate_primitives::H256; use primitives::BuildStorage; - use primitives::traits::{BlakeTwo256, IdentityLookup, OnFinalise, Header as HeaderT}; + use primitives::traits::{BlakeTwo256, IdentityLookup, OnFinalize, Header as HeaderT}; use primitives::testing::{Digest, DigestItem, Header}; use srml_support::impl_outer_origin; use srml_system as system; @@ -344,9 +344,9 @@ mod tests { with_externalities(&mut TestExternalities::new(t), || { let mut parent_hash = System::parent_hash(); for i in 2..106 { - System::initialise(&i, &parent_hash, &Default::default()); - FinalityTracker::on_finalise(i); - let hdr = System::finalise(); + System::initialize(&i, &parent_hash, &Default::default()); + FinalityTracker::on_finalize(i); + let hdr = System::finalize(); parent_hash = hdr.hash(); } @@ -369,13 +369,13 @@ mod tests { with_externalities(&mut TestExternalities::new(t), || { let mut parent_hash = System::parent_hash(); for i in 2..106 { - System::initialise(&i, &parent_hash, &Default::default()); + System::initialize(&i, &parent_hash, &Default::default()); assert_ok!(FinalityTracker::dispatch( Call::final_hint(i-1), Origin::INHERENT, )); - FinalityTracker::on_finalise(i); - let hdr = System::finalise(); + FinalityTracker::on_finalize(i); + let hdr = System::finalize(); parent_hash = hdr.hash(); } diff --git a/substrate/srml/grandpa/src/lib.rs b/substrate/srml/grandpa/src/lib.rs index 3c85756e96..e9b00662d6 100644 --- a/substrate/srml/grandpa/src/lib.rs +++ b/substrate/srml/grandpa/src/lib.rs @@ -73,7 +73,7 @@ pub trait GrandpaChangeSignal { #[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 + /// Authorities set change has been signaled. Contains the new set of authorities /// and the delay in blocks _to finalize_ before applying. AuthoritiesChangeSignal(N, Vec<(SessionKey, u64)>), /// A forced authorities set change. Contains in this order: the median last @@ -185,7 +185,7 @@ decl_event!( decl_storage! { trait Store for Module as GrandpaFinality { - // Pending change: (signalled at, scheduled change). + // Pending change: (signaled at, scheduled change). PendingChange get(pending_change): Option>; // next block number where we can force a change. NextForced get(next_forced): Option; @@ -215,13 +215,13 @@ decl_module! { pub struct Module for enum Call where origin: T::Origin { fn deposit_event() = default; - /// Report some misbehaviour. + /// Report some misbehavior. fn report_misbehavior(origin, _report: Vec) { ensure_signed(origin)?; // FIXME: https://github.com/paritytech/substrate/issues/1112 } - fn on_finalise(block_number: T::BlockNumber) { + fn on_finalize(block_number: T::BlockNumber) { if let Some(pending_change) = >::get() { if block_number == pending_change.scheduled_at { if let Some(median) = pending_change.forced { @@ -268,7 +268,7 @@ impl Module { /// indicates the median last finalized block number and it should be used /// as the canon block when starting the new grandpa voter. /// - /// No change should be signalled while any change is pending. Returns + /// No change should be signaled while any change is pending. Returns /// an error if a change is already pending. pub fn schedule_change( next_authorities: Vec<(T::SessionKey, u64)>, diff --git a/substrate/srml/grandpa/src/tests.rs b/substrate/srml/grandpa/src/tests.rs index 37902cfb17..3050b6a572 100644 --- a/substrate/srml/grandpa/src/tests.rs +++ b/substrate/srml/grandpa/src/tests.rs @@ -18,7 +18,7 @@ #![cfg(test)] -use primitives::{testing, traits::OnFinalise}; +use primitives::{testing, traits::OnFinalize}; use primitives::traits::Header; use runtime_io::with_externalities; use crate::mock::{Grandpa, System, new_test_ext}; @@ -30,13 +30,13 @@ use super::*; #[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()); + System::initialize(&1, &Default::default(), &Default::default()); Grandpa::schedule_change(vec![(4, 1), (5, 1), (6, 1)], 0, None).unwrap(); System::note_finished_extrinsics(); - Grandpa::on_finalise(1); + Grandpa::on_finalize(1); - let header = System::finalise(); + let header = System::finalize(); assert_eq!(header.digest, testing::Digest { logs: vec![ RawLog::AuthoritiesChangeSignal(0, vec![(4, 1), (5, 1), (6, 1)]).into(), @@ -55,10 +55,10 @@ fn authorities_change_logged() { #[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()); + System::initialize(&1, &Default::default(), &Default::default()); Grandpa::schedule_change(vec![(4, 1), (5, 1), (6, 1)], 1, None).unwrap(); - Grandpa::on_finalise(1); - let header = System::finalise(); + Grandpa::on_finalize(1); + let header = System::finalize(); assert_eq!(header.digest, testing::Digest { logs: vec![ RawLog::AuthoritiesChangeSignal(1, vec![(4, 1), (5, 1), (6, 1)]).into(), @@ -68,11 +68,11 @@ fn authorities_change_logged_after_delay() { // no change at this height. assert_eq!(System::events(), vec![]); - System::initialise(&2, &header.hash(), &Default::default()); + System::initialize(&2, &header.hash(), &Default::default()); System::note_finished_extrinsics(); - Grandpa::on_finalise(2); + Grandpa::on_finalize(2); - let _header = System::finalise(); + let _header = System::finalize(); assert_eq!(System::events(), vec![ EventRecord { phase: Phase::Finalization, @@ -85,27 +85,27 @@ fn authorities_change_logged_after_delay() { #[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()); + System::initialize(&1, &Default::default(), &Default::default()); Grandpa::schedule_change(vec![(4, 1), (5, 1), (6, 1)], 1, None).unwrap(); assert!(Grandpa::pending_change().is_some()); assert!(Grandpa::schedule_change(vec![(5, 1)], 1, None).is_err()); - Grandpa::on_finalise(1); - let header = System::finalise(); + Grandpa::on_finalize(1); + let header = System::finalize(); - System::initialise(&2, &header.hash(), &Default::default()); + System::initialize(&2, &header.hash(), &Default::default()); assert!(Grandpa::pending_change().is_some()); assert!(Grandpa::schedule_change(vec![(5, 1)], 1, None).is_err()); - Grandpa::on_finalise(2); - let header = System::finalise(); + Grandpa::on_finalize(2); + let header = System::finalize(); - System::initialise(&3, &header.hash(), &Default::default()); + System::initialize(&3, &header.hash(), &Default::default()); assert!(Grandpa::pending_change().is_none()); assert!(Grandpa::schedule_change(vec![(5, 1)], 1, None).is_ok()); - Grandpa::on_finalise(3); - let _header = System::finalise(); + Grandpa::on_finalize(3); + let _header = System::finalize(); }); } @@ -128,7 +128,7 @@ fn new_decodes_from_old() { #[test] fn dispatch_forced_change() { with_externalities(&mut new_test_ext(vec![(1, 1), (2, 1), (3, 1)]), || { - System::initialise(&1, &Default::default(), &Default::default()); + System::initialize(&1, &Default::default(), &Default::default()); Grandpa::schedule_change( vec![(4, 1), (5, 1), (6, 1)], 5, @@ -138,60 +138,60 @@ fn dispatch_forced_change() { assert!(Grandpa::pending_change().is_some()); assert!(Grandpa::schedule_change(vec![(5, 1)], 1, Some(0)).is_err()); - Grandpa::on_finalise(1); - let mut header = System::finalise(); + Grandpa::on_finalize(1); + let mut header = System::finalize(); for i in 2..7 { - System::initialise(&i, &header.hash(), &Default::default()); + System::initialize(&i, &header.hash(), &Default::default()); assert!(Grandpa::pending_change().unwrap().forced.is_some()); assert_eq!(Grandpa::next_forced(), Some(11)); assert!(Grandpa::schedule_change(vec![(5, 1)], 1, None).is_err()); assert!(Grandpa::schedule_change(vec![(5, 1)], 1, Some(0)).is_err()); - Grandpa::on_finalise(i); - header = System::finalise(); + Grandpa::on_finalize(i); + header = System::finalize(); } // change has been applied at the end of block 6. // add a normal change. { - System::initialise(&7, &header.hash(), &Default::default()); + System::initialize(&7, &header.hash(), &Default::default()); assert!(Grandpa::pending_change().is_none()); assert_eq!(Grandpa::grandpa_authorities(), vec![(4, 1), (5, 1), (6, 1)]); assert!(Grandpa::schedule_change(vec![(5, 1)], 1, None).is_ok()); - Grandpa::on_finalise(7); - header = System::finalise(); + Grandpa::on_finalize(7); + header = System::finalize(); } // run the normal change. { - System::initialise(&8, &header.hash(), &Default::default()); + System::initialize(&8, &header.hash(), &Default::default()); assert!(Grandpa::pending_change().is_some()); assert_eq!(Grandpa::grandpa_authorities(), vec![(4, 1), (5, 1), (6, 1)]); assert!(Grandpa::schedule_change(vec![(5, 1)], 1, None).is_err()); - Grandpa::on_finalise(8); - header = System::finalise(); + Grandpa::on_finalize(8); + header = System::finalize(); } // normal change applied. but we can't apply a new forced change for some // time. for i in 9..11 { - System::initialise(&i, &header.hash(), &Default::default()); + System::initialize(&i, &header.hash(), &Default::default()); assert!(Grandpa::pending_change().is_none()); assert_eq!(Grandpa::grandpa_authorities(), vec![(5, 1)]); assert_eq!(Grandpa::next_forced(), Some(11)); assert!(Grandpa::schedule_change(vec![(5, 1), (6, 1)], 5, Some(0)).is_err()); - Grandpa::on_finalise(i); - header = System::finalise(); + Grandpa::on_finalize(i); + header = System::finalize(); } { - System::initialise(&11, &header.hash(), &Default::default()); + System::initialize(&11, &header.hash(), &Default::default()); assert!(Grandpa::pending_change().is_none()); assert!(Grandpa::schedule_change(vec![(5, 1), (6, 1), (7, 1)], 5, Some(0)).is_ok()); assert_eq!(Grandpa::next_forced(), Some(21)); - Grandpa::on_finalise(11); - header = System::finalise(); + Grandpa::on_finalize(11); + header = System::finalize(); } let _ = header; }); diff --git a/substrate/srml/session/src/lib.rs b/substrate/srml/session/src/lib.rs index 9143931b98..3d07b53e2e 100644 --- a/substrate/srml/session/src/lib.rs +++ b/substrate/srml/session/src/lib.rs @@ -78,7 +78,7 @@ decl_module! { Self::apply_force_new_session(apply_rewards) } - fn on_finalise(n: T::BlockNumber) { + fn on_finalize(n: T::BlockNumber) { Self::check_rotate_session(n); } } diff --git a/substrate/srml/staking/src/lib.rs b/substrate/srml/staking/src/lib.rs index 21cc6cbf9d..018be8f5c8 100644 --- a/substrate/srml/staking/src/lib.rs +++ b/substrate/srml/staking/src/lib.rs @@ -414,7 +414,7 @@ decl_storage! { /// The length of the bonding duration in blocks. pub BondingDuration get(bonding_duration) config(): T::BlockNumber = T::BlockNumber::sa(1000); - /// Any validators that may never be slashed or forcibly kicked. It's a Vec since they're easy to initialise + /// Any validators that may never be slashed or forcibly kicked. It's a Vec since they're easy to initialize /// and the performance hit is minimal (we expect no more than four invulnerables) and restricted to testnets. pub Invulnerables get(invulnerables) config(): Vec; @@ -915,7 +915,7 @@ impl Module { Self::slashable_balance_of, min_validator_count, ElectionConfig::> { - equalise: false, + equalize: false, tolerance: >::sa(10 as u64), iterations: 10, } @@ -960,7 +960,7 @@ impl Module { } /// Call when a validator is determined to be offline. `count` is the - /// number of offences the validator has committed. + /// number of offenses the validator has committed. /// /// NOTE: This is called with the controller (not the stash) account id. pub fn on_offline_validator(controller: T::AccountId, count: usize) { diff --git a/substrate/srml/staking/src/phragmen.rs b/substrate/srml/staking/src/phragmen.rs index 9c388e5184..8d59562f69 100644 --- a/substrate/srml/staking/src/phragmen.rs +++ b/substrate/srml/staking/src/phragmen.rs @@ -26,11 +26,11 @@ use crate::{Exposure, BalanceOf, Trait, ValidatorPrefs, IndividualExposure}; /// Configure the behavior of the Phragmen election. /// Might be deprecated. pub struct ElectionConfig { - /// Perform equalise?. - pub equalise: bool, - /// Number of equalise iterations. + /// Perform equalize?. + pub equalize: bool, + /// Number of equalize iterations. pub iterations: usize, - /// Tolerance of max change per equalise iteration. + /// Tolerance of max change per equalize iteration. pub tolerance: Balance, } @@ -48,7 +48,7 @@ pub struct Candidate { approval_stake: Balance, /// Flag for being elected. elected: bool, - /// This is most often equal to `Exposure.total` but not always. Needed for [`equalise`] + /// This is most often equal to `Exposure.total` but not always. Needed for [`equalize`] backing_stake: Balance } @@ -78,9 +78,9 @@ pub struct Edge { backing_stake: Balance, /// Index of the candidate stored in the 'candidates' vector candidate_index: usize, - /// Index of the candidate stored in the 'elected_candidates' vector. Used only with equalise. + /// Index of the candidate stored in the 'elected_candidates' vector. Used only with equalize. elected_idx: usize, - /// Indicates if this edge is a vote for an elected candidate. Used only with equalise. + /// Indicates if this edge is a vote for an elected candidate. Used only with equalize. elected: bool, } @@ -223,10 +223,10 @@ pub fn elect( } } - // Optionally perform equalise post-processing. - if config.equalise { + // Optionally perform equalize post-processing. + if config.equalize { let tolerance = config.tolerance; - let equalise_iterations = config.iterations; + let equalize_iterations = config.iterations; // Fix indexes nominators.iter_mut().for_each(|n| { @@ -237,10 +237,10 @@ pub fn elect( }); }); - for _i in 0..equalise_iterations { + for _i in 0..equalize_iterations { let mut max_diff = >::zero(); nominators.iter_mut().for_each(|mut n| { - let diff = equalise::(&mut n, &mut elected_candidates, tolerance); + let diff = equalize::(&mut n, &mut elected_candidates, tolerance); if diff > max_diff { max_diff = diff; } @@ -274,7 +274,7 @@ pub fn elect( Some(elected_candidates) } -pub fn equalise( +pub fn equalize( nominator: &mut Nominator>, elected_candidates: &mut Vec>>, tolerance: BalanceOf diff --git a/substrate/srml/staking/src/tests.rs b/substrate/srml/staking/src/tests.rs index e8716c13fb..6f3d504c06 100644 --- a/substrate/srml/staking/src/tests.rs +++ b/substrate/srml/staking/src/tests.rs @@ -1525,7 +1525,7 @@ fn phragmen_election_works_example_2() { Staking::slashable_balance_of, min_validator_count, ElectionConfig::> { - equalise: true, + equalize: true, tolerance: >::sa(10 as u64), iterations: 10, } @@ -1806,7 +1806,7 @@ fn bond_with_little_staked_value() { #[test] #[ignore] // Enable this once post-processing is on. -fn phragmen_linear_worse_case_equalise() { +fn phragmen_linear_worse_case_equalize() { with_externalities(&mut ExtBuilder::default() .nominate(false) .validator_pool(true) diff --git a/substrate/srml/support/src/dispatch.rs b/substrate/srml/support/src/dispatch.rs index c85415b25c..64ea5938c4 100644 --- a/substrate/srml/support/src/dispatch.rs +++ b/substrate/srml/support/src/dispatch.rs @@ -89,7 +89,7 @@ impl Parameter for T where T: Codec + Clone + Eq {} /// corresponding to a function of the module. This enum implements Callable and thus its values /// can be used as an extrinsic's payload. /// -/// The `on_initialise` and `on_finalise` functions are special, since it can either take no +/// The `on_initialize` and `on_finalize` functions are special, since it can either take no /// parameters, or one parameter, which has the runtime's block number type. /// /// ### Module with instances @@ -147,8 +147,8 @@ macro_rules! decl_module { pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident$(, I: $instantiable:path $(= $module_default_instance:path)?)?> for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident {} - { $( $on_initialise:tt )* } - { $( $on_finalise:tt )* } + { $( $on_initialize:tt )* } + { $( $on_finalize:tt )* } { $( $offchain:tt )* } [ $($t:tt)* ] $(#[doc = $doc_attr:tt])* @@ -160,8 +160,8 @@ macro_rules! decl_module { pub struct $mod_type<$trait_instance: $trait_name$(, I: $instantiable $(= $module_default_instance)?)?> for enum $call_type where origin: $origin_type, system = $system { $vis fn deposit_event $(<$dpeg $(, $dpeg_instance)?>)* () = default; } - { $( $on_initialise )* } - { $( $on_finalise )* } + { $( $on_initialize )* } + { $( $on_finalize )* } { $( $offchain )* } [ $($t)* ] $($rest)* @@ -172,8 +172,8 @@ macro_rules! decl_module { pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident$(, I: $instantiable:path $(= $module_default_instance:path)?)?> for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident {} - { $( $on_initialise:tt )* } - { $( $on_finalise:tt )* } + { $( $on_initialize:tt )* } + { $( $on_finalize:tt )* } { $( $offchain:tt )* } [ $($t:tt)* ] $(#[doc = $doc_attr:tt])* @@ -187,8 +187,8 @@ macro_rules! decl_module { pub struct $mod_type<$trait_instance: $trait_name$(, I: $instantiable $(= $module_default_instance)?)?> for enum $call_type where origin: $origin_type, system = $system { $vis fn deposit_event $(<$dpeg $(, $dpeg_instance)?>)* ($( $param_name: $param ),* ) { $( $impl )* } } - { $( $on_initialise )* } - { $( $on_finalise )* } + { $( $on_initialize )* } + { $( $on_finalize )* } { $( $offchain )* } [ $($t)* ] $($rest)* @@ -199,12 +199,12 @@ macro_rules! decl_module { pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident$(, I: $instantiable:path $(= $module_default_instance:path)?)?> for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident { $( $deposit_event:tt )* } - { $( $on_initialise:tt )* } + { $( $on_initialize:tt )* } {} { $( $offchain:tt )* } [ $($t:tt)* ] $(#[doc = $doc_attr:tt])* - fn on_finalise($($param_name:ident : $param:ty),* ) { $( $impl:tt )* } + fn on_finalize($($param_name:ident : $param:ty),* ) { $( $impl:tt )* } $($rest:tt)* ) => { $crate::decl_module!(@normalize @@ -212,8 +212,8 @@ macro_rules! decl_module { pub struct $mod_type<$trait_instance: $trait_name$(, I: $instantiable $(= $module_default_instance)?)?> for enum $call_type where origin: $origin_type, system = $system { $( $deposit_event )* } - { $( $on_initialise )* } - { fn on_finalise( $( $param_name : $param ),* ) { $( $impl )* } } + { $( $on_initialize )* } + { fn on_finalize( $( $param_name : $param ),* ) { $( $impl )* } } { $( $offchain )* } [ $($t)* ] $($rest)* @@ -225,11 +225,11 @@ macro_rules! decl_module { for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident { $( $deposit_event:tt )* } {} - { $( $on_finalise:tt )* } + { $( $on_finalize:tt )* } { $( $offchain:tt )* } [ $($t:tt)* ] $(#[doc = $doc_attr:tt])* - fn on_initialise($($param_name:ident : $param:ty),* ) { $( $impl:tt )* } + fn on_initialize($($param_name:ident : $param:ty),* ) { $( $impl:tt )* } $($rest:tt)* ) => { $crate::decl_module!(@normalize @@ -237,8 +237,8 @@ macro_rules! decl_module { pub struct $mod_type<$trait_instance: $trait_name$(, I: $instantiable $(= $module_default_instance)?)?> for enum $call_type where origin: $origin_type, system = $system { $( $deposit_event )* } - { fn on_initialise( $( $param_name : $param ),* ) { $( $impl )* } } - { $( $on_finalise )* } + { fn on_initialize( $( $param_name : $param ),* ) { $( $impl )* } } + { $( $on_finalize )* } { $( $offchain )* } [ $($t)* ] $($rest)* @@ -249,8 +249,8 @@ macro_rules! decl_module { pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident> for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident { $( $deposit_event:tt )* } - { $( $on_initialise:tt )* } - { $( $on_finalise:tt )* } + { $( $on_initialize:tt )* } + { $( $on_finalize:tt )* } { } [ $($t:tt)* ] $(#[doc = $doc_attr:tt])* @@ -262,8 +262,8 @@ macro_rules! decl_module { pub struct $mod_type<$trait_instance: $trait_name> for enum $call_type where origin: $origin_type, system = $system { $( $deposit_event )* } - { $( $on_initialise )* } - { $( $on_finalise )* } + { $( $on_initialize )* } + { $( $on_finalize )* } { fn offchain_worker( $( $param_name : $param ),* ) { $( $impl )* } } [ $($t)* ] $($rest)* @@ -274,8 +274,8 @@ macro_rules! decl_module { pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path $(= $module_default_instance:path)?)?> for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident { $( $deposit_event:tt )* } - { $( $on_initialise:tt )* } - { $( $on_finalise:tt )* } + { $( $on_initialize:tt )* } + { $( $on_finalize:tt )* } { $( $offchain:tt )* } [ $($t:tt)* ] $(#[doc = $doc_attr:tt])* @@ -289,8 +289,8 @@ macro_rules! decl_module { pub struct $mod_type<$trait_instance: $trait_name$(, $instance: $instantiable $(= $module_default_instance)?)?> for enum $call_type where origin: $origin_type, system = $system { $( $deposit_event )* } - { $( $on_initialise )* } - { $( $on_finalise )* } + { $( $on_initialize )* } + { $( $on_finalize )* } { $( $offchain )* } [ $($t)* @@ -308,8 +308,8 @@ macro_rules! decl_module { pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident$(, I: $instantiable:path $(= $module_default_instance:path)?)?> for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident { $( $deposit_event:tt )* } - { $( $on_initialise:tt )* } - { $( $on_finalise:tt )* } + { $( $on_initialize:tt )* } + { $( $on_finalize:tt )* } { $( $offchain:tt )* } [ $($t:tt)* ] $(#[doc = $doc_attr:tt])* @@ -329,8 +329,8 @@ macro_rules! decl_module { pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident$(, I: $instantiable:path $(= $module_default_instance:path)?)?> for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident { $( $deposit_event:tt )* } - { $( $on_initialise:tt )* } - { $( $on_finalise:tt )* } + { $( $on_initialize:tt )* } + { $( $on_finalize:tt )* } { $( $offchain:tt )* } [ $($t:tt)* ] $(#[doc = $doc_attr:tt])* @@ -350,8 +350,8 @@ macro_rules! decl_module { pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path $(= $module_default_instance:path)?)?> for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident { $( $deposit_event:tt )* } - { $( $on_initialise:tt )* } - { $( $on_finalise:tt )* } + { $( $on_initialize:tt )* } + { $( $on_finalize:tt )* } { $( $offchain:tt )* } [ $($t:tt)* ] $(#[doc = $doc_attr:tt])* @@ -365,8 +365,8 @@ macro_rules! decl_module { pub struct $mod_type<$trait_instance: $trait_name$(, $instance: $instantiable $(= $module_default_instance)?)?> for enum $call_type where origin: $origin_type, system = $system { $( $deposit_event )* } - { $( $on_initialise )* } - { $( $on_finalise )* } + { $( $on_initialize )* } + { $( $on_finalize )* } { $( $offchain )* } [ $($t)* @@ -384,8 +384,8 @@ macro_rules! decl_module { pub struct $mod_type:ident<$trait_instance:ident: $trait_name:ident$(, I: $instantiable:path $(= $module_default_instance:path)?)?> for enum $call_type:ident where origin: $origin_type:ty, system = $system:ident { $( $deposit_event:tt )* } - { $( $on_initialise:tt )* } - { $( $on_finalise:tt )* } + { $( $on_initialize:tt )* } + { $( $on_finalize:tt )* } { $( $offchain:tt )* } [ $($t:tt)* ] ) => { @@ -396,8 +396,8 @@ macro_rules! decl_module { $($t)* } { $( $deposit_event )* } - { $( $on_initialise )* } - { $( $on_finalise )* } + { $( $on_initialize )* } + { $( $on_finalize )* } { $( $offchain )* } ); }; @@ -453,68 +453,68 @@ macro_rules! decl_module { } }; - (@impl_on_initialise + (@impl_on_initialize $module:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path)?>; - fn on_initialise() { $( $impl:tt )* } + fn on_initialize() { $( $impl:tt )* } ) => { impl<$trait_instance: $trait_name$(, $instance: $instantiable)?> - $crate::runtime_primitives::traits::OnInitialise<$trait_instance::BlockNumber> + $crate::runtime_primitives::traits::OnInitialize<$trait_instance::BlockNumber> for $module<$trait_instance$(, $instance)?> { - fn on_initialise(_block_number_not_used: $trait_instance::BlockNumber) { $( $impl )* } + fn on_initialize(_block_number_not_used: $trait_instance::BlockNumber) { $( $impl )* } } }; - (@impl_on_initialise + (@impl_on_initialize $module:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path)?>; - fn on_initialise($param:ident : $param_ty:ty) { $( $impl:tt )* } + fn on_initialize($param:ident : $param_ty:ty) { $( $impl:tt )* } ) => { impl<$trait_instance: $trait_name$(, $instance: $instantiable)?> - $crate::runtime_primitives::traits::OnInitialise<$trait_instance::BlockNumber> + $crate::runtime_primitives::traits::OnInitialize<$trait_instance::BlockNumber> for $module<$trait_instance$(, $instance)?> { - fn on_initialise($param: $param_ty) { $( $impl )* } + fn on_initialize($param: $param_ty) { $( $impl )* } } }; - (@impl_on_initialise + (@impl_on_initialize $module:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path)?>; ) => { impl<$trait_instance: $trait_name$(, $instance: $instantiable)?> - $crate::runtime_primitives::traits::OnInitialise<$trait_instance::BlockNumber> + $crate::runtime_primitives::traits::OnInitialize<$trait_instance::BlockNumber> for $module<$trait_instance$(, $instance)?> {} }; - (@impl_on_finalise + (@impl_on_finalize $module:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path)?>; - fn on_finalise() { $( $impl:tt )* } + fn on_finalize() { $( $impl:tt )* } ) => { impl<$trait_instance: $trait_name$(, $instance: $instantiable)?> - $crate::runtime_primitives::traits::OnFinalise<$trait_instance::BlockNumber> + $crate::runtime_primitives::traits::OnFinalize<$trait_instance::BlockNumber> for $module<$trait_instance$(, $instance)?> { - fn on_finalise(_block_number_not_used: $trait_instance::BlockNumber) { $( $impl )* } + fn on_finalize(_block_number_not_used: $trait_instance::BlockNumber) { $( $impl )* } } }; - (@impl_on_finalise + (@impl_on_finalize $module:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path)?>; - fn on_finalise($param:ident : $param_ty:ty) { $( $impl:tt )* } + fn on_finalize($param:ident : $param_ty:ty) { $( $impl:tt )* } ) => { impl<$trait_instance: $trait_name$(, $instance: $instantiable)?> - $crate::runtime_primitives::traits::OnFinalise<$trait_instance::BlockNumber> + $crate::runtime_primitives::traits::OnFinalize<$trait_instance::BlockNumber> for $module<$trait_instance$(, $instance)?> { - fn on_finalise($param: $param_ty) { $( $impl )* } + fn on_finalize($param: $param_ty) { $( $impl )* } } }; - (@impl_on_finalise + (@impl_on_finalize $module:ident<$trait_instance:ident: $trait_name:ident$(, $instance:ident: $instantiable:path)?>; ) => { impl<$trait_instance: $trait_name$(, $instance: $instantiable)?> - $crate::runtime_primitives::traits::OnFinalise<$trait_instance::BlockNumber> + $crate::runtime_primitives::traits::OnFinalize<$trait_instance::BlockNumber> for $module<$trait_instance$(, $instance)?> { } @@ -630,8 +630,8 @@ macro_rules! decl_module { )* } { $( $deposit_event:tt )* } - { $( $on_initialise:tt )* } - { $( $on_finalise:tt )* } + { $( $on_initialize:tt )* } + { $( $on_finalize:tt )* } { $( $offchain:tt )* } ) => { // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. @@ -650,15 +650,15 @@ macro_rules! decl_module { pub struct $mod_type<$trait_instance: $trait_name $(, $instance: $instantiable $( = $module_default_instance)?)?>(::core::marker::PhantomData<($trait_instance $(, $instance)?)>); $crate::decl_module! { - @impl_on_initialise + @impl_on_initialize $mod_type<$trait_instance: $trait_name $(, $instance: $instantiable)?>; - $( $on_initialise )* + $( $on_initialize )* } $crate::decl_module! { - @impl_on_finalise + @impl_on_finalize $mod_type<$trait_instance: $trait_name $(, $instance: $instantiable)?>; - $( $on_finalise )* + $( $on_finalize )* } $crate::decl_module! { @@ -1143,7 +1143,7 @@ macro_rules! __function_to_metadata { #[allow(dead_code)] mod tests { use super::*; - use crate::runtime_primitives::traits::{OnInitialise, OnFinalise}; + use crate::runtime_primitives::traits::{OnInitialize, OnFinalize}; pub trait Trait { type Origin; @@ -1167,8 +1167,8 @@ mod tests { fn aux_3() -> Result { unreachable!() } fn aux_4(_data: i32) -> Result { unreachable!() } - fn on_initialise(n: T::BlockNumber) { if n.into() == 42 { panic!("on_initialise") } } - fn on_finalise(n: T::BlockNumber) { if n.into() == 42 { panic!("on_finalise") } } + fn on_initialize(n: T::BlockNumber) { if n.into() == 42 { panic!("on_initialize") } } + fn on_finalize(n: T::BlockNumber) { if n.into() == 42 { panic!("on_finalize") } } fn offchain_worker() {} } } @@ -1243,14 +1243,14 @@ mod tests { } #[test] - #[should_panic(expected = "on_initialise")] - fn on_initialise_should_work() { - as OnInitialise>::on_initialise(42); + #[should_panic(expected = "on_initialize")] + fn on_initialize_should_work() { + as OnInitialize>::on_initialize(42); } #[test] - #[should_panic(expected = "on_finalise")] - fn on_finalise_should_work() { - as OnFinalise>::on_finalise(42); + #[should_panic(expected = "on_finalize")] + fn on_finalize_should_work() { + as OnFinalize>::on_finalize(42); } } diff --git a/substrate/srml/support/src/lib.rs b/substrate/srml/support/src/lib.rs index cbbdcc7e4c..d20af28f5b 100644 --- a/substrate/srml/support/src/lib.rs +++ b/substrate/srml/support/src/lib.rs @@ -193,7 +193,7 @@ mod tests { #[test] fn linked_map_basic_insert_remove_should_work() { with_externalities(&mut new_test_ext(), || { - // initialised during genesis + // initialized during genesis assert_eq!(Map::get(&15u32), 42u64); // get / insert / take @@ -272,7 +272,7 @@ mod tests { fn double_map_basic_insert_remove_remove_prefix_should_work() { with_externalities(&mut new_test_ext(), || { type DoubleMap = DataDM; - // initialised during genesis + // initialized during genesis assert_eq!(DoubleMap::get(&15u32, &16u32), 42u64); // get / insert / take diff --git a/substrate/srml/support/src/storage/generator.rs b/substrate/srml/support/src/storage/generator.rs index 18bc769d82..97bfc6dc20 100644 --- a/substrate/srml/support/src/storage/generator.rs +++ b/substrate/srml/support/src/storage/generator.rs @@ -227,7 +227,7 @@ pub trait EnumerableStorageMap: StorageMap(storage: &'a S) -> Box + 'a> where K: 'a, V: 'a; } -// FIXME #1466 Remove this in favour of `decl_storage` macro. +// FIXME #1466 Remove this in favor of `decl_storage` macro. /// Declares strongly-typed wrappers around codec-compatible types in storage. #[macro_export] macro_rules! storage_items { diff --git a/substrate/srml/system/src/lib.rs b/substrate/srml/system/src/lib.rs index cf4dedbca6..f226fcb7d1 100644 --- a/substrate/srml/system/src/lib.rs +++ b/substrate/srml/system/src/lib.rs @@ -380,7 +380,7 @@ impl Module { } /// Start the execution of a particular block. - pub fn initialise(number: &T::BlockNumber, parent_hash: &T::Hash, txs_root: &T::Hash) { + pub fn initialize(number: &T::BlockNumber, parent_hash: &T::Hash, txs_root: &T::Hash) { // populate environment. storage::unhashed::put(well_known_keys::EXTRINSIC_INDEX, &0u32); >::put(number); @@ -392,7 +392,7 @@ impl Module { } /// Remove temporary "environment" entries in storage. - pub fn finalise() -> T::Header { + pub fn finalize() -> T::Header { >::kill(); >::kill(); >::kill(); @@ -448,7 +448,7 @@ impl Module { } /// Set the block number to something in particular. Can be used as an alternative to - /// `initialise` for tests that don't need to bother with the other environment entries. + /// `initialize` for tests that don't need to bother with the other environment entries. #[cfg(any(feature = "std", test))] pub fn set_block_number(n: T::BlockNumber) { >::put(n); @@ -461,14 +461,14 @@ impl Module { } /// Set the parent hash number to something in particular. Can be used as an alternative to - /// `initialise` for tests that don't need to bother with the other environment entries. + /// `initialize` for tests that don't need to bother with the other environment entries. #[cfg(any(feature = "std", test))] pub fn set_parent_hash(n: T::Hash) { >::put(n); } /// Set the random seed to something in particular. Can be used as an alternative to - /// `initialise` for tests that don't need to bother with the other environment entries. + /// `initialize` for tests that don't need to bother with the other environment entries. #[cfg(any(feature = "std", test))] pub fn set_random_seed(seed: T::Hash) { >::put(seed); @@ -595,19 +595,19 @@ mod tests { #[test] fn deposit_event_should_work() { with_externalities(&mut new_test_ext(), || { - System::initialise(&1, &[0u8; 32].into(), &[0u8; 32].into()); + System::initialize(&1, &[0u8; 32].into(), &[0u8; 32].into()); System::note_finished_extrinsics(); System::deposit_event(1u16); - System::finalise(); + System::finalize(); assert_eq!(System::events(), vec![EventRecord { phase: Phase::Finalization, event: 1u16 }]); - System::initialise(&2, &[0u8; 32].into(), &[0u8; 32].into()); + System::initialize(&2, &[0u8; 32].into(), &[0u8; 32].into()); System::deposit_event(42u16); System::note_applied_extrinsic(&Ok(()), 0); System::note_applied_extrinsic(&Err(""), 0); System::note_finished_extrinsics(); System::deposit_event(3u16); - System::finalise(); + System::finalize(); assert_eq!(System::events(), vec![ EventRecord { phase: Phase::ApplyExtrinsic(0), event: 42u16 }, EventRecord { phase: Phase::ApplyExtrinsic(0), event: 100u16 }, diff --git a/substrate/srml/timestamp/src/lib.rs b/substrate/srml/timestamp/src/lib.rs index 7511d5bf2f..43cf669e7e 100644 --- a/substrate/srml/timestamp/src/lib.rs +++ b/substrate/srml/timestamp/src/lib.rs @@ -229,7 +229,7 @@ decl_module! { // Manage upgrade. Remove after all networks upgraded. // TODO: #2133 - fn on_initialise() { + fn on_initialize() { if let Some(period) = >::take() { if !>::exists() { >::put(period) @@ -237,7 +237,7 @@ decl_module! { } } - fn on_finalise() { + fn on_finalize() { assert!(::DidUpdate::take(), "Timestamp must be updated once in the block"); } } diff --git a/substrate/srml/treasury/src/lib.rs b/substrate/srml/treasury/src/lib.rs index 6cb257f034..b96928d7f8 100644 --- a/substrate/srml/treasury/src/lib.rs +++ b/substrate/srml/treasury/src/lib.rs @@ -117,7 +117,7 @@ decl_module! { >::mutate(|v| v.push(proposal_id)); } - fn on_finalise(n: T::BlockNumber) { + fn on_finalize(n: T::BlockNumber) { // Check to see if we should spend some funds! if (n % Self::spend_period()).is_zero() { Self::spend_funds(); @@ -264,7 +264,7 @@ mod tests { use srml_support::{impl_outer_origin, assert_ok, assert_noop}; use substrate_primitives::{H256, Blake2Hasher}; use runtime_primitives::BuildStorage; - use runtime_primitives::traits::{BlakeTwo256, OnFinalise, IdentityLookup}; + use runtime_primitives::traits::{BlakeTwo256, OnFinalize, IdentityLookup}; use runtime_primitives::testing::{Digest, DigestItem, Header}; impl_outer_origin! { @@ -380,7 +380,7 @@ mod tests { assert_ok!(Treasury::propose_spend(Origin::signed(0), 100, 3)); assert_ok!(Treasury::approve_proposal(Origin::ROOT, 0)); - >::on_finalise(1); + >::on_finalize(1); assert_eq!(Balances::free_balance(&3), 0); assert_eq!(Treasury::pot(), 100); }); @@ -391,7 +391,7 @@ mod tests { with_externalities(&mut new_test_ext(), || { Treasury::on_dilution(100, 100); - >::on_finalise(2); + >::on_finalize(2); assert_eq!(Treasury::pot(), 50); }); } @@ -404,7 +404,7 @@ mod tests { assert_ok!(Treasury::propose_spend(Origin::signed(0), 100, 3)); assert_ok!(Treasury::reject_proposal(Origin::ROOT, 0)); - >::on_finalise(2); + >::on_finalize(2); assert_eq!(Balances::free_balance(&3), 0); assert_eq!(Treasury::pot(), 50); }); @@ -454,7 +454,7 @@ mod tests { assert_ok!(Treasury::propose_spend(Origin::signed(0), 100, 3)); assert_ok!(Treasury::approve_proposal(Origin::ROOT, 0)); - >::on_finalise(2); + >::on_finalize(2); assert_eq!(Balances::free_balance(&3), 100); assert_eq!(Treasury::pot(), 0); }); @@ -468,11 +468,11 @@ mod tests { assert_ok!(Treasury::propose_spend(Origin::signed(0), 150, 3)); assert_ok!(Treasury::approve_proposal(Origin::ROOT, 0)); - >::on_finalise(2); + >::on_finalize(2); assert_eq!(Treasury::pot(), 100); Treasury::on_dilution(100, 100); - >::on_finalise(4); + >::on_finalize(4); assert_eq!(Balances::free_balance(&3), 150); assert_eq!(Treasury::pot(), 25); });