diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml new file mode 100644 index 0000000..bd593b7 --- /dev/null +++ b/.github/workflows/tests.yaml @@ -0,0 +1,60 @@ +name: Tests +on: + pull_request: + branches: + - main + push: + branches: + - main +env: + NODE_JS_VER: 18.x + SWANKY_NODE_VER: v1.6.0 +jobs: + run-tests: + runs-on: ubuntu-latest + steps: + - name: Checkout the source code + uses: actions/checkout@v3 + + - name: Install & display rust toolchain + run: | + rustup toolchain install nightly-2023-03-05 + rustup default nightly + rustup show + rustup component add rust-src + + - name: Check targets are installed correctly + run: rustup target list --installed + + - name: Cache cargo + uses: actions/cache@v3 + with: + path: ~/.cargo + key: ${{ runner.os }}-rust-${{ hashFiles('rust-toolchain.toml') }} + restore-keys: | + ${{ runner.os }}-rust + + - name: Check if cargo-contract exists + id: check-cargo-contract + continue-on-error: true + run: cargo contract --version + + - name: Install cargo contract + if: ${{ steps.check-cargo-contract.outcome == 'failure' }} + run: | + cargo install cargo-dylint dylint-link + cargo install --force --locked cargo-contract + + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version: ${{ env.NODE_JS_VER }} + + - name: Install swanky-cli + run: npm install && npm install -g @astar-network/swanky-cli + + - name: Compile contracts + run: swanky contract compile --all -v + + - name: Test contracts + run: cargo test --manifest-path contracts/dao/Cargo.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9048918 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# Ignore build artifacts from the local tests sub-crate. +/target/ +/**/target/ +/design/ +.idea/ + + +# Ignore backup files creates by cargo fmt. +**/*.rs.bk + +# Remove Cargo.lock when creating an executable, leave it for libraries +# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock +Cargo.lock + +# Ignore history files. +**/.history/** + +artifacts/ +node_modules/ +tests/ diff --git a/.mocharc.json b/.mocharc.json new file mode 100644 index 0000000..e0a32ed --- /dev/null +++ b/.mocharc.json @@ -0,0 +1,6 @@ +{ + "require": "ts-node/register", + "spec": "tests/**/*.test.ts", + "exit": true, + "timeout": 20000 +} diff --git a/.rustfmt.toml b/.rustfmt.toml new file mode 100644 index 0000000..d99c2c6 --- /dev/null +++ b/.rustfmt.toml @@ -0,0 +1,65 @@ +max_width = 90 # changed +hard_tabs = false +tab_spaces = 4 +newline_style = "Auto" +use_small_heuristics = "Default" +indent_style = "Block" +wrap_comments = true # changed +format_code_in_doc_comments = true # changed +doc_comment_code_block_width = 100 # changed +comment_width = 90 # changed +normalize_comments = true # changed +normalize_doc_attributes = false +format_strings = false +format_macro_matchers = false +format_macro_bodies = true +empty_item_single_line = true +struct_lit_single_line = true +fn_single_line = false +where_single_line = false +imports_indent = "Block" +imports_layout = "Vertical" # changed +imports_granularity = "Crate" # changed +reorder_imports = true +reorder_modules = true +reorder_impl_items = false +type_punctuation_density = "Wide" +space_before_colon = false +space_after_colon = true +spaces_around_ranges = false +binop_separator = "Front" +remove_nested_parens = true +combine_control_expr = false # changed +overflow_delimited_expr = false +struct_field_align_threshold = 0 +enum_discrim_align_threshold = 0 +match_arm_blocks = true +force_multiline_blocks = true # changed +fn_params_layout = "Tall" +brace_style = "SameLineWhere" +control_brace_style = "AlwaysSameLine" +trailing_semicolon = false # changed +trailing_comma = "Vertical" +match_block_trailing_comma = false +blank_lines_upper_bound = 1 +blank_lines_lower_bound = 0 +edition = "2021" # changed +version = "One" +merge_derives = true +use_try_shorthand = true # changed +use_field_init_shorthand = true # changed +force_explicit_abi = true +condense_wildcard_suffixes = false +color = "Auto" +unstable_features = true # changed +disable_all_formatting = false +skip_children = false +hide_parse_errors = false +error_on_line_overflow = false +error_on_unformatted = false +ignore = [] + +# Below are `rustfmt` internal settings +# +# emit_mode = "Files" +# make_backup = false diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..35aa14e --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,5 @@ +[workspace] +members = [ + "contracts/dao", + "contracts/governance-token", +] \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..de4b130 --- /dev/null +++ b/LICENSE @@ -0,0 +1,204 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..25e405e --- /dev/null +++ b/README.md @@ -0,0 +1,135 @@ +# Coding Assignment 1 + +## Investment DAO + +### Instructions + +- Use this template and continue work in your own repository +- Implement the two smart contracts: + - **PSP22 + PSP22Metadata** + - **DAO** +- In the dao directory run `cargo test` and the two tests should pass + +### What should be used + +- Swanky & Swanky node +- ink! v4.2.1 +- PSP22 from Openbrush + +### Description + +In this assignment you will create an investment DAO. + +Users will be able to submit a funding proposals and asks governance token holders to vote on it. A funding proposal will have a voting period, a fund amount as well as fund recipient. + +At the end of the voting period and if the vote reach the defined quorum, the fund recipient defined in the proposal will get the fund transferred. + +### Types + +`Proposal` +* defines the fund recipient `to` +* the start & end of the voting period `vote_start` `vote_end`, +* a boolean to know if it has been already `executed` or not +* requested `amount`. + +`ProposalVote` defines the proportion (in %) of `for_votes` and `against_vote` + +`VoteType` an enum with two fields to cast a vote: Against and For + +`ProposalId` identifiers for Proposals + +### Callable functions + +**new** (constructor) + +```rust +#[ink(constructor, payable)] +pub fn new(governance_token: AccountId, quorum: u8) -> Self { ... +``` + +The constructor is `payable` in order to fund the contract with a certain amount of native token that will be transferred to the recipients of funding proposals (of course proposals amount should not exceed balance of the contract). + +`governance_token` the PSP22 token `accountId` of the governance token + +`quorum` Minimum number of cast voted required for a proposal to be successful. The quorum is usually somewhere in the range of 1-10% of total token supply. + +**propose** + +```rust +pub fn propose(&mut self, to: AccountId, amount: Balance, duration: u64) -> Result<(), DaoError> { ... +``` + +This function is used to submit a new proposal. Any user can call this function. + +`to` the recipient `AccountId` + +`amount` the amount of funds (in Native tokens) requested + +`duration` the duration (in minutes) of the open voting period for the proposal. Note at it should start directly after this function call. + +In the body of the function: + +- Ensure the `amount` is not 0 (or return `DaoError::AmountShouldNotBeZero`) +- Ensure the `duration` is not 0 (or return `DaoError::DurationError`) +- The vote star value should be the actual block timestamp +- The Proposal should be added to the `proposals` Mapping (please increase `Id` by one before insert) + +**vote** + +```rust +pub fn vote(&mut self, proposal_id: ProposalId, vote: VoteType) -> Result<(), DaoError> { ... +``` + +This function is called to cast the vote of the caller. Any user can call this function. + +`proposal_id` the id of the proposal to vote on + +`vote` is either `Against` or `For` + +In the body of the function: + +- Ensure the proposal exist (or return `DaoError::ProposalNotFound`) +- Ensure the proposal has not been already executed (or return `DaoError::ProposalAlreadyExecuted`) +- Ensure the voting period is still open (or return `DaoError::VotePeriodEnded`) +- Ensure the caller has not already voted (or return `DaoError::AlreadyVoted`) +- Add the caller is the `votes` Mapping +- Check the `weight` of the caller of the governance token (the proportion of caller balance in relation to total supply) +- Add the `weight` value to `against_votes` or `for_votes` based on `vote` +- Insert proposal in `proposal_votes` Mapping + +**execute** + +```rust +pub fn execute(&mut self, proposal_id: ProposalId) -> Result<(), DaoError> { ... +``` + +This function is called when the voting period of a proposal has ended to transfer the funds to the recipient (if the quorum has been reached). Anyone can call this function. + +`proposal_id` the id of the proposal to vote on + +In the body of the function: + +- Ensure the proposal exist (or return `DaoError::ProposalNotFound`) +- Ensure the proposal has not been already executed (or return `DaoError::ProposalAlreadyExecuted`) +- Ensure the sum of `For` & `Against` vote reach quorum (or return `DaoError::QuorumNotReached`) +- Ensure there is more `For` votes than `Against` votes (or return `DaoError::ProposalNotAccepted`) +- Save that proposal has been executed +- transfer `amount` to the recipient + +### **Contract storage** + +`proposals` a Mapping to identify proposals: between `ProposalId` and Proposals +`proposal_votes` a Mapping between Proposals and `ProposalVotes` +`votes` a Mapping to ensure an account has already voted, where the mapping key is a tupple of `(ProposalId, AccountId)` and mapping value is just `()` +`next_proposal_id` to track next proposal id +`quorum` Quorum required for a proposal to be successful. As percentage of total supply of governance tokens +`governance_token` address of governance token contract + +### Submission criteria +* Both contracts should be implemented in the folders defined by the workspace +* All contract types and functions should be implemented as described above +* Unit test should be expanded to cover all the functions of the contracts. Run the unit test with `cargo test` +* Existing 2 unit tests for dao contract can be extended but should not be deleted and should pass +* There is a Github CI test that should be passing. You can check it in the Actions tab of your repository + +Due to big number of participants the submissions will NOT be considered if any of the above criteria is not met. \ No newline at end of file diff --git a/contracts/dao/Cargo.toml b/contracts/dao/Cargo.toml new file mode 100644 index 0000000..f5f4bf3 --- /dev/null +++ b/contracts/dao/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "dao" +version = "0.1.0" +authors = ["Stake Technologies "] +edition = "2021" + +[dependencies] +ink = { version = "4.2.1", default-features = false } + +scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive"] } +scale-info = { version = "2.5", default-features = false, features = ["derive"], optional = true } + +openbrush = { git = "https://github.com/727-Ventures/openbrush-contracts", version = "3.1.1", default-features = false } + +[lib] +path = "lib.rs" + +[features] +default = ["std"] +std = [ + "ink/std", + "scale/std", + "scale-info/std", + "openbrush/std", +] +ink-as-dependency = [] + +[profile.dev] +overflow-checks = false + +[profile.release] +overflow-checks = false \ No newline at end of file diff --git a/contracts/dao/lib.rs b/contracts/dao/lib.rs new file mode 100644 index 0000000..08a2ae0 --- /dev/null +++ b/contracts/dao/lib.rs @@ -0,0 +1,164 @@ +#![cfg_attr(not(feature = "std"), no_std, no_main)] + +#[ink::contract] +pub mod dao { + use ink::storage::Mapping; + use openbrush::contracts::traits::psp22::*; + use scale::{ + Decode, + Encode, + }; + + #[derive(Encode, Decode)] + #[cfg_attr(feature = "std", derive(Debug, PartialEq, Eq, scale_info::TypeInfo))] + pub enum VoteType { + // to implement + } + + #[derive(Copy, Clone, Debug, PartialEq, Eq, Encode, Decode)] + #[cfg_attr(feature = "std", derive(scale_info::TypeInfo))] + pub enum GovernorError { + // to implement + } + + #[derive(Encode, Decode)] + #[cfg_attr( + feature = "std", + derive( + Debug, + PartialEq, + Eq, + scale_info::TypeInfo, + ink::storage::traits::StorageLayout + ) + )] + pub struct Proposal { + // to implement + } + + #[derive(Encode, Decode, Default)] + #[cfg_attr( + feature = "std", + derive( + Debug, + PartialEq, + Eq, + scale_info::TypeInfo, + ink::storage::traits::StorageLayout + ) + )] + pub struct ProposalVote { + // to implement + } + + #[ink(storage)] + pub struct Governor { + // to implement + } + + impl Governor { + #[ink(constructor, payable)] + pub fn new(governance_token: AccountId, quorum: u8) -> Self { + unimplemented!() + } + + #[ink(message)] + pub fn propose( + &mut self, + to: AccountId, + amount: Balance, + duration: u64, + ) -> Result<(), GovernorError> { + unimplemented!() + } + + #[ink(message)] + pub fn vote( + &mut self, + proposal_id: ProposalId, + vote: VoteType, + ) -> Result<(), GovernorError> { + unimplemented!() + } + + #[ink(message)] + pub fn execute(&mut self, proposal_id: ProposalId) -> Result<(), GovernorError> { + unimplemented!() + } + + // used for test + #[ink(message)] + pub fn now(&self) -> u64 { + self.env().block_timestamp() + } + } + + #[cfg(test)] + mod tests { + use super::*; + + fn create_contract(initial_balance: Balance) -> Governor { + let accounts = default_accounts(); + set_sender(accounts.alice); + set_balance(contract_id(), initial_balance); + Governor::new(AccountId::from([0x01; 32]), 50) + } + + fn contract_id() -> AccountId { + ink::env::test::callee::() + } + + fn default_accounts( + ) -> ink::env::test::DefaultAccounts { + ink::env::test::default_accounts::() + } + + fn set_sender(sender: AccountId) { + ink::env::test::set_caller::(sender); + } + + fn set_balance(account_id: AccountId, balance: Balance) { + ink::env::test::set_account_balance::( + account_id, balance, + ) + } + + #[ink::test] + fn propose_works() { + let accounts = default_accounts(); + let mut governor = create_contract(1000); + assert_eq!( + governor.propose(accounts.django, 0, 1), + Err(GovernorError::AmountShouldNotBeZero) + ); + assert_eq!( + governor.propose(accounts.django, 100, 0), + Err(GovernorError::DurationError) + ); + let result = governor.propose(accounts.django, 100, 1); + assert_eq!(result, Ok(())); + let proposal = governor.get_proposal(0).unwrap(); + let now = governor.now(); + assert_eq!( + proposal, + Proposal { + to: accounts.django, + amount: 100, + vote_start: 0, + vote_end: now + 1 * ONE_MINUTE, + executed: false, + } + ); + assert_eq!(governor.next_proposal_id(), 1); + } + + #[ink::test] + fn quorum_not_reached() { + let mut governor = create_contract(1000); + let result = governor.propose(AccountId::from([0x02; 32]), 100, 1); + assert_eq!(result, Ok(())); + let execute = governor.execute(0); + assert_eq!(execute, Err(GovernorError::QuorumNotReached)); + } + } +} diff --git a/contracts/governance-token/Cargo.toml b/contracts/governance-token/Cargo.toml new file mode 100644 index 0000000..c2f348f --- /dev/null +++ b/contracts/governance-token/Cargo.toml @@ -0,0 +1 @@ +# Implement PSP2 + PSP22Metadata \ No newline at end of file diff --git a/contracts/governance-token/lib.rs b/contracts/governance-token/lib.rs new file mode 100644 index 0000000..76544f5 --- /dev/null +++ b/contracts/governance-token/lib.rs @@ -0,0 +1 @@ +// Implement PSP2 + PSP22Metadata \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..93c7c95 --- /dev/null +++ b/package.json @@ -0,0 +1,29 @@ +{ + "name": "investment-dao", + "version": "1.0.0", + "author": "Astar", + "license": "MIT", + "scripts": { + "run-node": "swanky node start", + "test": "mocha --config .mocharc.json" + }, + "engines": { + "node": ">=18.0.0" + }, + "dependencies": { + "@727-ventures/typechain-types": "1.0.0-beta.1", + "@727-ventures/typechain-polkadot": "1.0.0-beta.2", + "@types/node": "^18", + "typescript": "^5.0.4" +}, + "devDependencies": { + "@types/chai": "^4.3.0", + "@types/chai-as-promised": "^7.1.5", + "@types/mocha": "^8.0.3", + "chai": "^4.3.6", + "chai-as-promised": "^7.1.1", + "mocha": "^10.1.0", + "mochawesome": "^7.1.3", + "ts-node": "^10.8.0" + } +} diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..3371e0a --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,5 @@ +[toolchain] +channel = "nightly-2023-03-05" +components = ["rustfmt", "clippy"] +targets = ["wasm32-unknown-unknown"] +profile = "minimal" \ No newline at end of file diff --git a/swanky.config.json b/swanky.config.json new file mode 100644 index 0000000..82bbeda --- /dev/null +++ b/swanky.config.json @@ -0,0 +1,47 @@ +{ + "node": { + "localPath": "", + "polkadotPalletVersions": "polkadot-v0.9.39", + "supportedInk": "v4.2.0" + }, + "accounts": [ + { + "alias": "alice", + "mnemonic": "//Alice", + "isDev": true, + "address": "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY" + }, + { + "alias": "bob", + "mnemonic": "//Bob", + "isDev": true, + "address": "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty" + } + ], + "networks": { + "local": { + "url": "ws://127.0.0.1:9944" + }, + "astar": { + "url": "wss://rpc.astar.network" + }, + "shiden": { + "url": "wss://rpc.shiden.astar.network" + }, + "shibuya": { + "url": "wss://rpc.shibuya.astar.network" + } + }, + "contracts": { + "dao": { + "name": "dao", + "moduleName": "dao", + "deployments": [] + }, + "governance-token": { + "name": "governance-token", + "moduleName": "my_psp22_metadata", + "deployments": [] + } + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0caf6e8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "outDir": "dist", + "noImplicitAny": false, + "resolveJsonModule": true + }, + "include": ["**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/typedContracts/dao/build-extrinsic/dao.ts b/typedContracts/dao/build-extrinsic/dao.ts new file mode 100644 index 0000000..9257b27 --- /dev/null +++ b/typedContracts/dao/build-extrinsic/dao.ts @@ -0,0 +1,113 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { GasLimit, GasLimitAndRequiredValue } from '@727-ventures/typechain-types'; +import { buildSubmittableExtrinsic } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/dao'; +import type BN from 'bn.js'; +import type { ApiPromise } from '@polkadot/api'; + + + +export default class Methods { + private __nativeContract : ContractPromise; + private __apiPromise: ApiPromise; + + constructor( + nativeContract : ContractPromise, + apiPromise: ApiPromise, + ) { + this.__nativeContract = nativeContract; + this.__apiPromise = apiPromise; + } + /** + * propose + * + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } amount, + * @param { (number | string | BN) } duration, + */ + "propose" ( + to: ArgumentTypes.AccountId, + amount: (string | number | BN), + duration: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "propose", [to, amount, duration], __options); + } + + /** + * vote + * + * @param { (number | string | BN) } proposalId, + * @param { ArgumentTypes.VoteType } vote, + */ + "vote" ( + proposalId: (number | string | BN), + vote: ArgumentTypes.VoteType, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "vote", [proposalId, vote], __options); + } + + /** + * execute + * + * @param { (number | string | BN) } proposalId, + */ + "execute" ( + proposalId: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "execute", [proposalId], __options); + } + + /** + * getProposalVote + * + * @param { (number | string | BN) } proposalId, + */ + "getProposalVote" ( + proposalId: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "getProposalVote", [proposalId], __options); + } + + /** + * getProposal + * + * @param { (number | string | BN) } proposalId, + */ + "getProposal" ( + proposalId: (number | string | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "getProposal", [proposalId], __options); + } + + /** + * hasVoted + * + * @param { (number | string | BN) } proposalId, + * @param { ArgumentTypes.AccountId } accountId, + */ + "hasVoted" ( + proposalId: (number | string | BN), + accountId: ArgumentTypes.AccountId, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "hasVoted", [proposalId, accountId], __options); + } + + /** + * now + * + */ + "now" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "now", [], __options); + } + +} \ No newline at end of file diff --git a/typedContracts/dao/constructors/dao.ts b/typedContracts/dao/constructors/dao.ts new file mode 100644 index 0000000..5e7de3c --- /dev/null +++ b/typedContracts/dao/constructors/dao.ts @@ -0,0 +1,55 @@ +import {CodePromise} from "@polkadot/api-contract"; +import type {KeyringPair} from "@polkadot/keyring/types"; +import type {ApiPromise} from "@polkadot/api"; +import {_genValidGasLimitAndValue, _signAndSend, SignAndSendSuccessResponse} from "@727-ventures/typechain-types"; +import type {ConstructorOptions} from "@727-ventures/typechain-types"; +import type {WeightV2} from "@polkadot/types/interfaces"; +import type * as ArgumentTypes from '../types-arguments/dao'; +import { ContractFile } from '../contract-info/dao'; +import type BN from 'bn.js'; + +export default class Constructors { + readonly nativeAPI: ApiPromise; + readonly signer: KeyringPair; + + constructor( + nativeAPI: ApiPromise, + signer: KeyringPair, + ) { + this.nativeAPI = nativeAPI; + this.signer = signer; + } + + /** + * new + * + * @param { ArgumentTypes.AccountId } governanceToken, + * @param { (number | string | BN) } quorum, + */ + async "new" ( + governanceToken: ArgumentTypes.AccountId, + quorum: (number | string | BN), + __options ? : ConstructorOptions, + ) { + const __contract = JSON.parse(ContractFile); + const code = new CodePromise(this.nativeAPI, __contract, __contract.source.wasm); + const gasLimit = (await _genValidGasLimitAndValue(this.nativeAPI, __options)).gasLimit as WeightV2; + + const storageDepositLimit = __options?.storageDepositLimit; + const tx = code.tx["new"]!({ gasLimit, storageDepositLimit, value: __options?.value }, governanceToken, quorum); + let response; + + try { + response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event); + } + catch (error) { + console.log(error); + } + + return { + result: response as SignAndSendSuccessResponse, + // @ts-ignore + address: (response as SignAndSendSuccessResponse)!.result!.contract.address.toString(), + }; + } +} \ No newline at end of file diff --git a/typedContracts/dao/contract-info/dao.ts b/typedContracts/dao/contract-info/dao.ts new file mode 100644 index 0000000..a25c4ef --- /dev/null +++ b/typedContracts/dao/contract-info/dao.ts @@ -0,0 +1,2 @@ +export const ContractAbi = `{"source":{"hash":"0x9963eb9a9fc6cb55364771f29f5083a8112b0657090b4da645f8020996647a09","language":"ink! 4.2.1","compiler":"rustc 1.70.0-nightly","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-x86_64-unknown-linux-gnu","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"dao","version":"0.1.0","authors":["Stake Technologies "]},"spec":{"constructors":[{"args":[{"label":"governance_token","type":{"displayName":["AccountId"],"type":1}},{"label":"quorum","type":{"displayName":["u8"],"type":0}}],"default":false,"docs":[],"label":"new","payable":true,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":1},"balance":{"displayName":["Balance"],"type":3},"blockNumber":{"displayName":["BlockNumber"],"type":7},"chainExtension":{"displayName":["ChainExtension"],"type":23},"hash":{"displayName":["Hash"],"type":22},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":4}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":9},"messages":[{"args":[{"label":"to","type":{"displayName":["AccountId"],"type":1}},{"label":"amount","type":{"displayName":["Balance"],"type":3}},{"label":"duration","type":{"displayName":["u64"],"type":4}}],"default":false,"docs":[],"label":"propose","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":10},"selector":"0xcb14b5b5"},{"args":[{"label":"proposal_id","type":{"displayName":["ProposalId"],"type":7}},{"label":"vote","type":{"displayName":["VoteType"],"type":13}}],"default":false,"docs":[],"label":"vote","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":10},"selector":"0x083be260"},{"args":[{"label":"proposal_id","type":{"displayName":["ProposalId"],"type":7}}],"default":false,"docs":[],"label":"execute","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":10},"selector":"0xd00ec894"},{"args":[{"label":"proposal_id","type":{"displayName":["ProposalId"],"type":7}}],"default":false,"docs":[],"label":"get_proposal_vote","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0x5c417b0c"},{"args":[{"label":"proposal_id","type":{"displayName":["u32"],"type":7}}],"default":false,"docs":[],"label":"get_proposal","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0xba4dc5ec"},{"args":[{"label":"proposal_id","type":{"displayName":["u32"],"type":7}},{"label":"account_id","type":{"displayName":["AccountId"],"type":1}}],"default":false,"docs":[],"label":"has_voted","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":20},"selector":"0xb03e31b0"},{"args":[],"default":false,"docs":[],"label":"now","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0xc97f3bd7"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x2b569513","ty":0}},"name":"against_votes"},{"layout":{"leaf":{"key":"0x2b569513","ty":0}},"name":"for_votes"}],"name":"ProposalVote"}},"root_key":"0x2b569513"}},"name":"proposal_votes"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x862b46ed","ty":1}},"name":"to"},{"layout":{"leaf":{"key":"0x862b46ed","ty":3}},"name":"amount"},{"layout":{"leaf":{"key":"0x862b46ed","ty":4}},"name":"vote_start"},{"layout":{"leaf":{"key":"0x862b46ed","ty":4}},"name":"vote_end"},{"layout":{"leaf":{"key":"0x862b46ed","ty":5}},"name":"executed"}],"name":"Proposal"}},"root_key":"0x862b46ed"}},"name":"proposals"},{"layout":{"root":{"layout":{"leaf":{"key":"0x4dcfea21","ty":6}},"root_key":"0x4dcfea21"}},"name":"votes"},{"layout":{"leaf":{"key":"0x00000000","ty":7}},"name":"next_proposal_id"},{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"quorum"},{"layout":{"leaf":{"key":"0x00000000","ty":1}},"name":"governance_token"}],"name":"Governor"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"primitive":"u8"}}},{"id":1,"type":{"def":{"composite":{"fields":[{"type":2,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":2,"type":{"def":{"array":{"len":32,"type":0}}}},{"id":3,"type":{"def":{"primitive":"u128"}}},{"id":4,"type":{"def":{"primitive":"u64"}}},{"id":5,"type":{"def":{"primitive":"bool"}}},{"id":6,"type":{"def":{"tuple":[]}}},{"id":7,"type":{"def":{"primitive":"u32"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":6}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":6},{"name":"E","type":9}],"path":["Result"]}},{"id":9,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":10,"type":{"def":{"variant":{"variants":[{"fields":[{"type":11}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":11},{"name":"E","type":9}],"path":["Result"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":6}],"index":0,"name":"Ok"},{"fields":[{"type":12}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":6},{"name":"E","type":12}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AmountShouldNotBeZero"},{"index":1,"name":"DurationError"},{"index":2,"name":"ProposalNotFound"},{"index":3,"name":"ProposalAlreadyExecuted"},{"index":4,"name":"VotePeriodEnded"},{"index":5,"name":"AlreadyVoted"},{"index":6,"name":"VotePeriodNotEnded"},{"index":7,"name":"QuorumNotReached"},{"index":8,"name":"TransferError"},{"index":9,"name":"ProposalNotAccepted"}]}},"path":["dao","dao","GovernorError"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"index":0,"name":"Against"},{"index":1,"name":"For"}]}},"path":["dao","dao","VoteType"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":9}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"against_votes","type":0,"typeName":"u8"},{"name":"for_votes","type":0,"typeName":"u8"}]}},"path":["dao","dao","ProposalVote"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":9}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":19}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":19}],"path":["Option"]}},{"id":19,"type":{"def":{"composite":{"fields":[{"name":"to","type":1,"typeName":"AccountId"},{"name":"amount","type":3,"typeName":"Balance"},{"name":"vote_start","type":4,"typeName":"Timestamp"},{"name":"vote_end","type":4,"typeName":"Timestamp"},{"name":"executed","type":5,"typeName":"bool"}]}},"path":["dao","dao","Proposal"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":9}],"path":["Result"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":4}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":4},{"name":"E","type":9}],"path":["Result"]}},{"id":22,"type":{"def":{"composite":{"fields":[{"type":2,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":23,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; +export const ContractFile = `{"source":{"hash":"0x9963eb9a9fc6cb55364771f29f5083a8112b0657090b4da645f8020996647a09","language":"ink! 4.2.1","compiler":"rustc 1.70.0-nightly","wasm":"0x0061736d0100000001631060037f7f7f017f60027f7f0060027f7f017f60037f7f7f0060047f7f7f7f017f60017f0060057f7f7f7f7f0060000060017f017f60047f7f7f7f0060017f017e60087f7f7e7f7f7f7f7f017f60047f7e7e7f0060027e7f0060037e7e7f006000017e02c3010b057365616c310b6765745f73746f726167650004057365616c301176616c75655f7472616e736665727265640001057365616c30036e6f770001057365616c310463616c6c000b057365616c3005696e7075740001057365616c300663616c6c65720001057365616c300d64656275675f6d6573736167650002057365616c30087472616e736665720004057365616c320b7365745f73746f726167650004057365616c300b7365616c5f72657475726e000303656e76066d656d6f727902010210034f4e000c010103010203080108010501010003010d010e0f0801020101010107050101010301070602030207020000030202090105070101020502050a06020206040904060203060000090402020202040501700111110608017f01418080040b0711020463616c6c002e066465706c6f7900330916010041010b10102232304d40574255564136383954440ad791014e2b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b830102017f017e230041106b220424000240200341c000714504402003450d0120022003413f71ad2205862001410020036b413f71ad88842102200120058621010c010b20012003413f71ad862102420021010b2004200137030020042002370308200429030021012000200441086a29030037030820002001370300200441106a24000be10602057f047e230041b0016b2202240020024100360258200242808001370264200241e49c0436026041ed8dadb178200241e0006a2203100d20012003100d200220022903603703502002200241d0006a2002280268100e20022802042105200228020020022802502101200220022802542204360260200520012003100021032002280260220520044d04400240024002400240410c20032003410c4f1b0e0401000002000b200241ec006a4101360200200241f4006a4100360200200241dc860436026820024194980436027020024100360260200241e0006a41e48604100f000b200220053602ac01200220013602a801200241e0006a210323004190016b22012400200141c8006a200241a8016a22041018024002400240024020012d004845044020014188016a200141e1006a29000037030020014180016a200141d9006a290000370300200141f8006a200141d1006a29000037030020012001290049370370200141306a2004102520012802300d01200141406b290300210720012903382108200141206a2004102420012802200d0220012903282109200141106a2004102420012802100d032001290318210a200141086a2004101b024020012d00084101710d0020012d0009220441024f0d002003200837032020032001290370370000200320043a00402003200a37033820032009370330200341286a2007370300200341186a20014188016a290300370000200341106a20014180016a290300370000200341086a200141f8006a2903003700000c050b200341023a00400c040b200341023a00400c030b200341023a00400c020b200341023a00400c010b200341023a00400b20014190016a240020022d00a0012201410247044020022d00602103200241106a200241e0006a410172413f100a1a2002200241a4016a28000036000b200220022800a1013602080c020b200241003a0050200241ec006a4101360200200241f4006a4101360200200241a0800436026820024100360260200241013602142002200241106a3602702002200241d0006a360210200241e0006a41888104100f000b41022101410021030b200020033a0000200041016a200241106a413f100a1a200020013a004020002002280208360041200041c4006a200228000b360000200241b0016a24000f0b2005200441ec84041011000b2601017f230041106b220224002002200036020c20012002410c6a4104101a200241106a24000b4501017f2002200128020422034b044041949804412341dc99041031000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b3c01017f230041206b22022400200241013a00182002200136021420022000360210200241c08d0436020c200241949804360208200241086a1043000bb60401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b4101210020012802002203419b9b0441062001280204220528020c22041100000d0c024020012d00184104714504402003418c8e04410120041100000d0e200341a09c0441052004110000450d010c0e0b2003418a8e04410220041100000d0d2002200536020420022003360200200241013a000f20022002410f6a360208200241a09c04410510510d0d200241888e04410210510d0d0b200341e08c044101200411000021000c0c0b2001280200418e9b04410d200128020428020c11000021000c0b0b200128020041809b04410e200128020428020c11000021000c0a0b200128020041f59a04410b200128020428020c11000021000c090b200128020041db9a04411a200128020428020c11000021000c080b200128020041cd9a04410e200128020428020c11000021000c070b200128020041bd9a044110200128020428020c11000021000c060b200128020041b19a04410c200128020428020c11000021000c050b200128020041a69a04410b200128020428020c11000021000c040b2001280200419f9a044107200128020428020c11000021000c030b200128020041909a04410f200128020428020c11000021000c020b200128020041ff99044111200128020428020c11000021000c010b200128020041ec99044113200128020428020c11000021000b200241106a240020000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4106360200200341c8910436021020034100360208200341063602242003200341206a3602182003200341046a36022820032003360220200341086a2002100f000b840201057f230041306b220124002001410036021020014280800137021c200141e49c0436021841a1d4bfee04200141186a2203100d20002802002003100d200041046a20031013200120012903183703082001200141086a2001280220100e200128020421022001280200200128020821052001200128020c2200360218200220052003100021022001280218220420004d0440027f024002400240410c20022002410c4f1b0e0402000001000b200141246a41013602002001412c6a4100360200200141dc860436022020014194980436022820014100360218200141186a41e48604100f000b41000c010b41010b200141306a24000f0b2004200041ec84041011000b0a00200120004120101a0bb10301067f230041406a220124002001410036022020014280800137022c200141e49c043602284193aadada02200141286a2205100d20002005100d20012001290328370318200141106a200141186a2001280230100e200128021421032001280210200128021821002001200128021c22063602282003200020051000210302402001280228220420064d04400240024002400240410c20032003410c4f1b0e0400010103010b2001200436022c20012000360228200141086a200141286a101520012d00084101710d0120012d000921002001200141286a101520012d00004101710d0120012d000141107420004108747241017221020c020b200141346a41013602002001413c6a4100360200200141dc860436023020014194980436023820014100360228200141286a41e48604100f000b410221020b200241ff01714102460d01200141406b240020020f0b2004200641ec84041011000b200120024108763a0027200141346a41013602002001413c6a4101360200200141a08004360230200141003602282001410136021c2001200141186a3602382001200141276a360218200141286a41888104100f000b3801017f230041106b22022400200241086a2001101b20022d00092101200020022d00084101713a0000200020013a0001200241106a24000b08002000410110170ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a4106360200200041948d0436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a41cc9904100f000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101945044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b3d01027f2000280204220320024922044504402001200220002802002201200241909c04104f2000200320026b3602042000200120026a3602000b20040bbf0101037f02402000280208220420026a220320044f04402003200028020422054b0d01200028020020046a20022001200241bc9904104f200020033602080f0b230041306b220024002000200336020420002004360200200041146a41023602002000411c6a41023602002000412c6a4106360200200041fc910436021020004100360208200041063602242000200041206a3602182000200041046a36022820002000360220200041086a41ac9904100f000b2003200541ac99041011000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110192201047f41000520022d000f0b3a0001200020013a0000200241106a24000b2601017f230041106b22022400200220003703082001200241086a4108101a200241106a24000b2601017f230041106b22022400200220003a000f20012002410f6a4101101a200241106a24000b2a01017f230041106b220324002003200137030820032000370300200220034110101a200341106a24000b3202017f017e230041106b22002400200042003703002000410836020c20002000410c6a10022000290300200041106a24000b1b002000418180014f044020004180800141b086041011000b20000b2e01017f2000410020014101716b2202200141ffffff07712201411076713a0001200020022001410876713a00000b910101017f230041306b22022400200241146a41013602002002411c6a41013602002002419497043602102002410036020820024103360224200220002d0000410274220041a89c046a28020036022c2002200041bc9c046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a1050200241306a24000b4801027f230041106b220224002002410036020c024020012002410c6a41041019450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b4a02017f027e230041106b220224002002420037030802402001200241086a41081019450440200229030821040c010b420121030b2000200437030820002003370300200241106a24000b6402027f037e230041106b22022400200241086a22034200370300200242003703000240200120024110101945044020032903002105200229030021060c010b420121040b2000200637030820002004370300200041106a2005370300200241106a24000b4c01017f230041106b22022400200242808001370204200241e49c043602002002410010172002200141ff0171410a47047f20024101101720010541000b1017200020022802081020102a000b3501017f230041106b22002400200042808001370204200041e49c0436020020004101101720001016410120002802081020102a000bb40102057f017e230041306b2201240020014100360218200142808001370224200141e49c043602204100200141206a2202100d20012001290320370310200141086a200141106a22032001280228100e200128020c2104200128020820012903102106200141003602282001200637032020002802202002100d20002d00242002101d20002002101320012001290320370310200120032001280228100e20042001280200200128020410081a200141306a24000b0a00200120004104101a0b0d00200041e49c0420011009000bcd0102017f027e230041306b22022400200241286a2001101b024002400240024020022d002841017145044020022d00290e020302010b200041023602000c030b200041023602000c020b200241206a2001101b024020022d00204101710d0020022d00214101470d0020004281808080103703000c020b200041023602000c010b200241086a200110252002290308a70440200041023602000c010b200241186a2903002103200229031021042000410036020020002004370308200041106a20033703000b200241306a24000b0e0020002002101d20012002101d0b34002000200110132000290320200041286a2903002001101e20002903302001101c20002903382001101c20002d00402001101d0ba333020f7f0a7e230041b0046b22002400200041a8036a22014200370300200042003703a003200041103602d802200041a0036a200041d8026a10010240024002400240024002400240027f0240024002400240024002400240024002400240024002400240024020002903a0032001290300845004402000418080013602a00341e49c04200041a0036a100420002802a0032201418180014f0d01200020013602bc02200041e49c043602b802200041003602a003200041b8026a200041a0036a410410190d1020002802a003220641187621012006411076210320064108762102027f02400240024002400240024002400240200641ff0171220641c9016b0e03061901000b20064108460d01200641dc00460d02200641b001460d04200641ba01460d03200641d00147200241ff0171410e4772200341ff017141c8014720014194014772720d18200041f8016a200041b8026a102320002802f8010d184102210220002802fc01220141807e710c070b200241ff0171411447200341ff017141b5014772200141b50147720d17200041a0036a200041b8026a101820002d00a0030d17200041d0016a200041b8026a102520002802d0010d17200041e0016a290300210f20002903d8012111200041c0016a200041b8026a102420002903c001a70d1720002903c8012110200041e0026a200041aa036a290100370300200041e8026a200041b2036a290100370300200041ef026a200041b9036a290000370000200020002901a2033703d80220002d00a1032108410021014100210241000c060b200241ff0171413b47200341ff017141e2014772200141e00047720d16200041f0016a200041b8026a102320002802f0010d1620002802f4012101200041e8016a200041b8026a101b20002d00e8014101710d1620002d00e901220341014b0d162003410047210841012102200141807e710c050b200241ff017141c10047200341ff017141fb0047722001410c47720d1520004180026a200041b8026a10232000280280020d1541032102200028028402220141807e710c040b200241ff017141cd0047200341ff017141c5014772200141ec0147720d1420004188026a200041b8026a10232000280288020d1441042102200028028c02220141807e710c030b200241ff0171413e47200341ff017141314772200141b00147720d1320004190026a200041b8026a1023200028029002450d010c130b200241ff017141ff0047200341ff0171413b4772200141d70147720d12410621024100210141000c010b2000280294022101200041a0036a200041b8026a101820002d00a0030d11200041e0026a200041aa036a290100370300200041e8026a200041b2036a290100370300200041ef026a200041b9036a290000370000200020002901a2033703d80220002d00a103210841052102200141807e710b2105200041af026a200041ef026a290000370000200041a8026a200041e8026a290300370300200041a0026a200041e0026a290300370300200020002903d80237039802200041003602e0022000428080013702a403200041e49c043602a0034100200041a0036a220a100d200020002903a0033703d802200041b8016a200041d8026a20002802a803100e20002802bc01210b20002802b80120002802d8022103200020002802dc0222063602a003200b2003200a1000210a200620002802a003220b490d02024002400240410c200a200a410c4f1b0e0400060601060b2000200b360284042000200336028004200041b0016a20004180046a1023024020002802b0010d0020002802b401210a200041a8016a20004180046a101520002d00a8014101710d0020002d00a901210b200041a0036a20004180046a101820002d00a003450d020b200041ac036a4101360200200041b4036a4100360200200041ec87043602a8030c130b200041ac036a4101360200200041b4036a41003602002000418c88043602a8030c120b200141ff01712005722103200041c0026a200041aa036a290100370300200041c8026a200041b2036a290100370300200041cf026a200041b9036a290000370000200020002901a2033703b80220002d00a1032106027f02400240024002400240024002400240200241016b0e06010203040506000b200f20118450450d064100210341010c070b2000418080013602a00341e49c04200041a0036a2201100520004180800136028404200041e49c0436028004200120004180046a101820002d00a0030d0b200041e0026a200041aa036a290100370300200041e8026a200041b2036a290100370300200041ef026a200041b9036a290000370000200020002901a2033703d80220002d00a1032105200041a0036a2003100c4102210120002d00e00322024102460d154103210120020d1520002903d803210f41042101101f200f560d15200041bc036a2202200041ef026a2204290000370000200041b5036a220c200041e8026a2207290300370000200041ad036a220d200041e0026a2209290300370000200020002903d8023700a503200020053a00a403200020033602a00341052101200041a0036a10120d1520022004290000370000200c2007290300370000200d2009290300370000200020002903d8023700a503200020053a00a403200020033602a003200041003602a80420004280800137028404200041e49c043602800441a1d4bfee0420004180046a2201100d20032001100d200041a0036a220c4104722001101320002000290380043703a00420004188016a200041a0046a2202200028028804100e200028028c01210d20002802880120004180016a20024100100e200d20002802800120002802840110081a200041a9036a200041c0026a290300370000200041b1036a200041c8026a290300370000200041b8036a200041cf026a290000370000200041c8036a4200370300200041d0036a4200370300200041d9036a20002903d802370000200041e1036a2009290300370000200041e9036a2007290300370000200041f0036a2004290000370000200020063a00a003200020002903b8023700a103200042003703c003200041003602fc03200020053a00d803200041f8036a220541e5d0e1f902360200200041003602a80420004280800137028404200041e49c0436028004200c2001101320002000290380043703a004200041f8006a2002200028028804100e2000280278210420002903a004210f20004100360288042000200f37038004420042002001101e20002000290380043703a004200041f0006a2002200028028804100e2000280270210720002903a004210f20004100360288042000200f37038004200520011029200041d8036a2001101320002000290380043703a004200041e8006a2002200028028804100e200028026c21092000280268210c20002802a0042102200020002802a4042205360280044100200442002007200c2009200220011003210120052000280280042204490d0c410c20012001410c4f1b2201410d710d0d2000200436029c04200020023602980420004180046a20004198046a102b20002802800422014102460440410021010c150b20010d1920004190046a2903002111200029038804210f200041c8036a4200370300200041d0036a4200370300200041a9036a200041c0026a290300370000200041b1036a200041c8026a290300370000200041b8036a200041cf026a290000370000200020063a00a003200020002903b8023700a103200042003703c00320004296dae0970c3703d803200041003602a80420004280800137028404200041e49c0436028004200041a0036a20004180046a2201101320002000290380043703a004200041e0006a200041a0046a2202200028028804100e2000280260210420002903a004211020004100360288042000201037038004420042002001101e20002000290380043703a004200041d8006a2002200028028804100e2000280258210720002903a004211020004100360288042000201037038004200041d8036a2001102920002000290380043703a004200041d0006a2002200028028804100e200028025421092000280250210c20002802a0042102200020002802a4042205360280044100200442002007200c2009200220011003210120052000280280042204490d0e410c20012001410c4f1b2201410d710d0f2000200436029c04200020023602980420004180046a20004198046a102b20002802800422014102460440410021010c140b20010d19200029038804221220004190046a290300221484500d10230041106b220124002001200f42ffffffff0f8342e4007e2210200f42208842e4007e220f4220867c221337030020012010201356ad200f4220887c201142e4007e7c3703082001290300210f200041286a2202200141086a2903003703082002200f370300200141106a2400200041186a21052000290328210f200041306a290300211042002111230041206b22012400230041206b220224000240024002402012504520145071450440201050200f201254201020145420102014511b720d01200220122014201479a7201079a76b220441ff0071100b42012004413f71ad862117200241086a2903002116200229030021150340200f20157d2113201020167d200f201554ad7d22114200590440201720188421182012201358201120145a20112014511b450d04201121102013210f0b2016423f86201542018884211520174201882117201642018821160c000b000b024002400240024020105045044020102012540d0120102012510d03201020128221112010201280211520124280808080105a0d022011422086200f4220888422112012802210422086200f42ffffffff0f83201120128242208684220f20128084211820104220882015842115200f2012822113420021110c070b200f2012822113200f20128021180c030b200241106a20122014413f201279a72204201079a722076b41406b20042007461b220441ff0071100b42012004413f71ad862111200241186a2903002115200229031021164200211403400240201020157d200f201654ad7d22134200530d00200f20167d210f20112014842114201350450440201321100c010b200f2012822113200f20128020148421180c040b2015423f86201642018884211620114201882111201542018821150c000b000b200f201254201120145420112014511b4504402014423f8620124201888421162012423f862117428080808080808080807f21134200211403400240201120167d200f201754ad7d22104200530d00200f20177d210f20132014842114201050450440201021110c010b200f2012822113200f2012802014842118420021110c070b2016423f86201742018884211720134201882113201642018821160c000b000b200f21130c040b200f2010822113200f2010802118420121150c030b420021110c010b200f2113201021110b420021150b2001201337031020012018370300200141186a201137030020012015370308200241206a24002001290300210f2005200141086a2903003703082005200f370300200141206a2400200041c8006a20031014102120002d004820002d0049210520004100360288042000428080013702a403200041e49c043602a0034193aadada02200041a0036a2201100d20032001100d200020002903a00337038004200041406b20004180046a220320002802a803100e2000280244210420002802402107200029038004210f200041003602a8032000200f3703a00341002000280218220920081b6a20052009410020081b6a2001102c200020002903a00337038004200041386a200320002802a803100e200720042000280238200028023c10081a200041a9036a200041c0026a290300370000200041b1036a200041c8026a290300370000200041b8036a200041cf026a290000370000200041c7036a200041da026a2d00003a0000200020063a00a003200020002903b8023700a1032000200b3a00c4032000200a3602c003200020002f00d8023b00c50320011028410a210141000c160b200041a0036a2003100c4102210120002d00e00322024102460d10200041e0026a200041a9036a290000370300200041e8026a200041b1036a290000370300200041ef026a200041b8036a290000370000200020002900a1033703d8024103210120020d10200041c8036a290300210f20002903c00320002d00a0032102200041a0016a2003101410214107210120002d00a101220320002d00a00122086a41ff0171200b490d1041092101200320084d0d1041082101200041a9036a2208200041e0026a290300370000200041b1036a2205200041e8026a290300370000200041b8036a2204200041ef026a290000370000200020023a00a003200020002903d8023700a10341002103200041003602a80420004280800137028404200041e49c0436028004200041a0036a20004180046a2202101320002000290380043703a00420004198016a200041a0046a2207200028028804100e200028029c012109200028029801210c20002903a004211020004100360288042000201037038004200f2002101e20002000290380043703a00420004190016a2007200028028804100e410c200c2009200028029001200028029401100722022002410c4f1b0d102008200041c0026a2903003700002005200041c8026a2903003700002004200041cf026a290000370000200020063a00a003200020002903b8023700a1032000200b3a00c4032000200a3602c003200041a0036a1028410a21010c110b20002003101422014110763a00a303200020013b00a103200041003a00a003230041106b22012400200142808001370204200141e49c043602000240200041a0036a22002d000045044020014100101720002d00014504402001410010170c020b200141011017200041026a2d0000200041036a2d00002001102c0c010b200141011017200110160b0c1a0b200041d8026a22012003100c200041a0036a2200200141c800100a1a230041106b22012400200142808001370204200141e49c04360200024020002d004022034103470440200141001017200341024604402001410010170c020b20014101101720002001102d0c010b200141011017200110160b0c190b200041ad036a200041a0026a290300370000200041b5036a200041a8026a290300370000200041bc036a200041af026a290000370000200020083a00a403200020033602a00320002000290398023700a503230041306b22012400200041a0036a22002802002103200141146a2000410c6a2902003702002001411c6a200041146a290200370200200141246a2000411c6a290200370200200120033602082001200029020437020c200141086a1012200141306a2400230041106b22002400200042808001370204200041e49c043602002000410010172000101d0c190b101f230041106b22002400200042808001370204200041e49c043602002000410010172000101c0c180b41012103410120104281dddb017d4280a3a47e540d001a101f2113200041c8036a200f370300200041a9036a2203200041a0026a290300370000200041b1036a2202200041a8026a290300370000200041b8036a2205200041af026a290000370000200020113703c003200020083a00a00320002000290398023700a103200041003a00e003200020133703d00320002013201042e0d4037e7c3703d80320004100360288042000428080013702dc02200041e49c043602d80241ed8dadb178200041d8026a2201100d200a2001100d200020002903d80237038004200041106a20004180046a220820002802e002100e200028021421042000280210200029038004210f200041003602e0022000200f3703d802200041a0036a22092001102d200020002903d80237038004200041086a200820002802e002100e20042000280208200028020c10081a2003200041c0026a2903003700002002200041c8026a2903003700002005200041cf026a290000370000200020063a00a003200020002903b8023700a1032000200b3a00c4032000200a41016a3602c00320091028410a210341000b20031026000b200041043a00a003230041206b220124002001410c6a4101360200200141146a4101360200200141949704360208200141003602002001410236021c2001200041a0036a3602182001200141186a360210200141b48704100f000b20014180800141ec84041011000b200b200641ec84041011000b200041ac036a4101360200200041b4036a4100360200200041dc86043602a8032000419498043602b003200041003602a003200041a0036a41e48604100f000b200041003a00a00341de850441c100200041a0036a41fc830441a08604102f000b2004200541ec84041011000b200141cf9c046a2d000021010c060b2004200541ec84041011000b200141cf9c046a2d000021010c030b41e083044119419488041031000b410121030b200320011026000b200020013a00a004200041ac036a4102360200200041b4036a41023602002000418c046a4101360200200041f48d043602a803200041003602a0032000410336028404200041cc8304360280040c060b200020013a00a004200041ac036a4102360200200041b4036a41023602002000418c046a4101360200200041f48d043602a803200041003602a0032000410336028404200041d88104360280040c050b41010b20011026000b1027000b2000419498043602b003200041003602a003200041a0036a41b48704100f000b200041013602a004200041ac036a4101360200200041b4036a41013602002000418083043602a803200041003602a0032000410436028404200020004180046a3602b0032000200041a0046a360280040c010b200020004180046a3602b0032000200041a0046a360288040b200041a0036a41d08204100f000b410020012802081020102a000b410020002802081020102a000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4105360200200541f48d0436022020054100360218200541033602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004100f000b1800200128020041a19b044111200128020428020c1100000b5001017f230041206b220324002003410c6a4101360200200341146a4100360200200341949804360210200341003602002003200136021c200320003602182003200341186a36020820032002100f000bd504010c7f230041106b220824002000280204210420002802002103024002402001280208220c410147200128021022024101477145044020024101470d01200320046a210d200141146a28020041016a210a410021022003210003402000200d460d02027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f71200541067472210b20064170490440200b2007410c74722107200041036a21050c010b418080c4002109200041046a210520022007411274418080f0007120002d0003413f71200b41067472722207418080c400460d011a0b20072109200220006b20056a0b2106200a41016b220a044020052100200621022009418080c400470d010c030b0b2009418080c400460d01024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c010b200128020020032004200128020428020c11000021000c010b200c450440200128020020032004200128020428020c11000021000c010b2001410c6a2802002200200320046a2003104622024b0440200841086a2001200020026b4100104a41012100200828020c2202418080c400460d0120082802082001280200220520032004200141046a280200220128020c1100000d01200220052001104b21000c010b200128020020032004200128020428020c11000021000b200841106a240020000bf80202057f027e230041e0006b2200240020004180800136023841e49c04200041386a10040240200028023822014181800149044020002001360234200041e49c04360230200041003602380240200041306a200041386a410410190d002000280238419bddf6f405470d00200041386a200041306a101820002d00380d00200041086a200041306a101520002d0008410171450d020b1027000b20014180800141ec84041011000b20002d00092101200041276a2202200041d1006a290000370000200041206a2203200041ca006a290100370300200041186a200041c2006a29010022053703002000200029013a220637031020002d00392104200041c1006a2005370000200041c9006a2003290300370000200041d0006a2002290000370000200020043a003820002006370039200020013a005c20004100360258200041386a1028230041106b22002400200042808001370204200041e49c04360200200041001017200041001017410020002802081020102a000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41a48804200241086a1035200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1100000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110200450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1100000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a104e20032003290310370320200341086a2005200141046a104e20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110200450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1100000d010b41000c010b41010b200341406b24000b0f00200028020020012002103741000b6001027f230041106b2203240020022000280200200028020822046b4b0440200341086a200020042002103a2003280208200328020c103b200028020821040b200028020420046a20012002100a1a2000200220046a360208200341106a24000bbe0201037f230041106b220224000240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460440230041106b22042400200441086a200020034101103a2004280208200428020c103b200441106a2400200028020821030b2000200341016a360208200028020420036a20013a00000c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10370b200241106a240041000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1034200241206a24000b940401067f230041206b220424002000027f4100200220036a22032002490d001a4108200128020022024101742206200320032006491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200441106a2107230041106b220624002004027f0240027f0240200504400240200341004e044020072802080d0120062003103e2006280204210220062802000c040b0c040b20072802042209450440200641086a2003103e200628020c210220062802080c030b20032102410041dc9c04280200220520036a22082005490d021a2007280200210741e09c042802002008490440200341ffff036a220841107640002202417f46200241ffff0371200247720d022002411074220520084180807c716a22022005490d0241e09c042002360200200321024100200320056a22082005490d031a0b41dc9c04200836020041002005450d021a200520072009100a0c020b200420033602040c020b2003210241000b2205044020042005360204200441086a200236020041000c020b20042003360204200441086a410136020041010c010b200441086a410036020041010b360200200641106a240020042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000b1f00024020014181808080784704402001450d012000103c000b0f0b103d000b900101017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141888b04360218200141003602102001410636022c2001200141286a36022020012001410c6a360228230041206b22002400200041003a0018200041988b043602142000200141106a360210200041c08d0436020c200041949804360208200041086a1043000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041d8890436021020004194980436021820004100360208200041086a41e08904100f000ba10101027f027f410041dc9c04280200220220016a22032002490d001a024041e09c042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141e09c0420033602004100200120026a22032002490d021a0b41dc9c04200336020020020c010b41000b210320002001360204200020033602000b5301027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a2001103e200228020822030d012001103c000b103d000b2000200336020420002001360200200241106a24000be005020b7f027e230041406a220324004127210202402000350200220d4290ce00540440200d210e0c010b0340200341196a20026a220041046b200d200d4290ce0080220e4290ce007e7da7220441ffff037141e4006e2206410174418d8e046a2f00003b0000200041026b2004200641e4006c6b41ffff0371410174418d8e046a2f00003b0000200241046b2102200d42ffc1d72f56200e210d0d000b0b200ea7220041e3004b0440200241026b2202200341196a6a200ea72200200041ffff037141e4006e220041e4006c6b41ffff0371410174418d8e046a2f00003b00000b02402000410a4f0440200241026b2202200341196a6a2000410174418d8e046a2f00003b00000c010b200241016b2202200341196a6a200041306a3a00000b412720026b22062001280218220541017122076a210041002104200541047104404194980421044194980441949804104620006a21000b412b418080c40020071b2107200341196a20026a2108024020012802084504404101210220012802002200200141046a28020022012007200410490d01200020082006200128020c11000021020c010b024020002001410c6a280200220949044020054108710d0141012102200341086a2001200920006b4101104a200328020c2205418080c400460d02200328020820012802002200200141046a28020022012007200410490d02200020082006200128020c1100000d02200520002001104b21020c020b4101210220012802002200200141046a28020022012007200410490d01200020082006200128020c11000021020c010b200128021c210b2001413036021c20012d0020210c41012102200141013a002020012802002205200141046a280200220a2007200410490d00200341106a2001200920006b4101104a20032802142200418080c400460d002003280210200520082006200a28020c1100000d0020002005200a104b0d002001200c3a00202001200b36021c410021020b200341406b240020020b0300010b0e0020002802001a03400c000b000b9c04020a7f017e230041406a220124002001200036020c2001412c6a4102360200200141346a4101360200200141b89804360228200141003602202001410736023c2001200141386a36023020012001410c6a360238200141106a2105230041306b22002400200141206a220341146a280200210620032802082104024002400240200041086a027f024002400240200041106a027f024002402003410c6a28020022080e020001040b20060d0241949804210241000c010b20060d022004280200210220042802040b2203103f2000280210210420052000280214220636020420052004360200200620022003100a1a200520033602080c040b200328021021090c010b2008410374210a200441046a2107200328021021090340200728020020026a2102200741086a2107200a41086b220a0d000b20022006450d011a2002410f4b0d0041002004280204450d011a0b200220026a22074100200220074d1b0b103f2000290308210b200541003602082005200b3702002000200636022c200020093602282000200836022420002004360220200020032902003703182005200041186a10340d010b200041306a24000c010b41a88b044133200041186a41bc880441d08c04102f000b2001280214210020012802182101024041e49c052d000045044041e59c052d00004101710d010b410c20002001100622002000410c4f1b410947044041e49c0541013a00000b41e59c0541013a00000b000b0c0042c092f3e3f7ef81e54d0b8f010020022003490440230041306b220024002000200236020420002003360200200041146a41023602002000411c6a41023602002000412c6a4106360200200041a8910436021020004100360208200041063602242000200041206a3602182000200041046a36022820002000360220200041086a2004100f000b2000200220036b3602042000200120036a3602000bbc0301077f230041106b2203240002400240200020016b22044110490d002004200141036a417c7120016b220049200041044b720d00200420006b22024104490d00200120001047200020016a22062002417c716a200241037110476a21042002410276210203402002450d0220032006200241c0012002200241c0014f1b418893041048200328020c21022003280208210620032003280200200328020422002000417c7141f895041048200328020c2107024020032802042200450440410021000c010b2003280200220520004102746a21084100210003404100210103402000200120056a2802002200417f734107762000410676724181828408716a2100200141046a22014110470d000b200541106a22052008470d000b0b200041087641ff81fc0771200041ff81fc07716a418180046c41107620046a21042007450d000b2003280208210120074102742102410021000340200020012802002200417f734107762000410676724181828408716a2100200141046a2101200241046b22020d000b200041087641ff81fc0771200041ff81fc07716a418180046c41107620046a21040c010b20012004104721040b200341106a240020040b2c01017f200104400340200220002c000041bf7f4a6a2102200041016a2100200141016b22010d000b0b20020b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41949804412320041031000b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1100000b9a0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03000100020b41002104200221030c010b20024101762103200241016a41017621040b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110200450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110200450d000b200441016b0b2000490b2200200120034d044020002001360204200020023602000f0b2001200320041011000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044108470d0120012802000b2802002104410121030b20002004360204200020033602000b85010020012003460440200020022001100a1a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4106360200200041e4940436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a2004100f000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1035200341206a24000bda06010b7f230041f0006b22032400200341003b01642003410a36026020034281808080a00137035820032002360254200341003602502003200236024c200320013602482003200236024420034100360240200028020421062000280200210720002802082108200341dc006a2109027f03400240024020032d00650d0002402003280254220020032802502202490d002000200328024c4b0d002003280248210c0340200328024820026a2101200328025820096a41016b2d0000210402400240027f024002400240200020026b220041084f04402001200141036a417c712202460440200041086b210a410021020c030b200341386a200220016b22022000200020024b1b22022001200041d49004104c200341306a20042003280238200328023c105220032802304101470d012003280234210241010c040b200341186a2004200120001052200328021c210220032802180c030b2002200041086b220a4b0d010b200441818284086c210b0340200120026a2205280200200b73220d417f73200d41818284086b71200541046a280200200b732205417f73200541818284086b7172418081828478710d01200241086a2202200a4d0d000b0b200341286a20012000200241e490041045200341206a20042003280228200328022c1052200328022420026a210220032802204101460b41014604402003200220032802506a41016a2202360250200220032802582200492002200328024c22014b720d022003280248200341106a20002009410441849704104c200220006b6a20002003280210200328021410530d0120032802502102200328024c21010c020b200320032802543602500c030b20032802402100200320032802502201360240200120006b21022000200c6a21000c040b200328025422002002490d01200020014d0d000b0b20032d00650d00200341013a006520032d006445200328024022002003280244220146710d00200120006b2102200328024820006a21000c010b41000c020b024020082d00000440200741848e044104200628020c1100000d010b2003410a36026c20082002047f200341086a20002002200241016b419494041045200341ec006a41012003280208200328020c10530541000b3a0000200720002002200628020c110000450d010b0b41010b200341f0006a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4d01017f2001200346047f027f034041002001450d011a200141016b210120022d0000210320002d00002104200041016a2100200241016a210220032004460d000b200420036b0b0541010b450b1800200128020041a09c044105200128020428020c1100000b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1035200241206a24000b0b002000280200200110320b990301037f230041406a22022400200028020021034101210002402001280200220441d08d04410c200141046a280200220128020c1100000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241e08d0436023020024100360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a1050450d010c020b20032802002200200328020428020c110a0042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241e08d04360230200241003602282002410a3602142002200241106a36023820022002410c6a36021020042001200241286a10500d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4106360200200241346a4106360200200241a88d043602182002410036021020022000410c6a3602382002200041086a3602302002410336022c200220003602282002200241286a36022020042001200241106a105021000b200241406b240020000b0bde1c0200418080040bd1034661696c656420746f206765742076616c756520696e204d617070696e673a2000000100200000002f686f6d652f702f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d342e322e312f7372632f6c617a792f6d617070696e672e7273000000280001005d0000009c00000025000000656e636f756e7465726564206572726f72207768696c652063616c6c696e67203c4163636f756e7449642061732050535032323e3a3a62616c616e63655f6f6698000100400000002f686f6d652f702f2e636172676f2f6769742f636865636b6f7574732f6f70656e62727573682d636f6e7472616374732d346332393166376161623939633337642f386663353034382f636f6e7472616374732f7372632f7472616974732f70737032322f70737032322e7273000000e00001006d000000240000000100000043616e2774206465636f6465203a3a696e6b3a3a4c616e674572723a20000000600101001d000000656e636f756e7465726564206572726f72207768696c652063616c6c696e67203c4163636f756e7449642061732050535032323e3a3a746f74616c5f737570706c79000088010100420041e083040bfc18617474656d707420746f20646976696465206279207a65726f0000000b0000000100000001000000010000002f686f6d652f702f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730c02010060000000e4000000140000002f686f6d652f702f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e727354686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e007c020100620000006b0100000e0000007c020100620000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72400301001c0000007c02010062000000ed000000170000002f686f6d652f702f446f63756d656e74732f6861636b6174686f6e2f696e766573746d656e742d64616f2f636f6e7472616374732f64616f2f6c69622e727300740301003f0000004a00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900c40301002700000073746f7261676520656e7472792077617320656d70747900f403010017000000740301003f000000d60000000d0000000b00000004000000040000000c0000000d0000000e0000000b00000000000000010000000f0000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f77000000c4040100110000004c040100780000000d020000050000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c656466050100150000007b0501000d000000f0040100760000009f0100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e727300db05010074000000640200002000000029696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e6465782069732000610601002000000081060100120000003a000000140c010000000000a406010001000000a4060100010000000b00000000000000010000001000000070616e69636b65642061742027272c20dc06010001000000dd060100030000003a200000140c010000000000f006010002000000202020202c0a280a2830303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273000000d50701007c000000570000002f000000d50701007c000000710000002700000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468207408010012000000860801002200000072616e676520656e6420696e64657820b8080100100000008608010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000d808010016000000ee0801000d0000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300000c0901007a000000c0050000250000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e72730000009809010079000000040900001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028240a010015000000390a01002b00000060060100010000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000007c0a0100790000004f000000320000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300080b01007b000000b801000026000000140c0100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f72617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a140c010000000000370c0100010000002f686f6d652f702f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727300480c0100630000005a00000009000000480c0100630000005a00000031000000480c0100630000006500000009000000480c0100630000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465436f756c644e6f7452656164496e7075742f686f6d652f702f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e332f7372632f636f6465632e727300b20d01005d000000770000000e0000004572726f72000000190000001c000000160000001400000019000000fb0b0100df0b0100c90b0100b50b01009c0b010001020304050607080a0b0c09","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-x86_64-unknown-linux-gnu","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"dao","version":"0.1.0","authors":["Stake Technologies "]},"spec":{"constructors":[{"args":[{"label":"governance_token","type":{"displayName":["AccountId"],"type":1}},{"label":"quorum","type":{"displayName":["u8"],"type":0}}],"default":false,"docs":[],"label":"new","payable":true,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":8},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":1},"balance":{"displayName":["Balance"],"type":3},"blockNumber":{"displayName":["BlockNumber"],"type":7},"chainExtension":{"displayName":["ChainExtension"],"type":23},"hash":{"displayName":["Hash"],"type":22},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":4}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":9},"messages":[{"args":[{"label":"to","type":{"displayName":["AccountId"],"type":1}},{"label":"amount","type":{"displayName":["Balance"],"type":3}},{"label":"duration","type":{"displayName":["u64"],"type":4}}],"default":false,"docs":[],"label":"propose","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":10},"selector":"0xcb14b5b5"},{"args":[{"label":"proposal_id","type":{"displayName":["ProposalId"],"type":7}},{"label":"vote","type":{"displayName":["VoteType"],"type":13}}],"default":false,"docs":[],"label":"vote","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":10},"selector":"0x083be260"},{"args":[{"label":"proposal_id","type":{"displayName":["ProposalId"],"type":7}}],"default":false,"docs":[],"label":"execute","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":10},"selector":"0xd00ec894"},{"args":[{"label":"proposal_id","type":{"displayName":["ProposalId"],"type":7}}],"default":false,"docs":[],"label":"get_proposal_vote","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0x5c417b0c"},{"args":[{"label":"proposal_id","type":{"displayName":["u32"],"type":7}}],"default":false,"docs":[],"label":"get_proposal","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0xba4dc5ec"},{"args":[{"label":"proposal_id","type":{"displayName":["u32"],"type":7}},{"label":"account_id","type":{"displayName":["AccountId"],"type":1}}],"default":false,"docs":[],"label":"has_voted","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":20},"selector":"0xb03e31b0"},{"args":[],"default":false,"docs":[],"label":"now","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0xc97f3bd7"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x2b569513","ty":0}},"name":"against_votes"},{"layout":{"leaf":{"key":"0x2b569513","ty":0}},"name":"for_votes"}],"name":"ProposalVote"}},"root_key":"0x2b569513"}},"name":"proposal_votes"},{"layout":{"root":{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x862b46ed","ty":1}},"name":"to"},{"layout":{"leaf":{"key":"0x862b46ed","ty":3}},"name":"amount"},{"layout":{"leaf":{"key":"0x862b46ed","ty":4}},"name":"vote_start"},{"layout":{"leaf":{"key":"0x862b46ed","ty":4}},"name":"vote_end"},{"layout":{"leaf":{"key":"0x862b46ed","ty":5}},"name":"executed"}],"name":"Proposal"}},"root_key":"0x862b46ed"}},"name":"proposals"},{"layout":{"root":{"layout":{"leaf":{"key":"0x4dcfea21","ty":6}},"root_key":"0x4dcfea21"}},"name":"votes"},{"layout":{"leaf":{"key":"0x00000000","ty":7}},"name":"next_proposal_id"},{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"quorum"},{"layout":{"leaf":{"key":"0x00000000","ty":1}},"name":"governance_token"}],"name":"Governor"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"primitive":"u8"}}},{"id":1,"type":{"def":{"composite":{"fields":[{"type":2,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":2,"type":{"def":{"array":{"len":32,"type":0}}}},{"id":3,"type":{"def":{"primitive":"u128"}}},{"id":4,"type":{"def":{"primitive":"u64"}}},{"id":5,"type":{"def":{"primitive":"bool"}}},{"id":6,"type":{"def":{"tuple":[]}}},{"id":7,"type":{"def":{"primitive":"u32"}}},{"id":8,"type":{"def":{"variant":{"variants":[{"fields":[{"type":6}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":6},{"name":"E","type":9}],"path":["Result"]}},{"id":9,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":10,"type":{"def":{"variant":{"variants":[{"fields":[{"type":11}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":11},{"name":"E","type":9}],"path":["Result"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":6}],"index":0,"name":"Ok"},{"fields":[{"type":12}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":6},{"name":"E","type":12}],"path":["Result"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"index":0,"name":"AmountShouldNotBeZero"},{"index":1,"name":"DurationError"},{"index":2,"name":"ProposalNotFound"},{"index":3,"name":"ProposalAlreadyExecuted"},{"index":4,"name":"VotePeriodEnded"},{"index":5,"name":"AlreadyVoted"},{"index":6,"name":"VotePeriodNotEnded"},{"index":7,"name":"QuorumNotReached"},{"index":8,"name":"TransferError"},{"index":9,"name":"ProposalNotAccepted"}]}},"path":["dao","dao","GovernorError"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"index":0,"name":"Against"},{"index":1,"name":"For"}]}},"path":["dao","dao","VoteType"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":15}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":15},{"name":"E","type":9}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":16}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":16}],"path":["Option"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"name":"against_votes","type":0,"typeName":"u8"},{"name":"for_votes","type":0,"typeName":"u8"}]}},"path":["dao","dao","ProposalVote"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":18}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":18},{"name":"E","type":9}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":19}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":19}],"path":["Option"]}},{"id":19,"type":{"def":{"composite":{"fields":[{"name":"to","type":1,"typeName":"AccountId"},{"name":"amount","type":3,"typeName":"Balance"},{"name":"vote_start","type":4,"typeName":"Timestamp"},{"name":"vote_end","type":4,"typeName":"Timestamp"},{"name":"executed","type":5,"typeName":"bool"}]}},"path":["dao","dao","Proposal"]}},{"id":20,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":9}],"path":["Result"]}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":4}],"index":0,"name":"Ok"},{"fields":[{"type":9}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":4},{"name":"E","type":9}],"path":["Result"]}},{"id":22,"type":{"def":{"composite":{"fields":[{"type":2,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":23,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; \ No newline at end of file diff --git a/typedContracts/dao/contracts/dao.ts b/typedContracts/dao/contracts/dao.ts new file mode 100644 index 0000000..b77124b --- /dev/null +++ b/typedContracts/dao/contracts/dao.ts @@ -0,0 +1,107 @@ +/* This file is auto-generated */ + +import type { ApiPromise } from '@polkadot/api'; +import { Abi } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import { ContractPromise } from '@polkadot/api-contract'; +import { ContractAbi } from '../contract-info/dao'; +import QueryMethods from '../query/dao'; +import BuildExtrinsicMethods from '../build-extrinsic/dao'; +import TxSignAndSendMethods from '../tx-sign-and-send/dao'; +import MixedMethods from '../mixed-methods/dao'; +import EventsClass from '../events/dao'; + + +export default class Contract { + readonly query : QueryMethods; + readonly buildExtrinsic : BuildExtrinsicMethods; + readonly tx : TxSignAndSendMethods; + readonly methods : MixedMethods; + readonly events: EventsClass; + + readonly address : string; + readonly signer : KeyringPair; + + private nativeContract : ContractPromise; + private nativeAPI : ApiPromise; + private contractAbi: Abi; + + /** + * @constructor + + * @param address - The address of the contract. + * @param signer - The signer to use for signing transactions. + * @param nativeAPI - The API instance to use for queries. + */ + constructor( + address : string, + signer : KeyringPair, + nativeAPI : ApiPromise, + ) { + this.address = address; + this.nativeContract = new ContractPromise(nativeAPI, ContractAbi, address); + this.nativeAPI = nativeAPI; + this.signer = signer; + this.contractAbi = new Abi(ContractAbi); + + this.query = new QueryMethods(this.nativeContract, this.nativeAPI, signer.address); + this.buildExtrinsic = new BuildExtrinsicMethods(this.nativeContract, this.nativeAPI); + this.tx = new TxSignAndSendMethods(nativeAPI, this.nativeContract, signer); + this.methods = new MixedMethods(nativeAPI, this.nativeContract, signer); + this.events = new EventsClass(this.nativeContract, nativeAPI); + } + + /** + * name + * + * @returns The name of the contract. + */ + get name() : string { + return this.nativeContract.abi.info.contract.name.toString(); + } + + /** + * abi + * + * @returns The abi of the contract. + */ + get abi() : Abi { + return this.contractAbi; + } + + /** + * withSigner + * + * @param signer - The signer to use for signing transactions. + * @returns New instance of the contract class with new signer. + * @example + * ```typescript + * const contract = new Contract(address, signerAlice, api); + * await contract.mint(signerBob.address, 100); + * await contract.withSigner(signerBob).transfer(signerAlice.address, 100); + * ``` + */ + withSigner(signer : KeyringPair) : Contract { + return new Contract(this.address, signer, this.nativeAPI); + } + + /** + * withAddress + * + * @param address - The address of the contract. + * @returns New instance of the contract class to interact with new contract. + */ + withAddress(address : string) : Contract { + return new Contract(address, this.signer, this.nativeAPI); + } + + /** + * withAPI + * + * @param api - The API instance to use for queries. + * @returns New instance of the contract class to interact with new API. + */ + withAPI(api : ApiPromise) : Contract { + return new Contract(this.address, this.signer, api); + } +} \ No newline at end of file diff --git a/typedContracts/dao/data/dao.json b/typedContracts/dao/data/dao.json new file mode 100644 index 0000000..a043930 --- /dev/null +++ b/typedContracts/dao/data/dao.json @@ -0,0 +1,3 @@ +{ +"0": {"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"1": {"name":"AccountId","body":"string | number[]","isResult":false,"isPrimitive":true,"isConvertable":false},"2": {"name":"Array","body":{"0":{"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false},"3": {"name":"ReturnNumber","isResult":false,"isPrimitive":false,"isConvertable":true},"4": {"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"5": {"name":"boolean","isResult":false,"isPrimitive":true,"isConvertable":false},"6": {"name":"null","isResult":false,"isPrimitive":true,"isConvertable":false},"7": {"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"8": {"name":"Result void, + filter : (eventName: string) => boolean = () => true + ) { + // @ts-ignore + return this.__api.query.system.events((events) => { + events.forEach((record: any) => { + const { event } = record; + + if (event.method == 'ContractEmitted') { + const [address, data] = record.event.data; + + if (address.toString() === this.__nativeContract.address.toString()) { + const {args, event} = this.__nativeContract.abi.decodeEvent(data); + + if (filter(event.identifier.toString())) + callback(args, event); + } + } + }); + }); + } + +} \ No newline at end of file diff --git a/typedContracts/dao/mixed-methods/dao.ts b/typedContracts/dao/mixed-methods/dao.ts new file mode 100644 index 0000000..03d574c --- /dev/null +++ b/typedContracts/dao/mixed-methods/dao.ts @@ -0,0 +1,143 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { ApiPromise } from '@polkadot/api'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { QueryReturnType } from '@727-ventures/typechain-types'; +import { queryOkJSON, queryJSON, handleReturnType } from '@727-ventures/typechain-types'; +import { txSignAndSend } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/dao'; +import type * as ReturnTypes from '../types-returns/dao'; +import type BN from 'bn.js'; +//@ts-ignore +import {ReturnNumber} from '@727-ventures/typechain-types'; +import {getTypeDescription} from './../shared/utils'; +// @ts-ignore +import type {EventRecord} from "@polkadot/api/submittable"; +import {decodeEvents} from "../shared/utils"; +import DATA_TYPE_DESCRIPTIONS from '../data/dao.json'; +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/dao.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __keyringPair : KeyringPair; + private __callerAddress : string; + private __apiPromise: ApiPromise; + + constructor( + apiPromise : ApiPromise, + nativeContract : ContractPromise, + keyringPair : KeyringPair, + ) { + this.__apiPromise = apiPromise; + this.__nativeContract = nativeContract; + this.__keyringPair = keyringPair; + this.__callerAddress = keyringPair.address; + } + + /** + * propose + * + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } amount, + * @param { (number | string | BN) } duration, + * @returns { void } + */ + "propose" ( + to: ArgumentTypes.AccountId, + amount: (string | number | BN), + duration: (number | string | BN), + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "propose", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [to, amount, duration], __options); + } + + /** + * vote + * + * @param { (number | string | BN) } proposalId, + * @param { ArgumentTypes.VoteType } vote, + * @returns { void } + */ + "vote" ( + proposalId: (number | string | BN), + vote: ArgumentTypes.VoteType, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "vote", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [proposalId, vote], __options); + } + + /** + * execute + * + * @param { (number | string | BN) } proposalId, + * @returns { void } + */ + "execute" ( + proposalId: (number | string | BN), + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "execute", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [proposalId], __options); + } + + /** + * getProposalVote + * + * @param { (number | string | BN) } proposalId, + * @returns { Result } + */ + "getProposalVote" ( + proposalId: (number | string | BN), + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "getProposalVote", [proposalId], __options, (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * getProposal + * + * @param { (number | string | BN) } proposalId, + * @returns { Result } + */ + "getProposal" ( + proposalId: (number | string | BN), + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "getProposal", [proposalId], __options, (result) => { return handleReturnType(result, getTypeDescription(17, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * hasVoted + * + * @param { (number | string | BN) } proposalId, + * @param { ArgumentTypes.AccountId } accountId, + * @returns { Result } + */ + "hasVoted" ( + proposalId: (number | string | BN), + accountId: ArgumentTypes.AccountId, + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "hasVoted", [proposalId, accountId], __options, (result) => { return handleReturnType(result, getTypeDescription(20, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * now + * + * @returns { Result } + */ + "now" ( + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "now", [], __options, (result) => { return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)); }); + } + +} \ No newline at end of file diff --git a/typedContracts/dao/query/dao.ts b/typedContracts/dao/query/dao.ts new file mode 100644 index 0000000..e765704 --- /dev/null +++ b/typedContracts/dao/query/dao.ts @@ -0,0 +1,129 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { ApiPromise } from '@polkadot/api'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { QueryReturnType } from '@727-ventures/typechain-types'; +import { queryJSON, queryOkJSON, handleReturnType } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/dao'; +import type * as ReturnTypes from '../types-returns/dao'; +import type BN from 'bn.js'; +//@ts-ignore +import {ReturnNumber} from '@727-ventures/typechain-types'; +import {getTypeDescription} from './../shared/utils'; +import DATA_TYPE_DESCRIPTIONS from '../data/dao.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __apiPromise: ApiPromise; + private __callerAddress : string; + + constructor( + nativeContract : ContractPromise, + nativeApi : ApiPromise, + callerAddress : string, + ) { + this.__nativeContract = nativeContract; + this.__callerAddress = callerAddress; + this.__apiPromise = nativeApi; + } + + /** + * propose + * + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } amount, + * @param { (number | string | BN) } duration, + * @returns { Result, ReturnTypes.LangError> } + */ + "propose" ( + to: ArgumentTypes.AccountId, + amount: (string | number | BN), + duration: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "propose", [to, amount, duration], __options , (result) => { return handleReturnType(result, getTypeDescription(10, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * vote + * + * @param { (number | string | BN) } proposalId, + * @param { ArgumentTypes.VoteType } vote, + * @returns { Result, ReturnTypes.LangError> } + */ + "vote" ( + proposalId: (number | string | BN), + vote: ArgumentTypes.VoteType, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "vote", [proposalId, vote], __options , (result) => { return handleReturnType(result, getTypeDescription(10, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * execute + * + * @param { (number | string | BN) } proposalId, + * @returns { Result, ReturnTypes.LangError> } + */ + "execute" ( + proposalId: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "execute", [proposalId], __options , (result) => { return handleReturnType(result, getTypeDescription(10, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * getProposalVote + * + * @param { (number | string | BN) } proposalId, + * @returns { Result } + */ + "getProposalVote" ( + proposalId: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "getProposalVote", [proposalId], __options , (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * getProposal + * + * @param { (number | string | BN) } proposalId, + * @returns { Result } + */ + "getProposal" ( + proposalId: (number | string | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "getProposal", [proposalId], __options , (result) => { return handleReturnType(result, getTypeDescription(17, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * hasVoted + * + * @param { (number | string | BN) } proposalId, + * @param { ArgumentTypes.AccountId } accountId, + * @returns { Result } + */ + "hasVoted" ( + proposalId: (number | string | BN), + accountId: ArgumentTypes.AccountId, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "hasVoted", [proposalId, accountId], __options , (result) => { return handleReturnType(result, getTypeDescription(20, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * now + * + * @returns { Result } + */ + "now" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "now", [], __options , (result) => { return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)); }); + } + +} \ No newline at end of file diff --git a/typedContracts/dao/shared/utils.ts b/typedContracts/dao/shared/utils.ts new file mode 100644 index 0000000..395aa48 --- /dev/null +++ b/typedContracts/dao/shared/utils.ts @@ -0,0 +1,38 @@ +import fs from "fs"; +import type {ContractPromise} from "@polkadot/api-contract"; +import {handleEventReturn} from "@727-ventures/typechain-types"; + +export function getTypeDescription(id: number | string, types: any): any { + return types[id]; +} + +export function getEventTypeDescription(name: string, types: any): any { + return types[name]; +} + +export function decodeEvents(events: any[], contract: ContractPromise, types: any): any[] { + return events.filter((record: any) => { + const { event } = record; + + const [address, data] = record.event.data; + + return event.method == 'ContractEmitted' && address.toString() === contract.address.toString(); + }).map((record: any) => { + const [address, data] = record.event.data; + + const {args, event} = contract.abi.decodeEvent(data); + + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + handleEventReturn(_event, getEventTypeDescription(event.identifier.toString(), types)); + + return { + name: event.identifier.toString(), + args: _event, + }; + }); +} \ No newline at end of file diff --git a/typedContracts/dao/tx-sign-and-send/dao.ts b/typedContracts/dao/tx-sign-and-send/dao.ts new file mode 100644 index 0000000..599fc68 --- /dev/null +++ b/typedContracts/dao/tx-sign-and-send/dao.ts @@ -0,0 +1,135 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type { ApiPromise } from '@polkadot/api'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import { txSignAndSend } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/dao'; +import type BN from 'bn.js'; +// @ts-ignore +import type {EventRecord} from "@polkadot/api/submittable"; +import {decodeEvents} from "../shared/utils"; +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/dao.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __keyringPair : KeyringPair; + private __apiPromise: ApiPromise; + + constructor( + apiPromise: ApiPromise, + nativeContract : ContractPromise, + keyringPair : KeyringPair, + ) { + this.__apiPromise = apiPromise; + this.__nativeContract = nativeContract; + this.__keyringPair = keyringPair; + } + + /** + * propose + * + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } amount, + * @param { (number | string | BN) } duration, + */ + "propose" ( + to: ArgumentTypes.AccountId, + amount: (string | number | BN), + duration: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "propose", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [to, amount, duration], __options); + } + + /** + * vote + * + * @param { (number | string | BN) } proposalId, + * @param { ArgumentTypes.VoteType } vote, + */ + "vote" ( + proposalId: (number | string | BN), + vote: ArgumentTypes.VoteType, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "vote", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [proposalId, vote], __options); + } + + /** + * execute + * + * @param { (number | string | BN) } proposalId, + */ + "execute" ( + proposalId: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "execute", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [proposalId], __options); + } + + /** + * getProposalVote + * + * @param { (number | string | BN) } proposalId, + */ + "getProposalVote" ( + proposalId: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "getProposalVote", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [proposalId], __options); + } + + /** + * getProposal + * + * @param { (number | string | BN) } proposalId, + */ + "getProposal" ( + proposalId: (number | string | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "getProposal", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [proposalId], __options); + } + + /** + * hasVoted + * + * @param { (number | string | BN) } proposalId, + * @param { ArgumentTypes.AccountId } accountId, + */ + "hasVoted" ( + proposalId: (number | string | BN), + accountId: ArgumentTypes.AccountId, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "hasVoted", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [proposalId, accountId], __options); + } + + /** + * now + * + */ + "now" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "now", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + +} \ No newline at end of file diff --git a/typedContracts/dao/types-arguments/dao.ts b/typedContracts/dao/types-arguments/dao.ts new file mode 100644 index 0000000..b38330f --- /dev/null +++ b/typedContracts/dao/types-arguments/dao.ts @@ -0,0 +1,39 @@ +import type BN from 'bn.js'; + +export type AccountId = string | number[] + +export enum LangError { + couldNotReadInput = 'CouldNotReadInput' +} + +export enum GovernorError { + amountShouldNotBeZero = 'AmountShouldNotBeZero', + durationError = 'DurationError', + proposalNotFound = 'ProposalNotFound', + proposalAlreadyExecuted = 'ProposalAlreadyExecuted', + votePeriodEnded = 'VotePeriodEnded', + alreadyVoted = 'AlreadyVoted', + votePeriodNotEnded = 'VotePeriodNotEnded', + quorumNotReached = 'QuorumNotReached', + transferError = 'TransferError', + proposalNotAccepted = 'ProposalNotAccepted' +} + +export enum VoteType { + against = 'Against', + for = 'For' +} + +export type ProposalVote = { + againstVotes: (number | string | BN), + forVotes: (number | string | BN) +} + +export type Proposal = { + to: AccountId, + amount: (string | number | BN), + voteStart: (number | string | BN), + voteEnd: (number | string | BN), + executed: boolean +} + diff --git a/typedContracts/dao/types-returns/dao.ts b/typedContracts/dao/types-returns/dao.ts new file mode 100644 index 0000000..df27048 --- /dev/null +++ b/typedContracts/dao/types-returns/dao.ts @@ -0,0 +1,40 @@ +import type BN from 'bn.js'; +import type {ReturnNumber} from '@727-ventures/typechain-types'; + +export type AccountId = string | number[] + +export enum LangError { + couldNotReadInput = 'CouldNotReadInput' +} + +export enum GovernorError { + amountShouldNotBeZero = 'AmountShouldNotBeZero', + durationError = 'DurationError', + proposalNotFound = 'ProposalNotFound', + proposalAlreadyExecuted = 'ProposalAlreadyExecuted', + votePeriodEnded = 'VotePeriodEnded', + alreadyVoted = 'AlreadyVoted', + votePeriodNotEnded = 'VotePeriodNotEnded', + quorumNotReached = 'QuorumNotReached', + transferError = 'TransferError', + proposalNotAccepted = 'ProposalNotAccepted' +} + +export enum VoteType { + against = 'Against', + for = 'For' +} + +export type ProposalVote = { + againstVotes: number, + forVotes: number +} + +export type Proposal = { + to: AccountId, + amount: ReturnNumber, + voteStart: number, + voteEnd: number, + executed: boolean +} + diff --git a/typedContracts/governance-token/build-extrinsic/my_psp22_metadata.ts b/typedContracts/governance-token/build-extrinsic/my_psp22_metadata.ts new file mode 100644 index 0000000..8783b8c --- /dev/null +++ b/typedContracts/governance-token/build-extrinsic/my_psp22_metadata.ts @@ -0,0 +1,165 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { GasLimit, GasLimitAndRequiredValue } from '@727-ventures/typechain-types'; +import { buildSubmittableExtrinsic } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/my_psp22_metadata'; +import type BN from 'bn.js'; +import type { ApiPromise } from '@polkadot/api'; + + + +export default class Methods { + private __nativeContract : ContractPromise; + private __apiPromise: ApiPromise; + + constructor( + nativeContract : ContractPromise, + apiPromise: ApiPromise, + ) { + this.__nativeContract = nativeContract; + this.__apiPromise = apiPromise; + } + /** + * decreaseAllowance + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } deltaValue, + */ + "decreaseAllowance" ( + spender: ArgumentTypes.AccountId, + deltaValue: (string | number | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22::decreaseAllowance", [spender, deltaValue], __options); + } + + /** + * allowance + * + * @param { ArgumentTypes.AccountId } owner, + * @param { ArgumentTypes.AccountId } spender, + */ + "allowance" ( + owner: ArgumentTypes.AccountId, + spender: ArgumentTypes.AccountId, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22::allowance", [owner, spender], __options); + } + + /** + * balanceOf + * + * @param { ArgumentTypes.AccountId } owner, + */ + "balanceOf" ( + owner: ArgumentTypes.AccountId, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22::balanceOf", [owner], __options); + } + + /** + * approve + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } value, + */ + "approve" ( + spender: ArgumentTypes.AccountId, + value: (string | number | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22::approve", [spender, value], __options); + } + + /** + * totalSupply + * + */ + "totalSupply" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22::totalSupply", [], __options); + } + + /** + * increaseAllowance + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } deltaValue, + */ + "increaseAllowance" ( + spender: ArgumentTypes.AccountId, + deltaValue: (string | number | BN), + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22::increaseAllowance", [spender, deltaValue], __options); + } + + /** + * transfer + * + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } value, + * @param { Array<(number | string | BN)> } data, + */ + "transfer" ( + to: ArgumentTypes.AccountId, + value: (string | number | BN), + data: Array<(number | string | BN)>, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22::transfer", [to, value, data], __options); + } + + /** + * transferFrom + * + * @param { ArgumentTypes.AccountId } from, + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } value, + * @param { Array<(number | string | BN)> } data, + */ + "transferFrom" ( + from: ArgumentTypes.AccountId, + to: ArgumentTypes.AccountId, + value: (string | number | BN), + data: Array<(number | string | BN)>, + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22::transferFrom", [from, to, value, data], __options); + } + + /** + * tokenSymbol + * + */ + "tokenSymbol" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22Metadata::tokenSymbol", [], __options); + } + + /** + * tokenDecimals + * + */ + "tokenDecimals" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22Metadata::tokenDecimals", [], __options); + } + + /** + * tokenName + * + */ + "tokenName" ( + __options: GasLimit, + ){ + return buildSubmittableExtrinsic( this.__apiPromise, this.__nativeContract, "psp22Metadata::tokenName", [], __options); + } + +} \ No newline at end of file diff --git a/typedContracts/governance-token/constructors/my_psp22_metadata.ts b/typedContracts/governance-token/constructors/my_psp22_metadata.ts new file mode 100644 index 0000000..62716e3 --- /dev/null +++ b/typedContracts/governance-token/constructors/my_psp22_metadata.ts @@ -0,0 +1,59 @@ +import {CodePromise} from "@polkadot/api-contract"; +import type {KeyringPair} from "@polkadot/keyring/types"; +import type {ApiPromise} from "@polkadot/api"; +import {_genValidGasLimitAndValue, _signAndSend, SignAndSendSuccessResponse} from "@727-ventures/typechain-types"; +import type {ConstructorOptions} from "@727-ventures/typechain-types"; +import type {WeightV2} from "@polkadot/types/interfaces"; +import type * as ArgumentTypes from '../types-arguments/my_psp22_metadata'; +import { ContractFile } from '../contract-info/my_psp22_metadata'; +import type BN from 'bn.js'; + +export default class Constructors { + readonly nativeAPI: ApiPromise; + readonly signer: KeyringPair; + + constructor( + nativeAPI: ApiPromise, + signer: KeyringPair, + ) { + this.nativeAPI = nativeAPI; + this.signer = signer; + } + + /** + * new + * + * @param { (string | number | BN) } totalSupply, + * @param { string | null } name, + * @param { string | null } symbol, + * @param { (number | string | BN) } decimal, + */ + async "new" ( + totalSupply: (string | number | BN), + name: string | null, + symbol: string | null, + decimal: (number | string | BN), + __options ? : ConstructorOptions, + ) { + const __contract = JSON.parse(ContractFile); + const code = new CodePromise(this.nativeAPI, __contract, __contract.source.wasm); + const gasLimit = (await _genValidGasLimitAndValue(this.nativeAPI, __options)).gasLimit as WeightV2; + + const storageDepositLimit = __options?.storageDepositLimit; + const tx = code.tx["new"]!({ gasLimit, storageDepositLimit, value: __options?.value }, totalSupply, name, symbol, decimal); + let response; + + try { + response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event); + } + catch (error) { + console.log(error); + } + + return { + result: response as SignAndSendSuccessResponse, + // @ts-ignore + address: (response as SignAndSendSuccessResponse)!.result!.contract.address.toString(), + }; + } +} \ No newline at end of file diff --git a/typedContracts/governance-token/contract-info/my_psp22_metadata.ts b/typedContracts/governance-token/contract-info/my_psp22_metadata.ts new file mode 100644 index 0000000..bf8e395 --- /dev/null +++ b/typedContracts/governance-token/contract-info/my_psp22_metadata.ts @@ -0,0 +1,2 @@ +export const ContractAbi = `{"source":{"hash":"0x70c94beec2ca5a61f88b644fd3c144744f4252ac8be92341175e72db2c540f12","language":"ink! 4.2.1","compiler":"rustc 1.70.0-nightly","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-x86_64-unknown-linux-gnu","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"my_psp22_metadata","version":"3.1.1","authors":["Brushfam "]},"spec":{"constructors":[{"args":[{"label":"total_supply","type":{"displayName":["Balance"],"type":0}},{"label":"name","type":{"displayName":["Option"],"type":4}},{"label":"symbol","type":{"displayName":["Option"],"type":4}},{"label":"decimal","type":{"displayName":["u8"],"type":3}}],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":5},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":7},"balance":{"displayName":["Balance"],"type":0},"blockNumber":{"displayName":["BlockNumber"],"type":18},"chainExtension":{"displayName":["ChainExtension"],"type":19},"hash":{"displayName":["Hash"],"type":16},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":17}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":6},"messages":[{"args":[{"label":"spender","type":{"displayName":["psp22_external","DecreaseAllowanceInput1"],"type":7}},{"label":"delta_value","type":{"displayName":["psp22_external","DecreaseAllowanceInput2"],"type":0}}],"default":false,"docs":[" Atomically decreases the allowance granted to \`spender\` by the caller.",""," An \`Approval\` event is emitted.",""," # Errors",""," Returns \`InsufficientAllowance\` error if there are not enough tokens allowed"," by owner for \`spender\`.",""," Returns \`ZeroSenderAddress\` error if sender's address is zero.",""," Returns \`ZeroRecipientAddress\` error if recipient's address is zero."],"label":"PSP22::decrease_allowance","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":9},"selector":"0xfecb57d5"},{"args":[{"label":"owner","type":{"displayName":["psp22_external","AllowanceInput1"],"type":7}},{"label":"spender","type":{"displayName":["psp22_external","AllowanceInput2"],"type":7}}],"default":false,"docs":[" Returns the amount which \`spender\` is still allowed to withdraw from \`owner\`.",""," Returns \`0\` if no allowance has been set \`0\`."],"label":"PSP22::allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x4d47d921"},{"args":[{"label":"owner","type":{"displayName":["psp22_external","BalanceOfInput1"],"type":7}}],"default":false,"docs":[" Returns the account Balance for the specified \`owner\`.",""," Returns \`0\` if the account is non-existent."],"label":"PSP22::balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x6568382f"},{"args":[{"label":"spender","type":{"displayName":["psp22_external","ApproveInput1"],"type":7}},{"label":"value","type":{"displayName":["psp22_external","ApproveInput2"],"type":0}}],"default":false,"docs":[" Allows \`spender\` to withdraw from the caller's account multiple times, up to"," the \`value\` amount.",""," If this function is called again it overwrites the current allowance with \`value\`.",""," An \`Approval\` event is emitted.",""," # Errors",""," Returns \`ZeroSenderAddress\` error if sender's address is zero.",""," Returns \`ZeroRecipientAddress\` error if recipient's address is zero."],"label":"PSP22::approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":9},"selector":"0xb20f1bbd"},{"args":[],"default":false,"docs":[" Returns the total token supply."],"label":"PSP22::total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x162df8c2"},{"args":[{"label":"spender","type":{"displayName":["psp22_external","IncreaseAllowanceInput1"],"type":7}},{"label":"delta_value","type":{"displayName":["psp22_external","IncreaseAllowanceInput2"],"type":0}}],"default":false,"docs":[" Atomically increases the allowance granted to \`spender\` by the caller.",""," An \`Approval\` event is emitted.",""," # Errors",""," Returns \`ZeroSenderAddress\` error if sender's address is zero.",""," Returns \`ZeroRecipientAddress\` error if recipient's address is zero."],"label":"PSP22::increase_allowance","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":9},"selector":"0x96d6b57a"},{"args":[{"label":"to","type":{"displayName":["psp22_external","TransferInput1"],"type":7}},{"label":"value","type":{"displayName":["psp22_external","TransferInput2"],"type":0}},{"label":"data","type":{"displayName":["psp22_external","TransferInput3"],"type":13}}],"default":false,"docs":[" Transfers \`value\` amount of tokens from the caller's account to account \`to\`"," with additional \`data\` in unspecified format.",""," On success a \`Transfer\` event is emitted.",""," # Errors",""," Returns \`InsufficientBalance\` error if there are not enough tokens on"," the caller's account Balance.",""," Returns \`ZeroSenderAddress\` error if sender's address is zero.",""," Returns \`ZeroRecipientAddress\` error if recipient's address is zero."],"label":"PSP22::transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":9},"selector":"0xdb20f9f5"},{"args":[{"label":"from","type":{"displayName":["psp22_external","TransferFromInput1"],"type":7}},{"label":"to","type":{"displayName":["psp22_external","TransferFromInput2"],"type":7}},{"label":"value","type":{"displayName":["psp22_external","TransferFromInput3"],"type":0}},{"label":"data","type":{"displayName":["psp22_external","TransferFromInput4"],"type":13}}],"default":false,"docs":[" Transfers \`value\` tokens on the behalf of \`from\` to the account \`to\`"," with additional \`data\` in unspecified format.",""," This can be used to allow a contract to transfer tokens on ones behalf and/or"," to charge fees in sub-currencies, for example.",""," On success a \`Transfer\` and \`Approval\` events are emitted.",""," # Errors",""," Returns \`InsufficientAllowance\` error if there are not enough tokens allowed"," for the caller to withdraw from \`from\`.",""," Returns \`InsufficientBalance\` error if there are not enough tokens on"," the the account Balance of \`from\`.",""," Returns \`ZeroSenderAddress\` error if sender's address is zero.",""," Returns \`ZeroRecipientAddress\` error if recipient's address is zero."],"label":"PSP22::transfer_from","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":9},"selector":"0x54b3c76e"},{"args":[],"default":false,"docs":[" Returns the token symbol."],"label":"PSP22Metadata::token_symbol","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0x34205be5"},{"args":[],"default":false,"docs":[" Returns the token decimals."],"label":"PSP22Metadata::token_decimals","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x7271b782"},{"args":[],"default":false,"docs":[" Returns the token name."],"label":"PSP22Metadata::token_name","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0x3d261bd4"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"supply"},{"layout":{"root":{"layout":{"leaf":{"key":"0x1d458d3b","ty":0}},"root_key":"0x1d458d3b"}},"name":"balances"},{"layout":{"root":{"layout":{"leaf":{"key":"0x0abd72fb","ty":0}},"root_key":"0x0abd72fb"}},"name":"allowances"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":1}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Data"}},"name":"psp22"},{"layout":{"struct":{"fields":[{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"0"}],"name":"Some"}}}},"name":"name"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"0"}],"name":"Some"}}}},"name":"symbol"},{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"decimals"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":1}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Data"}},"name":"metadata"}],"name":"Contract"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"primitive":"u128"}}},{"id":1,"type":{"def":{"tuple":[]}}},{"id":2,"type":{"def":{"primitive":"str"}}},{"id":3,"type":{"def":{"primitive":"u8"}}},{"id":4,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":5,"type":{"def":{"variant":{"variants":[{"fields":[{"type":1}],"index":0,"name":"Ok"},{"fields":[{"type":6}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":1},{"name":"E","type":6}],"path":["Result"]}},{"id":6,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":7,"type":{"def":{"composite":{"fields":[{"type":8,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":8,"type":{"def":{"array":{"len":32,"type":3}}}},{"id":9,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":6}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":6}],"path":["Result"]}},{"id":10,"type":{"def":{"variant":{"variants":[{"fields":[{"type":1}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":1},{"name":"E","type":11}],"path":["Result"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2,"typeName":"String"}],"index":0,"name":"Custom"},{"index":1,"name":"InsufficientBalance"},{"index":2,"name":"InsufficientAllowance"},{"index":3,"name":"ZeroRecipientAddress"},{"index":4,"name":"ZeroSenderAddress"},{"fields":[{"type":2,"typeName":"String"}],"index":5,"name":"SafeTransferCheckFailed"}]}},"path":["openbrush_contracts","traits","errors","psp22","PSP22Error"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":6}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":6}],"path":["Result"]}},{"id":13,"type":{"def":{"sequence":{"type":3}}}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":4}],"index":0,"name":"Ok"},{"fields":[{"type":6}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":4},{"name":"E","type":6}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":6}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":6}],"path":["Result"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"type":8,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":17,"type":{"def":{"primitive":"u64"}}},{"id":18,"type":{"def":{"primitive":"u32"}}},{"id":19,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; +export const ContractFile = `{"source":{"hash":"0x70c94beec2ca5a61f88b644fd3c144744f4252ac8be92341175e72db2c540f12","language":"ink! 4.2.1","compiler":"rustc 1.70.0-nightly","wasm":"0x0061736d01000000017b1360037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060057f7f7f7f7f0060047f7f7f7f0060017f017f60047f7f7f7f017f60000060057f7f7f7f7f017f60057f7f7f7e7e0060017f017e60037f7e7e0060037e7e7f006000017f60027e7e0060067f7f7f7f7f7f0060077f7f7f7f7f7f7f017f02990108057365616c310b6765745f73746f726167650008057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300663616c6c65720002057365616c300d64656275675f6d6573736167650001057365616c320b7365745f73746f726167650008057365616c300b7365616c5f72657475726e000303656e76066d656d6f727902010210037372000000000402020d0202030e020202020304050f02030303040703040102030207010b070b0203021009040302020909010000030101060204090306020101040c05030a010a06080105030311030207060101030305000101000608010100010101070312010505000a010101010101000604050170011c1c0608017f01418080040b0711020463616c6c0035066465706c6f7900360921010041010b1b59582823714474455f6c7273751f761f393b3c71476063646566670adfb801722b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b4101017f20002f01042103200041003a000420034101710440200120034108763a00002000280200200141016a200241016b100a0f0b200028020020012002100a0b3d01027f2000280204220320024922044504402001200220002802002201200241dcb704105c2000200320026b3602042000200120026a3602000b20040b080020004101100c0b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b2002200341c0b4041052000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120100a45044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000bae0102047f017e230041306b2203240020034100360218200342808001370224200341a4b80436022041bb9a96ea01200341206a2204100f20002004101020032003290320370310200341086a200341106a220520032802281011200328020c21002003280208200329031021072003410036022820032007370320200120022004101220032003290320370310200320052003280228101120002003280200200328020410051a200341306a24000b2601017f230041106b220224002002200036020c20012002410c6a41041017200241106a24000b0a0020012000412010170b4501017f2002200128020422034b04404188b304412341d0b4041051000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b2a01017f230041106b2203240020032001370308200320003703002002200341101017200341106a24000bac0102017f027e230041406a22022400200241186a2001100d0240024020022d00184504402002200110142002290300a7450d010b200042013703000c010b200241106a2903002103200229030821042000200229001937000820004200370300200041286a2004370300200041306a2003370300200041206a200241316a290000370000200041186a200241296a290000370000200041106a200241216a2900003700000b200241406b24000b6402027f037e230041106b22022400200241086a22034200370300200242003703000240200120024110100a45044020032903002105200229030021060c010b420121040b2000200637030820002004370300200041106a2005370300200241106a24000b3f01027f230041106b22022400200241003a000f200020012002410f6a4101100a2201047f41000520022d000f0b3a0001200020013a0000200241106a24000b2601017f230041106b22022400200220003a000f20012002410f6a41011017200241106a24000b5701037f02402000280208220420026a220320044f04402003200028020422054b0d01200028020020046a20022001200241b0b404105c200020033602080f0b2004200341a0b4041054000b2003200541a0b4041021000ba70101017f230041306b2201240020014180800136020041a4b8042001100320014180800136022c200141a4b8043602282001200141286a100d20012d00000440200141003a000041b8820441c100200141b8810441dc83041019000b20002001290102370001200041096a2001410a6a290100370000200041116a200141126a290100370000200041186a200141196a290000370000200020012d00013a0000200141306a24000b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4101360200200541908d0436022020054100360218200541023602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041024000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b930302057f017e230041d0006b220224002002410036023020024280800137023c200241a4b80436023841bb9a96ea01200241386a2205100f20012005101020022002290338370328200241206a200241286a20022802401011200228022421032002280220200228022821012002200228022c22063602382003200120051000210302402002280238220420064d04402000027e024002400240410c20032003410c4f1b0e0402000001000b200241c4006a4101360200200241cc006a410036020020024198840436024020024188b30436024820024100360238200241386a41a084041024000b42000c010b2002200436023c20022001360238200241086a200241386a10142002290308a70d02200241186a290300210720022903100b37030020002007370308200241d0006a24000f0b2004200641a882041021000b200241003a0037200241c4006a4101360200200241cc006a4101360200200241a48004360240200241003602382002410336022c2002200241286a3602482002200241376a360228200241386a419881041024000b990302047f017e230041d0006b220324002003410036023020034280800137023c200341a4b80436023841fbe5f5d500200341386a2206100f20012006101020022006101020032003290338370328200341206a200341286a20032802401011200328022421042003280220200328022821012003200328022c22023602382004200120061000210402402003280238220520024d04402000027e024002400240410c20042004410c4f1b0e0402000001000b200341c4006a4101360200200341cc006a410036020020034198840436024020034188b30436024820034100360238200341386a41a084041024000b42000c010b2003200536023c20032001360238200341086a200341386a10142003290308a70d02200341186a290300210720032903100b37030020002007370308200341d0006a24000f0b2005200241a882041021000b200341003a0037200341c4006a4101360200200341cc006a4101360200200341a48004360240200341003602382003410336022c2003200341286a3602482003200341376a360228200341386a419881041024000b18002001450440200041003602040f0b200020012002101e0b4701037f230041106b22032400200341086a20021043200328020821042000200328020c22053602042000200436020020052001200210071a20002002360208200341106a24000b0300010b1b002000418180014f044020004180800141ec83041021000b20000b0e0020002001200241b4930410780b5201017f230041206b220124002001410c6a4101360200200141146a410136020020014188b204360208200141003602002001410436021c200120003602182001200141186a360210200141fc84041024000b910101017f230041306b22022400200241146a41013602002002411c6a410136020020024188b2043602102002410036020820024102360224200220002d0000410274220041f4b7046a28020036022c200220004188b8046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a105d200241306a24000b3c01017f230041206b22022400200241013a00182002200136021420022000360210200241dc8c0436020c20024188b304360208200241086a1046000b7c01017f230041106b2203240002402001413f4d044020022001410274100c0c010b200141ffff004d0440200320014102744101723b010e20022003410e6a410210170c010b200141ffffffff034d044020014102744102722002100f0c010b20024103100c20012002100f0b2002200020011017200341106a24000b3801017f230041106b22022400200241086a2001101520022d00092101200020022d00084101713a0000200020013a0001200241106a24000b4201027f230041106b22012400200141086a2000101520012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20024101711b0b900301017f230041106b22022400027f024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b2002200041016a36020c2001418fb60441062002410c6a410510700c0c0b20012802004182b604410d200128020428020c1100000c0b0b200128020041f4b504410e200128020428020c1100000c0a0b200128020041e9b504410b200128020428020c1100000c090b200128020041cfb504411a200128020428020c1100000c080b200128020041c1b504410e200128020428020c1100000c070b200128020041b1b5044110200128020428020c1100000c060b200128020041a5b504410c200128020428020c1100000c050b2001280200419ab504410b200128020428020c1100000c040b20012802004193b5044107200128020428020c1100000c030b20012802004184b504410f200128020428020c1100000c020b200128020041f3b4044111200128020428020c1100000c010b200128020041e0b4044113200128020428020c1100000b200241106a24000bd00102027f017e230041306b220524002000027f41042001102a0d001a41032002102a0d001a20054100360218200542808001370224200541a4b80436022041fbe5f5d500200541206a2200100f20012000101020022000101020052005290320370310200541086a200541106a220620052802281011200528020c21012005280208200529031021072005410036022820052007370320200320042000101220052005290320370310200520062005280228101120012005280200200528020410051a41060b360200200541306a24000b4201017f230041206b22012400200141186a427f370300200141106a427f370300200141086a427f3703002001427f3703002000200141201008200141206a2400450b990102017f027e230041206b220524002000027f41042001102a0d001a41032002102a0d001a200541106a2001101b4101200529031022072003542200200541186a290300220620045420042006511b0d001a2001200720037d200620047d2000ad7d100e20052002101b20022003200529030022037c22062003200656ad200541086a29030020047c7c100e41060b360200200541206a24000bde0201037f230041206b22022400200241086a200110150240024020022d00084101710d000240024002400240024020022d0009220341037141016b0e03030201000b200341fc017141027621030c030b200341034b0d03200241003602102001200241106a4104100a0d032002280210220341ffffffff034b0d020c030b200220033a0015200241013a0014200220013602102002410036021c200241106a2002411c6a410410090d02200228021c220341ffff034d0d02200341027621030c010b200220033a0015200241013a001420022001360210200241003b011c200241106a2002411c6a410210090d0120022f011c220341ff014d0d01200341027621030b024020012802042003490d00200220034101102d200228020021042001200228020422012003100a0d002000200336020820002001360204200020043602000c020b200041003602040c010b200041003602040b200241206a24000b7101027f230041106b2203240002402001450440410121020c010b200141004e22040440027f2002450440200341086a20012004104120032802080c010b2003200120044101104220032802000b22020d012001103f000b1040000b2000200236020420002001360200200341106a24000bc90101027f230041106b22022400200242808001370204200241a4b8043602000240024020012802002203410747044020024100100c2003410646044020024100100c0c030b20024101100c024002400240024002400240200341016b0e050102030405000b20024100100c0c060b20024101100c0c060b20024102100c0c050b20024103100c0c040b20024104100c0c030b20024105100c0c010b20024101100c2002100b0c010b200141086a2802002001410c6a280200200210250b2000200228020810201033000b3901017f230041106b22022400200242808001370204200241a4b80436020020024100100c20002001200210124100200228020810201033000b3501017f230041106b22002400200042808001370204200041a4b80436020020004101100c2000100b4101200028020810201033000bf60102057f017e230041306b2201240020014100360218200142808001370224200141a4b8043602204100200141206a2202100f20012001290320370310200141086a200141106a220320012802281011200128020c210420012802082001290310210620014100360228200120063703202000290300200041086a29030020021012200220002d0010100c2000411c6a280200200041206a28020020021032200041286a2802002000412c6a28020020021032200041306a2d0000200210162002200041316a2d0000100c20012001290320370310200120032001280228101120042001280200200128020410051a200141306a24000b1d00200045044020024100100c0f0b20024101100c20002001200210250b0d00200041a4b80420011006000bd705010b7f230041206b22062400200641086a2001101541012105024020062d00084101710d000240024020062d00090e020001020b41002105200041086a41003602000c010b200641106a2001102c20062802142203450d002006280210210a024020062802182202450d00200241076b22014100200120024d1b2109200341036a417c7120036b220b417f46210c41002101034002400240024002400240200120036a2d00002207411874411875220841004e0440200c200b20016b410371720d0120012009490d020c040b41012105024002400240200741f497046a2d000041026b0e030002010a0b200141016a220120024f0d09200120036a2c000041bf7f4c0d040c090b200141016a220420024f0d08200320046a2c000021040240024002400240200741f0016b0e050100000002000b2008410f6a41ff017141024b0d0b20044140480d020c0b0b200441f0006a41ff01714130490d010c0a0b2004418f7f4a0d090b200141026a220720024f0d08200320076a2c000041bf7f4a0d08200141036a220120024f0d08200120036a2c000041bf7f4a0d080c030b200141016a220420024f0d07200320046a2c00002104024002400240200741e001470440200741ed01460d012008411f6a41ff0171410c490d022008417e71416e470d0b20044140480d030c0b0b200441607141a07f460d020c0a0b200441a07f480d010c090b200441bf7f4a0d080b200141026a220120024f0d07200120036a2c000041bf7f4c0d020c070b200141016a21010c030b0340200120036a220541046a280200200528020072418081828478710d022009200141086a22014b0d000b0c010b200141016a21010c010b200120024f0d0220012002200120024b1b21050340200120036a2c00004100480d012005200141016a2201470d000b0c020b20012002490d000b0b2000200a3602042000410c6a2002360200200041086a2003360200410021050b20002005360200200641206a24000b982c02107f097e23004190036b2200240002400240024002400240024002400240101a41ff017141054604402000418080013602800241a4b80420004180026a10022000280280022202418180014f0d01200020023602c402200041a4b8043602c0022000410036028002200041c0026a20004180026a4104100a0d04200028028002220341187621022003411076210420034108762105027f02400240024002400240024002400240200341ff01712203411647044020034134460d052003413d460d06200341cd00460d03200341d400460d01200341e500460d02200341f200460d072003419601460d040240200341b201470440200341db01460d01200341fe0147200541ff017141cb014772200441ff017141d70047720d10200241d501460d0a0c100b200541ff0171410f47200441ff0171411b4772200241bd0147720d0f20004180026a200041c0026a10132000290380024200520d0f200041d8026a20004191026a290000370300200041e0026a20004199026a290000370300200041e7026a200041a0026a290000370000200020004189026a2900003703d002200041b0026a2903002110200041a8026a290300211120002d008802210141000c0a0b200541ff0171412047200441ff017141f9014772200241f50147720d0e20004180026a200041c0026a100d20002d0080020d0e200041f8006a200041c0026a101420002802780d0e20004188016a29030021102000290380012111200041d8016a200041c0026a102c20002802dc012207450d0e200041d8026a2000418a026a290100370300200041e0026a20004192026a290100370300200041e7026a20004199026a29000037000020002000290182023703d00220002d008102210120003502e001211220002802d801210e41010c090b200541ff0171412d47200441ff017141f8014772200241c20147720d0d41020c080b200541ff017141b30147200441ff017141c7014772200241ee0047720d0c200041d8016a200041c0026a100d20002d00d8010d0c20004180026a200041c0026a100d20002d0080020d0c20004190016a200041c0026a10142000280290010d0c200041a0016a29030021132000290398012116200041f0026a200041c0026a102c20002802f402450d0c200041d8026a200041e2016a290100370300200041e0026a200041ea016a290100370300200041e7026a200041f1016a290000370000200020002901da013703d00220004189026a290000211020004191026a280000210e20004195026a280000210720004199026a2900002112200029008102211120002d00d901210141030c070b200541ff017141e80047200441ff0171413847722002412f47720d0b20004180026a200041c0026a100d20002d0080020d0b200041d4016a20002f0186023b0100200041d8026a20004191026a290000370300200041e0026a20004199026a29000037030020002000280182023602d001200020004189026a2900003703d00220004188026a2d0000210120002d008102210941040c060b200541ff017141c70047200441ff017141d90147722002412147720d0a200041d8016a200041c0026a100d20002d00d8010d0a20004180026a200041c0026a100d20002d0080020d0a2000418b036a200028008402360000200041d4016a20002f01de013b0100200041f8026a2202200041e9016a29000037030020004180036a2204200041f1016a290000370300200020002800810236028803200020002801da013602d0012000200041e1016a2900003703f00220004190026a290300211020004188026a290300211120004198026a280200210e2000419c026a2802002107200041a0026a3100002112200041e0016a2d0000210120002d00d9012109200041e7026a20004187036a290000370000200041e0026a2004290300370300200041d8026a2002290300370300200020002903f0023703d00241050c050b200541ff017141d60147200441ff017141b5014772200241fa0047720d0920004180026a200041c0026a10132000290380024200520d09200041d8026a20004191026a290000370300200041e0026a20004199026a290000370300200041e7026a200041a0026a290000370000200020004189026a2900003703d002200041b0026a2903002110200041a8026a290300211120002d008802210141060c040b200541ff0171412047200441ff017141db004772200241e50147720d0841080c030b200541ff0171412647200441ff0171411b4772200241d40147720d0741090c020b200541ff017141f10047200441ff017141b7014772200241820147720d06410a0c010b20004180026a200041c0026a10132000290380024200520d05200041d8026a20004191026a290000370300200041e0026a20004199026a290000370300200041e7026a200041a0026a290000370000200020004189026a2900003703d002200041b0026a2903002110200041a8026a290300211120002d008802210141070b210f200041cc016a200041d4016a2f01003b0100200041b0016a200041d8026a290300370300200041b8016a200041e0026a290300370300200041bf016a200041e7026a290000370000200020002802d0013602c801200020002903d0023703a801200041003602e00120004280800137028402200041a4b80436028002410020004180026a2205100f20002000290380023703d801200041f0006a200041d8016a200028028802101120002802742103200028027020002802d8012102200020002802dc012204360280022003200220051000210520042000280280022203490d02024002400240410c20052005410c4f1b0e0400060601060b200020033602f402200020023602f002200041d8006a200041f0026a101402402000290358a70d00200041e8006a290300211420002903602115200041f0026a102741ff017122024102460d0020004180026a200041f0026a10342000280280020d002000418c026a2203280200210420004188026a22062802002105200028028402210a20004180026a200041f0026a10342000280280020d002003280200210320062802002106200028028402210b200041d0006a200041f0026a102620002d00504101710d0020002d00512108200041f0026a102741ff0171220c4102470d020b2000418c026a410136020020004194026a4100360200200041b48504360288020c070b2000418c026a410136020020004194026a4100360200200041d48504360288020c060b2002410171210d024002400240027f02400240027f0240024002400240024002400240024002400240200f41016b0e0a010e0203040b05080706000b200041f0026a1018200041f0016a20004188036a290300370300200041e8016a20004180036a290300370300200041e0016a2207200041f8026a290300370300200020002903f0023703d80120004189026a200041b0016a29030037000020004191026a200041b8016a29030037000020004198026a200041bf016a290000370000200020013a008002200020002903a80137008102200041d0026a200041d8016a20004180026a20112010102920002802d00222024106460d0f2007200041dc026a280200360200200020002902d4023703d8010c170b200041f0026a1018200041f0016a20004188036a290300370300200041e8016a20004180036a290300370300200041e0016a2207200041f8026a290300370300200020002903f0023703d80120004189026a200041b0016a29030037000020004191026a200041b8016a29030037000020004198026a200041bf016a290000370000200020013a008002200020002903a80137008102200041d0026a200041d8016a20004180026a20112010102b20002802d00222024106460d0d2007200041dc026a280200360200200020002902d4023703d8010c160b200041d9026a200041b0016a290300370000200041e1026a200041b8016a290300370000200041e8026a2209200041bf016a290000370000200020013a00d002200020002903a8013700d102200041f0026a220110182000200041d0026a2001101c410221020240200029030022182016542201200041086a290300221720135420132017511b0d00200041f0016a20004188036a290300370300200041e8016a20004180036a290300370300200041e0016a200041f8026a290300370300200020002903f0023703d80120004198026a200929030037030020004190026a200041e0026a29030037030020004188026a200041d8026a290300370300200020002903d00237038002200041c0026a20004180026a200041d8016a201820167d201720137d2001ad7d102920002802c00222024106460440200041f0016a200041e8026a290300370300200041e8016a200041e0026a290300370300200041e0016a2201200041d8026a290300370300200020002903d0023703d80120002010370388022000201137038002200020123703980220002007360294022000200e36029002200041c0026a200041d8016a20004180026a20162013102b20002802c00222024106460d0b2001200041cc026a280200360200200020002902c4023703d8010c010b200041e0016a200041cc026a280200360200200020002902c4023703d8010b41010c0a0b20004190026a200041b0016a29030037030020004198026a200041b8016a290300370300200020093a008002200020002802c80136008102200020013a008702200020002903a801370388022000200041cc016a2f01003b008502230041306b22012400200141286a20004180026a220241186a290000370300200141206a200241106a290000370300200141186a200241086a290000370300200120022900003703102001200141106a101b20012903002110200041106a2202200141086a29030037030820022010370300200141306a24002000290310200041186a290300102f000b200041af026a201037000020004190026a200041b0016a29030037030020004198026a200041b8016a2903003703002000419f026a200041bf016a290000370000200020113700a702200020093a008002200020002802c80136008102200020013a008702200020002903a80137038802200020123c00bf02200020073600bb022000200e3600b7022000200041cc016a2f01003b00850223004190016b22012400200141106a20004180026a220241c00010071a200141e8006a200241186a290000370300200141e0006a200241106a290000370300200141d8006a200241086a2900003703002001200229000037035020014188016a200141c8006a29030037030020014180016a200141406b290300370300200141f8006a200141386a290300370300200120012903303703702001200141d0006a200141f0006a101c20012903002110200041206a2202200141086a2903003703082002201037030020014190016a24002000290320200041286a290300102f000b200041d9026a200041b0016a290300370000200041e1026a200041b8016a290300370000200041e8026a2202200041bf016a290000370000200020013a00d002200020002903a8013700d102200041f0026a22011018200041406b2001200041d0026a101c2000290340221220115a200041c8006a290300221320105a20102013511b0d03200041023602c00241010c040b230041106b22002400200042808001370204200041a4b80436020020004100100c2008200010164100200028020810201033000b200041d8016a20052004101d0c0f0b200041d8016a20062003101d0c0e0b200041f0016a20004188036a290300370300200041e8016a20004180036a290300370300200041e0016a200041f8026a290300370300200020002903f0023703d80120004198026a200229030037030020004190026a200041e0026a29030037030020004188026a200041d8026a290300370300200020002903d00237038002200041c0026a200041d8016a20004180026a201220117d201320107d2011201256ad7d1029410120002802c0024106470d001a20002015370380022000200c3a00b102200020083a00b002200020033602ac02200020063602a8022000200b3602a402200020043602a0022000200536029c022000200a360298022000200d3a009002200020143703880220004180026a103141000b210120004188026a200041c8026a290300370300200020002903c002370380020c0e0b200041d9026a200041b0016a290300370000200041e1026a200041b8016a290300370000200041e8026a2202200041bf016a290000370000200020013a00d002200020002903a8013700d102200041f0026a22011018200041f0016a20004188036a290300370300200041e8016a20004180036a290300370300200041e0016a200041f8026a290300370300200020002903f0023703d801200041306a2001200041d0026a101c200041386a29030021132000290330211220004198026a200229030037030020004190026a200041e0026a29030037030020004188026a2202200041d8026a290300370300200020002903d00237038002200041c0026a200041d8016a20004180026a201120127c22112011201254ad201020137c7c102920002802c002410647220145044020002015370380022000200c3a00b102200020083a00b002200020033602ac02200020063602a8022000200b3602a402200020043602a0022000200536029c022000200a360298022000200d3a009002200020143703880220004180026a10310b2002200041c8026a290300370300200020002903c002370380020c0d0b200020143703880220002015370380022000200c3a00b102200020083a00b002200020033602ac02200020063602a8022000200b3602a402200020043602a0022000200536029c022000200a360298022000200d3a00900220004180026a10314106210241000b21012000418c026a200041e0016a280200360200200020002903d8013702840220002002360280020c0b0b20152014102f000b200020143703880220002015370380022000200c3a00b102200020083a00b002200020033602ac02200020063602a8022000200b3602a402200020043602a0022000200536029c022000200a360298022000200d3a00900220004180026a10310c080b200020143703880220002015370380022000200c3a00b102200020083a00b002200020033602ac02200020063602a8022000200b3602a402200020043602a0022000200536029c022000200a360298022000200d3a00900220004180026a10310c070b200041043a00800220004180026a1022000b20024180800141a882041021000b2003200441a882041021000b2000418c026a410136020020004194026a41003602002000419884043602880220004188b30436029002200041003602800220004180026a41a084041024000b1030000b20004188b30436029002200041003602800220004180026a41fc84041024000b2000418c026a200041e0016a280200360200200020002903d801370284022000410036028002230041106b22012400200142808001370204200141a4b804360200024020004180026a220028020045044020014100100c200041086a2802002000410c6a280200200110320c010b20014101100c2001100b0b4100200128020810201033000b2000418c026a200041e0016a280200360200200020002903d801370284022000200236028002200241064720004180026a102e000b200120004180026a102e000ba10402077f067e23004180016b2200240002400240101a41ff01712201410546044020004180800136024841a4b804200041c8006a100220002802482201418180014f0d0120002001360234200041a4b804360230200041003602480240200041306a200041c8006a4104100a0d002000280248419bddf6f405470d00200041186a200041306a10142000290318a70d00200041286a290300210720002903202108200041386a200041306a103420002802380d00200041c4006a3502002109200041406b2802002102200028023c2103200041c8006a200041306a103420002802480d00200041106a200041306a102620002d00104101710d0020002d00112104200041d4006a2802002105200041d0006a2802002106200035024c210a200041c8006a220110182001102a0d032000200041c8006a2201101b20012000290300220b20087c220c200b200c56ad200041086a29030020077c7c100e2000200737035020002008370348200041003a0079200020043a007820002005360274200020063602702000200a42208620098437036820002002360264200020033602602000420037035820011031230041106b22002400200042808001370204200041a4b80436020020004100100c20004100100c4100200028020810201033000b1030000b200020013a0048200041c8006a1022000b20014180800141a882041021000b2000410336024841dc85044118200041c8006a41a8810441f485041019000b0c00200020014184860410770bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1100000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110100450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1100000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a105a20032003290310370320200341086a2005200141046a105a20032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110100450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1100000d010b41000c010b41010b200341406b24000b0f00200028020020012002103a41000b6001027f230041106b2203240020022000280200200028020822046b4b0440200341086a200020042002103d2003280208200328020c103e200028020821040b200028020420046a2001200210071a2000200220046a360208200341106a24000bbe0201037f230041106b220224000240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460440230041106b22042400200441086a200020034101103d2004280208200428020c103e200441106a2400200028020821030b2000200341016a360208200028020420036a20013a00000c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b103a0b200241106a240041000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1037200241206a24000b9a0401067f230041206b220424002000027f4100200220036a22032002490d001a4108200128020022024101742206200320032006491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200441106a2107230041106b220624002004027f0240027f0240200504400240200341004e044020072802080d0120062003410110412006280204210220062802000c040b0c040b20072802042209450440200641086a2003410141001042200628020c210220062802080c030b200321024100419cb804280200220520036a22082005490d021a2007280200210741a0b8042802002008490440200341ffff036a220841107640002202417f46200241ffff0371200247720d022002411074220520084180807c716a22022005490d0241a0b8042002360200200321024100200320056a22082005490d031a0b419cb804200836020041002005450d021a20052007200910070c020b200420033602040c020b2003210241000b2205044020042005360204200441086a200236020041000c020b20042003360204200441086a410136020041010c010b200441086a410036020041010b360200200641106a240020042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000b1f00024020014181808080784704402001450d012000103f000b0f0b1040000b900101017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141e88804360218200141003602102001410636022c2001200141286a36022020012001410c6a360228230041206b22002400200041003a0018200041f888043602142000200141106a360210200041dc8c0436020c20004188b304360208200041086a1046000b4601017f230041206b22002400200041146a41013602002000411c6a4100360200200041b8870436021020004188b30436021820004100360208200041086a41c087041024000b3901017f230041106b22032400200341086a2001200241001042200328020c21012000200328020836020020002001360204200341106a24000b9f0201047f419cb8042802002207200120026a41016b410020026b7122056a2206200749210202400240027f200345044020020d032007200641a0b8042802004d0d011a200541ffff036a22032005490d02200341107640002202417f46200241ffff0371200247720d022002411074220220034180807c716a22032002490d0341a0b8042003360200200220056a22062002490d0320020c010b20020d022007200641a0b8042802004d0d001a200541ffff036a22032005490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0241a0b8042003360200200220056a22062002490d0220020b2104419cb80420063602000c010b0b20002001360204200020043602000b3701017f230041106b22022400200241086a20014100102d200228020c21012000200228020836020020002001360204200241106a24000bbe0202047f027e230041306b22032400412721020240200035020022064290ce00540440200621070c010b0340200341096a20026a220041046b200620064290ce008022074290ce007e7da7220441ffff037141e4006e220541017441ca8e046a2f00003b0000200041026b2004200541e4006c6b41ffff037141017441ca8e046a2f00003b0000200241046b2102200642ffc1d72f56200721060d000b0b2007a7220041e3004b0440200241026b2202200341096a6a2007a72200200041ffff037141e4006e220041e4006c6b41ffff037141017441ca8e046a2f00003b00000b02402000410a4f0440200241026b2202200341096a6a200041017441ca8e046a2f00003b00000c010b200241016b2202200341096a6a200041306a3a00000b20014188b3044100200341096a20026a412720026b104a200341306a24000b0e0020002802001a03400c000b000be603020a7f017e230041406a220124002001200036020c2001412c6a4102360200200141346a4101360200200141acb304360228200141003602202001410736023c2001200141386a36023020012001410c6a360238230041206b22002400200141206a220341146a2802002106200328020821040240024002402000027f024002400240200141106a2207027f024002402003410c6a28020022080e020001040b20060d024188b3040c010b20060d022004280204210220042802000b2002101e0c040b200328021021090c010b2008410374210a200441046a2105200328021021090340200528020020026a2102200541086a2105200a41086b220a0d000b20022006450d011a2002410f4b0d0041002004280204450d011a0b200220026a22054100200220054d1b0b10432000290300210b200741003602082007200b3702002000200636021c200020093602182000200836021420002004360210200020032902003703082007200041086a10370d010b200041206a24000c010b418889044133200041086a419c860441b08a041019000b2001280214210020012802182101024041a4b8052d000045044041a5b8052d00004101710d010b410c20002001100422002000410c4f1b410947044041a4b80541013a00000b41a5b80541013a00000b000b0c0042c092f3e3f7ef81e54d0b2700200220034904402003200220041049000b2000200220036b3602042000200120036a3602000b0e002000200120024194930410780bc20301097f230041106b2207240020002802182205410171220820046a210602402005410471450440410021010c010b200120026a2001104b20066a21060b412b418080c40020081b2108024020002802084504404101210520002802002206200041046a2802002200200820012002104c0d01200620032004200028020c11000021050c010b024020062000410c6a280200220949044020054108710d014101210520072000200920066b4101104d20072802042209418080c400460d02200728020020002802002206200041046a2802002200200820012002104c0d02200620032004200028020c1100000d02200920062000104e21050c020b4101210520002802002206200041046a2802002200200820012002104c0d01200620032004200028020c11000021050c010b200028021c210c2000413036021c20002d0020210d41012105200041013a00202000280200220a200041046a280200220b200820012002104c0d00200741086a2000200920066b4101104d200728020c2201418080c400460d002007280208200a20032004200b28020c1100000d002001200a200b104e0d002000200d3a00202000200c36021c410021050b200741106a240020050bbc0301077f230041106b2203240002400240200020016b22044110490d002004200141036a417c7120016b220049200041044b720d00200420006b22024104490d0020012000104f200020016a22062002417c716a2002410371104f6a21042002410276210203402002450d0220032006200241c0012002200241c0014f1b41f494041050200328020c21022003280208210620032003280200200328020422002000417c7141e497041050200328020c2107024020032802042200450440410021000c010b2003280200220520004102746a21084100210003404100210103402000200120056a2802002200417f734107762000410676724181828408716a2100200141046a22014110470d000b200541106a22052008470d000b0b200041087641ff81fc0771200041ff81fc07716a418180046c41107620046a21042007450d000b2003280208210120074102742102410021000340200020012802002200417f734107762000410676724181828408716a2100200141046a2101200241046b22020d000b200041087641ff81fc0771200041ff81fc07716a418180046c41107620046a21040c010b20012004104f21040b200341106a240020040b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020032004200128020c1100000b9a0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03000100020b41002104200221030c010b20024101762103200241016a41017621040b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110100450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110100450d000b200441016b0b2000490b2c01017f200104400340200220002c000041bf7f4a6a2102200041016a2100200141016b22010d000b0b20020b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b4188b304412320041051000b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034188b304360210200341003602002003200136021c200320003602182003200341186a360208200320021024000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4106360200200341888c0436021020034100360208200341063602242003200341206a360218200320033602282003200341046a360220200341086a20021024000b3a000240200120024d0440200220044d0d012002200420051021000b2001200220051054000b2000200220016b3602042000200120036a3602000b0e0020002001200241e8930410780b4d01047f2001280200210220012802042103200110562204418080c4004704402001200128020420012802082205200220036b6a6a20012802006b3602080b20002004360204200020053602000bb70101047f200028020422012000280200460440418080c4000f0b2000200141016a36020420012d00002203411874411875410048047f2000200141026a36020420012d0001413f7121022003411f712104200341df014d044020044106742002720f0b2000200141036a36020420012d0002413f712002410674722102200341f00149044020022004410c74720f0b2000200141046a3602042004411274418080f0007120012d0003413f71200241067472720520030b0b3f01017f024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b200221040b20002001360204200020043602000b8a0301067f230041306b22022400200028020421042000280200210302400240200128020822064101472001280210220541014771450440024020054101470d00200141146a28020020024100360228200220033602242002200320046a36022041016a210003400240200241186a200241206a1055200228021c2105200041016b2200450d002005418080c400470d010c020b0b2005418080c400460d00200241106a200228021820032004105720022802142004200228021022001b21042000200320001b21030b2006450440200128020020032004200128020428020c11000021000c030b2001410c6a2802002200200320046a2003104b22054d0d01200241086a2001200020056b4100104d41012100200228020c2205418080c400460d0220022802082001280200220720032004200141046a280200220128020c1100000d02200520072001104e21000c020b200128020020032004200128020428020c11000021000c010b200128020020032004200128020428020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044108470d0120012802000b2802002104410121030b20002004360204200020033602000b2c0020024181014f0440200241800141b88e041049000b200041800120026b3602042000200120026a3602000b8501002001200346044020002002200110071a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4106360200200041d0960436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a20041024000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1038200341206a24000b850201037f23004190016b22022400027f02402001280218220341107145044020034120710d012000200110440c020b2000280200210041ff0021030340200241106a20036a413041d7002000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b200241086a200241106a200341016a105b200141c88e0441022002280208200228020c104a0c010b2000280200210041ff0021030340200241106a20036a413041372000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b2002200241106a200341016a105b200141c88e04410220022802002002280204104a0b20024190016a24000b7101017f230041206b22022400027f410120002001105e0d001a200241146a41013602002002411c6a4100360200200241c48a0436021020024188b3043602182002410036020841012001280200200141046a280200200241086a105d0d001a200041046a2001105e0b200241206a24000bde06010b7f230041f0006b22032400200341003b01642003410a36026020034281808080a00137035820032002360254200341003602502003200236024c200320013602482003200236024420034100360240200028020421062000280200210720002802082108200341dc006a2109027f03400240024020032d00650d0002402003280254220020032802502202490d002000200328024c4b0d002003280248210c0340200328024820026a2101200328025820096a41016b2d0000210402400240027f024002400240200020026b220041084f04402001200141036a417c712202460440200041086b210a410021020c030b200341386a4100200220016b22022000200020024b1b22022001200041c092041053200341306a20042003280238200328023c106120032802304101470d012003280234210241010c040b200341186a2004200120001061200328021c210220032802180c030b2002200041086b220a4b0d010b200441818284086c210b0340200120026a2205280200200b73220d417f73200d41818284086b71200541046a280200200b732205417f73200541818284086b7172418081828478710d01200241086a2202200a4d0d000b0b200341286a20012000200241d092041048200341206a20042003280228200328022c1061200328022420026a210220032802204101460b41014604402003200220032802506a41016a2202360250200220032802582200492002200328024c22014b720d022003280248200341106a410020002009410441f09a041053200220006b6a20002003280210200328021410620d0120032802502102200328024c21010c020b200320032802543602500c030b20032802402100200320032802502201360240200120006b21022000200c6a21000c040b200328025422002002490d01200020014d0d000b0b20032d00650d00200341013a006520032d006445200328024022002003280244220146710d00200120006b2102200328024820006a21000c010b41000c020b024020082d00000440200741b88d044104200628020c1100000d010b2003410a36026c20082002047f200341086a20002002200241016b418096041048200341ec006a41012003280208200328020c10620541000b3a0000200720002002200628020c110000450d010b0b41010b200341f0006a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b1801017f2001200346047f20002002200110080541010b450be60101017f230041106b220224002002410036020c20002002410c6a027f0240024020014180014f04402001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200220013a000c41010c020b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b1060200241106a24000b0c00200020014194900410770b0d0020002802002001200210600b0b002000280200200110630b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1064200241206a24000b1a002000418080c40046044041998c04412b20011051000b20000be50101027f418080c400210102400240024002400240410320002802042202418080c4006b200241ffffc3004d1b41016b0e03000102030b2000418080c40036020420002802000f0b2000418180c40036020441dc000f0b0240024002400240024020002d000841016b0e050004010203050b200041003a000841fd000f0b200041023a000841fb000f0b200041033a000841f5000f0b200041043a000841dc000f0b413041d70020022000280200220241027476410f712201410a491b20016a41c48b04106821012002450d012000200241016b3602000b20010f0b200041013a000820010b8b0601057f418280c400210402400240024002400240024002400240200141096b0e050103060602000b2001450440413021030c070b4122210320014122460d034127210320014127460d0441dc002103200141dc00460d060c050b41f40021030c050b41f20021030c040b41ee0021030c030b20024180800471450d010c020b2002418002710d010b02402002410171450d002001410b742105410021034121210241212104027f034002402005200241017620036a220241027441acab046a280200410b7422064d044020052006470440200221040c020b41010c030b200241016a21030b200420036b210220032004490d000b2003210241000b2104027f0240027f0240200220046a220241204d04402002410274220441acab046a280200411576210320024120470d0141d7052105411f0c020b20024121418cab041052000b200441b0ab046a28020041157621052002450d01200241016b0b41027441acab046a28020041ffffff00710c010b41000b2104200541016b2102024020052003417f736a450d0041d7052003200341d7054d1b2106200120046b2107200541016b21054100210403400240200320064704402004200341b0ac046a2d00006a220420074d0d01200321020c030b200641d705419cab041052000b2005200341016a2203470d000b0b2002410171450d002001410172674102764107732103200121040c010b0240024020014120490d00418180c4002104200141ff00490d0102402001418080044f0440200141808008490d01200141f083386b4190fc0b49200141b0c70c6b41d0ba2b4972200141cba60c6b4105492001419ef40b6b41e20b497272200141e1d70b6b419f1849200141a29d0b6b410e49722001417e71419ef00a46200141607141e0cd0a467272720d02200141baee0a6b41064f0d030c020b2001418c9f04412841dc9f04419f0241fba10441af02106b0d020c010b200141aaa404412c4182a50441c40141c6a60441c203106b0d010b2001410172674102764107732103200121040c010b200121030b2000410536020820002004360204200020033602000bde0201087f230041106b2208240041012107024002402002450d00200120024101746a210a20004180fe0371410876210b41002102200041ff0171210d0340200141026a210c200220012d00016a2109200b20012d000022014704402001200b4b0d0220092102200c2201200a460d020c010b200841086a200220092003200441ec9e041053200828020c210120082802082102024003402001450d01200141016b210120022d0000210e200241016a2102200d200e470d000b410021070c030b20092102200c2201200a470d000b0b2006450d00200520066a2103200041ffff0371210203400240200541016a210020052d00002201411874411875220441004e047f20000520002003460d0120052d0001200441ff0071410874722101200541026a0b2105200220016b22024100480d022007410173210720032005470d010c020b0b41998c04412b41fc9e041051000b200841106a240020074101710b890101037f230041206b22022400410121030240200128020022044127200128020428021022011101000d0020022000280200418102106a200241186a200241086a280200360200200220022903003703100340200241106a10692200418080c40046044020044127200111010021030c020b200420002001110100450d000b0b200241206a240020030b4d0002402003450d000240200220034d044020022003470d010c020b200120036a2c000041bf7f4a0d010b20012002200320022004106e000b2000200220036b3602042000200120036a3602000be40501047f23004180016b220524002005200336021c20052002360218200541106a20002001418002106f22062000200110570240200528021022070440200528021421082005200736022020052008360224200541054100200120064b22061b36022c200541809b044188b30420061b36022802402005200120024f047f200120034f0d0120030520020b360238200541cc006a4103360200200541d4006a4103360200200541ec006a4102360200200541e4006a4102360200200541a89b04360248200541003602402005410636025c2005200541d8006a3602502005200541286a3602682005200541206a3602602005200541386a3602580c020b200220034d0440024002402002450d00200120024d044020012002460d010c020b200020026a2c00004140480d010b200321020b20052002360230200541086a20002001200020012002106f22012004106d20052005280208220036025c20052000200528020c6a3602582005200541d8006a1056200410682200360234200520013602382005027f41012000418001490d001a41022000418010490d001a41034104200041808004491b0b20016a36023c200541cc006a4105360200200541d4006a4105360200200541fc006a4102360200200541f4006a4102360200200541ec006a4109360200200541e4006a410a360200200541b89c04360248200541003602402005410636025c2005200541d8006a3602502005200541286a3602782005200541206a3602702005200541386a3602682005200541346a3602602005200541306a3602580c020b200541f4006a4102360200200541ec006a4102360200200541e4006a4106360200200541cc006a4104360200200541d4006a4104360200200541e49b04360248200541003602402005410636025c2005200541d8006a3602502005200541286a3602702005200541206a36026820052005411c6a3602602005200541186a3602580c010b20002001410020062004106e000b200541406b20041024000b7901037f230041106b22032400200120024b0440200341086a200241036b22044100200220044f1b2204200241016a2000200141d89d041053200328020841016b2100200328020c2101034020010440200020016a200141016b220221012c00004140480d010b0b200220046a21010b200341106a240020010b9c0201047f230041406a2205240041012107024020002802002206200120022000280204220228020c22011100000d00024020002802182208410471450440200641c08d04410120011100000d022003200020041101000d0220002802002106200028020428020c21010c010b200641be8d04410220011100000d01200541013a00172005200236020c2005200636020820052008360230200541a08d0436021c200520002d00203a00382005200028021c36023420052000290210370328200520002902083703202005200541176a3602102005200541086a3602182003200541186a20041101000d01200528021841bc8d044102200528021c28020c1100000d010b200641c08a044101200111000021070b200541406b240020070b1800200128020041ecb7044105200128020428020c1100000b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1038200241206a24000b0b002000280200200110580b990301037f230041406a22022400200028020021034101210002402001280200220441ec8c04410c200141046a280200220128020c1100000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241fc8c04360230200241003602282002410b3602142002200241106a36023820022002410c6a36021020042001200241286a105d450d010c020b20032802002200200328020428020c110c0042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241fc8c04360230200241003602282002410c3602142002200241106a36023820022002410c6a36021020042001200241286a105d0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4106360200200241346a4106360200200241c48c043602182002410036021020022000410c6a3602382002200041086a3602302002410236022c200220003602282002200241286a36022020042001200241106a105d21000b200241406b240020000b920401097f230041d0006b220224002000280200220028020821032000280204210441012107024002402001280200220641222001280204220828021022091101000d004100210120024100360228200220043602242002200320046a360220200241186a200241206a1055200228021c2205418080c400470440200228021821000340200241306a200541818004106a02400240024041032002280234220a418080c4006b200a41ffffc3004d1b41016b0e03020100010b200228023020022d00386a4101460d010b20002001490d0402402001450d00200120034f044020012003460d010c060b200120046a2c00004140480d050b02402000450d00200020034f044020002003470d060c010b200020046a2c000041bf7f4c0d050b2006200120046a200020016b200828020c110000450440200241c8006a200241386a280200360200200220022903303703400340200241406b10692201418080c400460440027f41012005418001490d001a41022005418010490d001a41034104200541808004491b0b20006a21010c030b200620012009110100450d000b0b0c030b200241106a200241206a10552002280210210020022802142205418080c400470d000b0b200241086a20042003200141b49104106d20062002280208200228020c200828020c1100000d0020064122200911010021070b200241d0006a240020070f0b200420032001200041a49104106e000bd10101017f230041106b22022400027f024002400240024002400240200028020041016b0e050102030405000b2002200041046a36020820014195b6044106200241086a410d10700c050b200128020041ecb6044113200128020428020c1100000c040b200128020041d7b6044115200128020428020c1100000c030b200128020041c3b6044114200128020428020c1100000c020b200128020041b2b6044111200128020428020c1100000c010b2002200041046a36020c2001419bb60441172002410c6a410d10700b200241106a24000b5301017f230041206b2203240020032000360204200341186a200141106a290200370300200341106a200141086a29020037030020032001290200370308200341046a2002200341086a1038200341206a24000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41063602002004200336021020044100360208200441063602242004200441206a3602182004200441046a36022820042004360220200441086a20021024000b0be6370300418080040bf4184661696c656420746f206765742076616c756520696e205261774d617070696e673a200000000100230000002f686f6d652f702f2e636172676f2f6769742f636865636b6f7574732f6f70656e62727573682d636f6e7472616374732d346332393166376161623939633337642f386663353034382f6c616e672f7372632f73746f726167652f7261775f6d617070696e672e72730000002c0001006900000041000000250000000e00000010000000040000000f000000100000000100000001000000030000002f686f6d652f702f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e7273c800010060000000e40000001400000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e2f686f6d652f702f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72730079010100620000006b0100000e00000079010100620000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72fc0101001c0000007901010062000000ed000000170000002f686f6d652f702f446f63756d656e74732f6861636b6174686f6e2f696e766573746d656e742d64616f2f636f6e7472616374732f676f7665726e616e63652d746f6b656e2f6c69622e7273300201004c0000000f00000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279008c0201002700000073746f7261676520656e7472792077617320656d70747900bc0201001700000053686f756c64206d696e7420746f74616c5f737570706c79300201004c0000002a00000012000000100000000400000004000000110000001200000013000000100000000000000001000000140000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f77000000a4030100110000002c030100780000000d020000050000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c656446040100150000005b0401000d000000d0030100760000009f0100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e727300bb040100740000006402000020000000292e2e0041050100020000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f636861722f6d6f642e72734c05010078000000c000000039000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973200000d405010020000000f4050100120000003a63616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75658819010000000000180601000100000018060100010000001000000000000000010000001500000070616e69636b65642061742027272c2078060100010000007906010003000000603a200088190100000000008d06010002000000100000000c00000004000000160000001700000018000000202020202c0a280a282f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e7273c1060100770000006500000014000000307830303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390000100000000400000004000000190000001a0000001b0000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273002c08010077000000920900001e0000002c0801007700000099090000160000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273c40801007c000000570000002f000000c40801007c000000710000002700000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468206009010012000000720901002200000072616e676520656e6420696e64657820a4090100100000007209010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000c409010016000000da0901000d0000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e72730000f80901007a000000c0050000250000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273000000840a010079000000040900001e000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028100b010015000000250b01002b00000040050100010000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273000000680b0100790000004f0000003200000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041b699040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041f499040ba71e2f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300f40c01007b000000b8010000260000005b2e2e2e5d6279746520696e64657820206973206f7574206f6620626f756e6473206f6620600000850d01000b000000900d0100160000008c06010001000000626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e6720600000c00d01000e000000ce0d010004000000d20d0100100000008c06010001000000206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060850d01000b000000040e0100260000002a0e010008000000320e0100060000008c060100010000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f6d6f642e727300600e010077000000070100001d0000002f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e7273000000e80e0100810000000a0000001c000000e80e0100810000001a0000003600000000010305050606020706080709110a1c0b190c1a0d100e0c0f0410031212130916011704180119031a071b011c021f1620032b032d0b2e01300331023201a702a902aa04ab08fa02fb05fd02fe03ff09ad78798b8da23057588b8c901cdd0e0f4b4cfbfc2e2f3f5c5d5fe2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d11293a3b4549575b5c5e5f64658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff806d71dedf0e1f6e6f1c1d5f7d7eaeaf7fbbbc16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596262e2fa7afb7bfc7cfd7df9a409798308f1fd2d4ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab051f09811b03190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15054e071b0757070206170c500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd03590716091809140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a062f314d0380a4083c030f033c0738082b0582ff1118082f112d03210f210f808c048297190b158894052f053b07020e180980be22740c80d61a0c0580ff0580df0cf29d033709815c1480b80880cb050a183b030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a61081f50701202a064c04808d0480be031b030f0d000601010301040205070702080809020a050b020e041001110212051311140115021702190d1c051d081f0124016a046b02af03b102bc02cf02d102d40cd509d602d702da01e005e102e704e802ee20f004f802fa03fb010c273b3e4e4f8f9e9e9f7b8b9396a2b2ba86b1060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f92116f5fbfeeef5a62f4fcff53549a9b2e2f2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fe7ecefffc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf6e6fbe935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b4e43813709160a08183b45390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524b2b082a161a261c1417094e042409440d19070a0648082709750b423e2a063b050a0651060105100305808b621e48080a80a65e22450b0a060d133a060a362c041780b93c64530c48090a46451b4808530d49070a80f6460a1d03474937030e080a0639070a813619073b031c56010f320d839b66750b80c48a4c630d843010168faa8247a1b98239072a045c06260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2e781330f011d060e0408818c89046b050d0309071092604709743c80f60a73087015467a140c140c570919808781470385420f1584501f060680d52b053e2101702d031a040281401f113a050181d02a82e680f7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d80411030d0377045f060c04010f0c0438080a062808224e81540c1d03090736080e040907090780cb250a84062f686f6d652f702f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30332d30352d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e72730815010084000000500000002800000008150100840000005c000000160000000003000083042000910560005d13a0001217201f0c20601fef2ca02b2a30202c6fa6e02c02a8602d1efb602e00fe20369eff6036fd01e136010a2137240de137ab0e61392f18a139301c6148f31ea14c40346150f06aa1514f6f21529dbca15200cf615365d1a15300da215400e0e155aee26157ece42159d0e8a1592000ee59f0017f5a00700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b033c082a180120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c01090128010301370101030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b0749021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d021e021e02400201070801020b09012d030101750222017603040209010603db0202013a010107010101010208060a0201301f310430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c6400001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a502000400025003460b31047b01360f290102020a033104020207013d03240501083e010c0234090a0402015f0302010102060102019d010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a06030101020107010148020301010100020b023405050101010001060f00053b0700013f0451010002002e0217000101030405080802071e0494030037043208010e011605010f000701110207010201056401a00700013d04000400076d07006080f0000088190100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f72617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a8819010000000000ab190100010000002f686f6d652f702f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727300bc190100630000005a00000009000000bc190100630000005a00000031000000bc190100630000006500000009000000bc190100630000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465437573746f6d536166655472616e73666572436865636b4661696c65645a65726f53656e646572416464726573735a65726f526563697069656e7441646472657373496e73756666696369656e74416c6c6f77616e6365496e73756666696369656e7442616c616e63652f686f6d652f702f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e332f7372632f636f6465632e72737f1b01005d000000770000000e0000004572726f72000000190000001c0000001600000014000000190000006f190100531901003d19010029190100101901","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-x86_64-unknown-linux-gnu","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"my_psp22_metadata","version":"3.1.1","authors":["Brushfam "]},"spec":{"constructors":[{"args":[{"label":"total_supply","type":{"displayName":["Balance"],"type":0}},{"label":"name","type":{"displayName":["Option"],"type":4}},{"label":"symbol","type":{"displayName":["Option"],"type":4}},{"label":"decimal","type":{"displayName":["u8"],"type":3}}],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":5},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":7},"balance":{"displayName":["Balance"],"type":0},"blockNumber":{"displayName":["BlockNumber"],"type":18},"chainExtension":{"displayName":["ChainExtension"],"type":19},"hash":{"displayName":["Hash"],"type":16},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":17}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":6},"messages":[{"args":[{"label":"spender","type":{"displayName":["psp22_external","DecreaseAllowanceInput1"],"type":7}},{"label":"delta_value","type":{"displayName":["psp22_external","DecreaseAllowanceInput2"],"type":0}}],"default":false,"docs":[" Atomically decreases the allowance granted to \`spender\` by the caller.",""," An \`Approval\` event is emitted.",""," # Errors",""," Returns \`InsufficientAllowance\` error if there are not enough tokens allowed"," by owner for \`spender\`.",""," Returns \`ZeroSenderAddress\` error if sender's address is zero.",""," Returns \`ZeroRecipientAddress\` error if recipient's address is zero."],"label":"PSP22::decrease_allowance","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":9},"selector":"0xfecb57d5"},{"args":[{"label":"owner","type":{"displayName":["psp22_external","AllowanceInput1"],"type":7}},{"label":"spender","type":{"displayName":["psp22_external","AllowanceInput2"],"type":7}}],"default":false,"docs":[" Returns the amount which \`spender\` is still allowed to withdraw from \`owner\`.",""," Returns \`0\` if no allowance has been set \`0\`."],"label":"PSP22::allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x4d47d921"},{"args":[{"label":"owner","type":{"displayName":["psp22_external","BalanceOfInput1"],"type":7}}],"default":false,"docs":[" Returns the account Balance for the specified \`owner\`.",""," Returns \`0\` if the account is non-existent."],"label":"PSP22::balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x6568382f"},{"args":[{"label":"spender","type":{"displayName":["psp22_external","ApproveInput1"],"type":7}},{"label":"value","type":{"displayName":["psp22_external","ApproveInput2"],"type":0}}],"default":false,"docs":[" Allows \`spender\` to withdraw from the caller's account multiple times, up to"," the \`value\` amount.",""," If this function is called again it overwrites the current allowance with \`value\`.",""," An \`Approval\` event is emitted.",""," # Errors",""," Returns \`ZeroSenderAddress\` error if sender's address is zero.",""," Returns \`ZeroRecipientAddress\` error if recipient's address is zero."],"label":"PSP22::approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":9},"selector":"0xb20f1bbd"},{"args":[],"default":false,"docs":[" Returns the total token supply."],"label":"PSP22::total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x162df8c2"},{"args":[{"label":"spender","type":{"displayName":["psp22_external","IncreaseAllowanceInput1"],"type":7}},{"label":"delta_value","type":{"displayName":["psp22_external","IncreaseAllowanceInput2"],"type":0}}],"default":false,"docs":[" Atomically increases the allowance granted to \`spender\` by the caller.",""," An \`Approval\` event is emitted.",""," # Errors",""," Returns \`ZeroSenderAddress\` error if sender's address is zero.",""," Returns \`ZeroRecipientAddress\` error if recipient's address is zero."],"label":"PSP22::increase_allowance","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":9},"selector":"0x96d6b57a"},{"args":[{"label":"to","type":{"displayName":["psp22_external","TransferInput1"],"type":7}},{"label":"value","type":{"displayName":["psp22_external","TransferInput2"],"type":0}},{"label":"data","type":{"displayName":["psp22_external","TransferInput3"],"type":13}}],"default":false,"docs":[" Transfers \`value\` amount of tokens from the caller's account to account \`to\`"," with additional \`data\` in unspecified format.",""," On success a \`Transfer\` event is emitted.",""," # Errors",""," Returns \`InsufficientBalance\` error if there are not enough tokens on"," the caller's account Balance.",""," Returns \`ZeroSenderAddress\` error if sender's address is zero.",""," Returns \`ZeroRecipientAddress\` error if recipient's address is zero."],"label":"PSP22::transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":9},"selector":"0xdb20f9f5"},{"args":[{"label":"from","type":{"displayName":["psp22_external","TransferFromInput1"],"type":7}},{"label":"to","type":{"displayName":["psp22_external","TransferFromInput2"],"type":7}},{"label":"value","type":{"displayName":["psp22_external","TransferFromInput3"],"type":0}},{"label":"data","type":{"displayName":["psp22_external","TransferFromInput4"],"type":13}}],"default":false,"docs":[" Transfers \`value\` tokens on the behalf of \`from\` to the account \`to\`"," with additional \`data\` in unspecified format.",""," This can be used to allow a contract to transfer tokens on ones behalf and/or"," to charge fees in sub-currencies, for example.",""," On success a \`Transfer\` and \`Approval\` events are emitted.",""," # Errors",""," Returns \`InsufficientAllowance\` error if there are not enough tokens allowed"," for the caller to withdraw from \`from\`.",""," Returns \`InsufficientBalance\` error if there are not enough tokens on"," the the account Balance of \`from\`.",""," Returns \`ZeroSenderAddress\` error if sender's address is zero.",""," Returns \`ZeroRecipientAddress\` error if recipient's address is zero."],"label":"PSP22::transfer_from","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":9},"selector":"0x54b3c76e"},{"args":[],"default":false,"docs":[" Returns the token symbol."],"label":"PSP22Metadata::token_symbol","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0x34205be5"},{"args":[],"default":false,"docs":[" Returns the token decimals."],"label":"PSP22Metadata::token_decimals","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x7271b782"},{"args":[],"default":false,"docs":[" Returns the token name."],"label":"PSP22Metadata::token_name","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":14},"selector":"0x3d261bd4"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"struct":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":0}},"name":"supply"},{"layout":{"root":{"layout":{"leaf":{"key":"0x1d458d3b","ty":0}},"root_key":"0x1d458d3b"}},"name":"balances"},{"layout":{"root":{"layout":{"leaf":{"key":"0x0abd72fb","ty":0}},"root_key":"0x0abd72fb"}},"name":"allowances"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":1}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Data"}},"name":"psp22"},{"layout":{"struct":{"fields":[{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"0"}],"name":"Some"}}}},"name":"name"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":2}},"name":"0"}],"name":"Some"}}}},"name":"symbol"},{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"decimals"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":1}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Data"}},"name":"metadata"}],"name":"Contract"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"primitive":"u128"}}},{"id":1,"type":{"def":{"tuple":[]}}},{"id":2,"type":{"def":{"primitive":"str"}}},{"id":3,"type":{"def":{"primitive":"u8"}}},{"id":4,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":2}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":2}],"path":["Option"]}},{"id":5,"type":{"def":{"variant":{"variants":[{"fields":[{"type":1}],"index":0,"name":"Ok"},{"fields":[{"type":6}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":1},{"name":"E","type":6}],"path":["Result"]}},{"id":6,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":7,"type":{"def":{"composite":{"fields":[{"type":8,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":8,"type":{"def":{"array":{"len":32,"type":3}}}},{"id":9,"type":{"def":{"variant":{"variants":[{"fields":[{"type":10}],"index":0,"name":"Ok"},{"fields":[{"type":6}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":10},{"name":"E","type":6}],"path":["Result"]}},{"id":10,"type":{"def":{"variant":{"variants":[{"fields":[{"type":1}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":1},{"name":"E","type":11}],"path":["Result"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2,"typeName":"String"}],"index":0,"name":"Custom"},{"index":1,"name":"InsufficientBalance"},{"index":2,"name":"InsufficientAllowance"},{"index":3,"name":"ZeroRecipientAddress"},{"index":4,"name":"ZeroSenderAddress"},{"fields":[{"type":2,"typeName":"String"}],"index":5,"name":"SafeTransferCheckFailed"}]}},"path":["openbrush_contracts","traits","errors","psp22","PSP22Error"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":0}],"index":0,"name":"Ok"},{"fields":[{"type":6}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":0},{"name":"E","type":6}],"path":["Result"]}},{"id":13,"type":{"def":{"sequence":{"type":3}}}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":4}],"index":0,"name":"Ok"},{"fields":[{"type":6}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":4},{"name":"E","type":6}],"path":["Result"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":6}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":6}],"path":["Result"]}},{"id":16,"type":{"def":{"composite":{"fields":[{"type":8,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":17,"type":{"def":{"primitive":"u64"}}},{"id":18,"type":{"def":{"primitive":"u32"}}},{"id":19,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}`; \ No newline at end of file diff --git a/typedContracts/governance-token/contracts/my_psp22_metadata.ts b/typedContracts/governance-token/contracts/my_psp22_metadata.ts new file mode 100644 index 0000000..5fbb3ed --- /dev/null +++ b/typedContracts/governance-token/contracts/my_psp22_metadata.ts @@ -0,0 +1,107 @@ +/* This file is auto-generated */ + +import type { ApiPromise } from '@polkadot/api'; +import { Abi } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import { ContractPromise } from '@polkadot/api-contract'; +import { ContractAbi } from '../contract-info/my_psp22_metadata'; +import QueryMethods from '../query/my_psp22_metadata'; +import BuildExtrinsicMethods from '../build-extrinsic/my_psp22_metadata'; +import TxSignAndSendMethods from '../tx-sign-and-send/my_psp22_metadata'; +import MixedMethods from '../mixed-methods/my_psp22_metadata'; +import EventsClass from '../events/my_psp22_metadata'; + + +export default class Contract { + readonly query : QueryMethods; + readonly buildExtrinsic : BuildExtrinsicMethods; + readonly tx : TxSignAndSendMethods; + readonly methods : MixedMethods; + readonly events: EventsClass; + + readonly address : string; + readonly signer : KeyringPair; + + private nativeContract : ContractPromise; + private nativeAPI : ApiPromise; + private contractAbi: Abi; + + /** + * @constructor + + * @param address - The address of the contract. + * @param signer - The signer to use for signing transactions. + * @param nativeAPI - The API instance to use for queries. + */ + constructor( + address : string, + signer : KeyringPair, + nativeAPI : ApiPromise, + ) { + this.address = address; + this.nativeContract = new ContractPromise(nativeAPI, ContractAbi, address); + this.nativeAPI = nativeAPI; + this.signer = signer; + this.contractAbi = new Abi(ContractAbi); + + this.query = new QueryMethods(this.nativeContract, this.nativeAPI, signer.address); + this.buildExtrinsic = new BuildExtrinsicMethods(this.nativeContract, this.nativeAPI); + this.tx = new TxSignAndSendMethods(nativeAPI, this.nativeContract, signer); + this.methods = new MixedMethods(nativeAPI, this.nativeContract, signer); + this.events = new EventsClass(this.nativeContract, nativeAPI); + } + + /** + * name + * + * @returns The name of the contract. + */ + get name() : string { + return this.nativeContract.abi.info.contract.name.toString(); + } + + /** + * abi + * + * @returns The abi of the contract. + */ + get abi() : Abi { + return this.contractAbi; + } + + /** + * withSigner + * + * @param signer - The signer to use for signing transactions. + * @returns New instance of the contract class with new signer. + * @example + * ```typescript + * const contract = new Contract(address, signerAlice, api); + * await contract.mint(signerBob.address, 100); + * await contract.withSigner(signerBob).transfer(signerAlice.address, 100); + * ``` + */ + withSigner(signer : KeyringPair) : Contract { + return new Contract(this.address, signer, this.nativeAPI); + } + + /** + * withAddress + * + * @param address - The address of the contract. + * @returns New instance of the contract class to interact with new contract. + */ + withAddress(address : string) : Contract { + return new Contract(address, this.signer, this.nativeAPI); + } + + /** + * withAPI + * + * @param api - The API instance to use for queries. + * @returns New instance of the contract class to interact with new API. + */ + withAPI(api : ApiPromise) : Contract { + return new Contract(this.address, this.signer, api); + } +} \ No newline at end of file diff --git a/typedContracts/governance-token/data/my_psp22_metadata.json b/typedContracts/governance-token/data/my_psp22_metadata.json new file mode 100644 index 0000000..48c69c1 --- /dev/null +++ b/typedContracts/governance-token/data/my_psp22_metadata.json @@ -0,0 +1,3 @@ +{ +"0": {"name":"ReturnNumber","isResult":false,"isPrimitive":false,"isConvertable":true},"1": {"name":"null","isResult":false,"isPrimitive":true,"isConvertable":false},"2": {"name":"string","isResult":false,"isPrimitive":true,"isConvertable":false},"3": {"name":"number","isResult":false,"isPrimitive":true,"isConvertable":false},"4": {"name":"Option","body":{"0":{"name":"string","isResult":false,"isPrimitive":true,"isConvertable":false},"1":{"name":"null","isResult":false,"isPrimitive":true,"isConvertable":false}},"isResult":false,"isPrimitive":false,"isConvertable":false},"5": {"name":"Result void, + filter : (eventName: string) => boolean = () => true + ) { + // @ts-ignore + return this.__api.query.system.events((events) => { + events.forEach((record: any) => { + const { event } = record; + + if (event.method == 'ContractEmitted') { + const [address, data] = record.event.data; + + if (address.toString() === this.__nativeContract.address.toString()) { + const {args, event} = this.__nativeContract.abi.decodeEvent(data); + + if (filter(event.identifier.toString())) + callback(args, event); + } + } + }); + }); + } + +} \ No newline at end of file diff --git a/typedContracts/governance-token/mixed-methods/my_psp22_metadata.ts b/typedContracts/governance-token/mixed-methods/my_psp22_metadata.ts new file mode 100644 index 0000000..65f8dd3 --- /dev/null +++ b/typedContracts/governance-token/mixed-methods/my_psp22_metadata.ts @@ -0,0 +1,203 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { ApiPromise } from '@polkadot/api'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { QueryReturnType } from '@727-ventures/typechain-types'; +import { queryOkJSON, queryJSON, handleReturnType } from '@727-ventures/typechain-types'; +import { txSignAndSend } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/my_psp22_metadata'; +import type * as ReturnTypes from '../types-returns/my_psp22_metadata'; +import type BN from 'bn.js'; +//@ts-ignore +import {ReturnNumber} from '@727-ventures/typechain-types'; +import {getTypeDescription} from './../shared/utils'; +// @ts-ignore +import type {EventRecord} from "@polkadot/api/submittable"; +import {decodeEvents} from "../shared/utils"; +import DATA_TYPE_DESCRIPTIONS from '../data/my_psp22_metadata.json'; +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/my_psp22_metadata.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __keyringPair : KeyringPair; + private __callerAddress : string; + private __apiPromise: ApiPromise; + + constructor( + apiPromise : ApiPromise, + nativeContract : ContractPromise, + keyringPair : KeyringPair, + ) { + this.__apiPromise = apiPromise; + this.__nativeContract = nativeContract; + this.__keyringPair = keyringPair; + this.__callerAddress = keyringPair.address; + } + + /** + * decreaseAllowance + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } deltaValue, + * @returns { void } + */ + "decreaseAllowance" ( + spender: ArgumentTypes.AccountId, + deltaValue: (string | number | BN), + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::decreaseAllowance", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [spender, deltaValue], __options); + } + + /** + * allowance + * + * @param { ArgumentTypes.AccountId } owner, + * @param { ArgumentTypes.AccountId } spender, + * @returns { Result } + */ + "allowance" ( + owner: ArgumentTypes.AccountId, + spender: ArgumentTypes.AccountId, + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::allowance", [owner, spender], __options, (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * balanceOf + * + * @param { ArgumentTypes.AccountId } owner, + * @returns { Result } + */ + "balanceOf" ( + owner: ArgumentTypes.AccountId, + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::balanceOf", [owner], __options, (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * approve + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } value, + * @returns { void } + */ + "approve" ( + spender: ArgumentTypes.AccountId, + value: (string | number | BN), + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::approve", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [spender, value], __options); + } + + /** + * totalSupply + * + * @returns { Result } + */ + "totalSupply" ( + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::totalSupply", [], __options, (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * increaseAllowance + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } deltaValue, + * @returns { void } + */ + "increaseAllowance" ( + spender: ArgumentTypes.AccountId, + deltaValue: (string | number | BN), + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::increaseAllowance", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [spender, deltaValue], __options); + } + + /** + * transfer + * + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } value, + * @param { Array<(number | string | BN)> } data, + * @returns { void } + */ + "transfer" ( + to: ArgumentTypes.AccountId, + value: (string | number | BN), + data: Array<(number | string | BN)>, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::transfer", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [to, value, data], __options); + } + + /** + * transferFrom + * + * @param { ArgumentTypes.AccountId } from, + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } value, + * @param { Array<(number | string | BN)> } data, + * @returns { void } + */ + "transferFrom" ( + from: ArgumentTypes.AccountId, + to: ArgumentTypes.AccountId, + value: (string | number | BN), + data: Array<(number | string | BN)>, + __options: GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::transferFrom", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [from, to, value, data], __options); + } + + /** + * tokenSymbol + * + * @returns { Result } + */ + "tokenSymbol" ( + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22Metadata::tokenSymbol", [], __options, (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * tokenDecimals + * + * @returns { Result } + */ + "tokenDecimals" ( + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22Metadata::tokenDecimals", [], __options, (result) => { return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * tokenName + * + * @returns { Result } + */ + "tokenName" ( + __options: GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22Metadata::tokenName", [], __options, (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); + } + +} \ No newline at end of file diff --git a/typedContracts/governance-token/query/my_psp22_metadata.ts b/typedContracts/governance-token/query/my_psp22_metadata.ts new file mode 100644 index 0000000..cce604e --- /dev/null +++ b/typedContracts/governance-token/query/my_psp22_metadata.ts @@ -0,0 +1,185 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { ApiPromise } from '@polkadot/api'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import type { QueryReturnType } from '@727-ventures/typechain-types'; +import { queryJSON, queryOkJSON, handleReturnType } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/my_psp22_metadata'; +import type * as ReturnTypes from '../types-returns/my_psp22_metadata'; +import type BN from 'bn.js'; +//@ts-ignore +import {ReturnNumber} from '@727-ventures/typechain-types'; +import {getTypeDescription} from './../shared/utils'; +import DATA_TYPE_DESCRIPTIONS from '../data/my_psp22_metadata.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __apiPromise: ApiPromise; + private __callerAddress : string; + + constructor( + nativeContract : ContractPromise, + nativeApi : ApiPromise, + callerAddress : string, + ) { + this.__nativeContract = nativeContract; + this.__callerAddress = callerAddress; + this.__apiPromise = nativeApi; + } + + /** + * decreaseAllowance + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } deltaValue, + * @returns { Result, ReturnTypes.LangError> } + */ + "decreaseAllowance" ( + spender: ArgumentTypes.AccountId, + deltaValue: (string | number | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::decreaseAllowance", [spender, deltaValue], __options , (result) => { return handleReturnType(result, getTypeDescription(9, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * allowance + * + * @param { ArgumentTypes.AccountId } owner, + * @param { ArgumentTypes.AccountId } spender, + * @returns { Result } + */ + "allowance" ( + owner: ArgumentTypes.AccountId, + spender: ArgumentTypes.AccountId, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::allowance", [owner, spender], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * balanceOf + * + * @param { ArgumentTypes.AccountId } owner, + * @returns { Result } + */ + "balanceOf" ( + owner: ArgumentTypes.AccountId, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::balanceOf", [owner], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * approve + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } value, + * @returns { Result, ReturnTypes.LangError> } + */ + "approve" ( + spender: ArgumentTypes.AccountId, + value: (string | number | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::approve", [spender, value], __options , (result) => { return handleReturnType(result, getTypeDescription(9, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * totalSupply + * + * @returns { Result } + */ + "totalSupply" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::totalSupply", [], __options , (result) => { return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * increaseAllowance + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } deltaValue, + * @returns { Result, ReturnTypes.LangError> } + */ + "increaseAllowance" ( + spender: ArgumentTypes.AccountId, + deltaValue: (string | number | BN), + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::increaseAllowance", [spender, deltaValue], __options , (result) => { return handleReturnType(result, getTypeDescription(9, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * transfer + * + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } value, + * @param { Array<(number | string | BN)> } data, + * @returns { Result, ReturnTypes.LangError> } + */ + "transfer" ( + to: ArgumentTypes.AccountId, + value: (string | number | BN), + data: Array<(number | string | BN)>, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::transfer", [to, value, data], __options , (result) => { return handleReturnType(result, getTypeDescription(9, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * transferFrom + * + * @param { ArgumentTypes.AccountId } from, + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } value, + * @param { Array<(number | string | BN)> } data, + * @returns { Result, ReturnTypes.LangError> } + */ + "transferFrom" ( + from: ArgumentTypes.AccountId, + to: ArgumentTypes.AccountId, + value: (string | number | BN), + data: Array<(number | string | BN)>, + __options ? : GasLimit, + ): Promise< QueryReturnType< Result, ReturnTypes.LangError> > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22::transferFrom", [from, to, value, data], __options , (result) => { return handleReturnType(result, getTypeDescription(9, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * tokenSymbol + * + * @returns { Result } + */ + "tokenSymbol" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22Metadata::tokenSymbol", [], __options , (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * tokenDecimals + * + * @returns { Result } + */ + "tokenDecimals" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22Metadata::tokenDecimals", [], __options , (result) => { return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)); }); + } + + /** + * tokenName + * + * @returns { Result } + */ + "tokenName" ( + __options ? : GasLimit, + ): Promise< QueryReturnType< Result > >{ + return queryOkJSON( this.__apiPromise, this.__nativeContract, this.__callerAddress, "psp22Metadata::tokenName", [], __options , (result) => { return handleReturnType(result, getTypeDescription(14, DATA_TYPE_DESCRIPTIONS)); }); + } + +} \ No newline at end of file diff --git a/typedContracts/governance-token/shared/utils.ts b/typedContracts/governance-token/shared/utils.ts new file mode 100644 index 0000000..395aa48 --- /dev/null +++ b/typedContracts/governance-token/shared/utils.ts @@ -0,0 +1,38 @@ +import fs from "fs"; +import type {ContractPromise} from "@polkadot/api-contract"; +import {handleEventReturn} from "@727-ventures/typechain-types"; + +export function getTypeDescription(id: number | string, types: any): any { + return types[id]; +} + +export function getEventTypeDescription(name: string, types: any): any { + return types[name]; +} + +export function decodeEvents(events: any[], contract: ContractPromise, types: any): any[] { + return events.filter((record: any) => { + const { event } = record; + + const [address, data] = record.event.data; + + return event.method == 'ContractEmitted' && address.toString() === contract.address.toString(); + }).map((record: any) => { + const [address, data] = record.event.data; + + const {args, event} = contract.abi.decodeEvent(data); + + const _event: Record < string, any > = {}; + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON(); + } + + handleEventReturn(_event, getEventTypeDescription(event.identifier.toString(), types)); + + return { + name: event.identifier.toString(), + args: _event, + }; + }); +} \ No newline at end of file diff --git a/typedContracts/governance-token/tx-sign-and-send/my_psp22_metadata.ts b/typedContracts/governance-token/tx-sign-and-send/my_psp22_metadata.ts new file mode 100644 index 0000000..e5f9e0e --- /dev/null +++ b/typedContracts/governance-token/tx-sign-and-send/my_psp22_metadata.ts @@ -0,0 +1,195 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract'; +import type { KeyringPair } from '@polkadot/keyring/types'; +import type { ApiPromise } from '@polkadot/api'; +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types'; +import { txSignAndSend } from '@727-ventures/typechain-types'; +import type * as ArgumentTypes from '../types-arguments/my_psp22_metadata'; +import type BN from 'bn.js'; +// @ts-ignore +import type {EventRecord} from "@polkadot/api/submittable"; +import {decodeEvents} from "../shared/utils"; +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/my_psp22_metadata.json'; + + +export default class Methods { + private __nativeContract : ContractPromise; + private __keyringPair : KeyringPair; + private __apiPromise: ApiPromise; + + constructor( + apiPromise: ApiPromise, + nativeContract : ContractPromise, + keyringPair : KeyringPair, + ) { + this.__apiPromise = apiPromise; + this.__nativeContract = nativeContract; + this.__keyringPair = keyringPair; + } + + /** + * decreaseAllowance + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } deltaValue, + */ + "decreaseAllowance" ( + spender: ArgumentTypes.AccountId, + deltaValue: (string | number | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::decreaseAllowance", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [spender, deltaValue], __options); + } + + /** + * allowance + * + * @param { ArgumentTypes.AccountId } owner, + * @param { ArgumentTypes.AccountId } spender, + */ + "allowance" ( + owner: ArgumentTypes.AccountId, + spender: ArgumentTypes.AccountId, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::allowance", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [owner, spender], __options); + } + + /** + * balanceOf + * + * @param { ArgumentTypes.AccountId } owner, + */ + "balanceOf" ( + owner: ArgumentTypes.AccountId, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::balanceOf", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [owner], __options); + } + + /** + * approve + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } value, + */ + "approve" ( + spender: ArgumentTypes.AccountId, + value: (string | number | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::approve", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [spender, value], __options); + } + + /** + * totalSupply + * + */ + "totalSupply" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::totalSupply", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * increaseAllowance + * + * @param { ArgumentTypes.AccountId } spender, + * @param { (string | number | BN) } deltaValue, + */ + "increaseAllowance" ( + spender: ArgumentTypes.AccountId, + deltaValue: (string | number | BN), + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::increaseAllowance", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [spender, deltaValue], __options); + } + + /** + * transfer + * + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } value, + * @param { Array<(number | string | BN)> } data, + */ + "transfer" ( + to: ArgumentTypes.AccountId, + value: (string | number | BN), + data: Array<(number | string | BN)>, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::transfer", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [to, value, data], __options); + } + + /** + * transferFrom + * + * @param { ArgumentTypes.AccountId } from, + * @param { ArgumentTypes.AccountId } to, + * @param { (string | number | BN) } value, + * @param { Array<(number | string | BN)> } data, + */ + "transferFrom" ( + from: ArgumentTypes.AccountId, + to: ArgumentTypes.AccountId, + value: (string | number | BN), + data: Array<(number | string | BN)>, + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22::transferFrom", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [from, to, value, data], __options); + } + + /** + * tokenSymbol + * + */ + "tokenSymbol" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22Metadata::tokenSymbol", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * tokenDecimals + * + */ + "tokenDecimals" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22Metadata::tokenDecimals", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + + /** + * tokenName + * + */ + "tokenName" ( + __options ? : GasLimit, + ){ + return txSignAndSend( this.__apiPromise, this.__nativeContract, this.__keyringPair, "psp22Metadata::tokenName", (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS); + }, [], __options); + } + +} \ No newline at end of file diff --git a/typedContracts/governance-token/types-arguments/my_psp22_metadata.ts b/typedContracts/governance-token/types-arguments/my_psp22_metadata.ts new file mode 100644 index 0000000..8769c60 --- /dev/null +++ b/typedContracts/governance-token/types-arguments/my_psp22_metadata.ts @@ -0,0 +1,50 @@ +import type BN from 'bn.js'; + +export enum LangError { + couldNotReadInput = 'CouldNotReadInput' +} + +export type AccountId = string | number[] + +export interface PSP22Error { + custom ? : string, + insufficientBalance ? : null, + insufficientAllowance ? : null, + zeroRecipientAddress ? : null, + zeroSenderAddress ? : null, + safeTransferCheckFailed ? : string +} + +export class PSP22ErrorBuilder { + static Custom(value: string): PSP22Error { + return { + custom: value, + }; + } + static InsufficientBalance(): PSP22Error { + return { + insufficientBalance: null, + }; + } + static InsufficientAllowance(): PSP22Error { + return { + insufficientAllowance: null, + }; + } + static ZeroRecipientAddress(): PSP22Error { + return { + zeroRecipientAddress: null, + }; + } + static ZeroSenderAddress(): PSP22Error { + return { + zeroSenderAddress: null, + }; + } + static SafeTransferCheckFailed(value: string): PSP22Error { + return { + safeTransferCheckFailed: value, + }; + } +} + diff --git a/typedContracts/governance-token/types-returns/my_psp22_metadata.ts b/typedContracts/governance-token/types-returns/my_psp22_metadata.ts new file mode 100644 index 0000000..451450e --- /dev/null +++ b/typedContracts/governance-token/types-returns/my_psp22_metadata.ts @@ -0,0 +1,51 @@ +import type BN from 'bn.js'; +import type {ReturnNumber} from '@727-ventures/typechain-types'; + +export enum LangError { + couldNotReadInput = 'CouldNotReadInput' +} + +export type AccountId = string | number[] + +export interface PSP22Error { + custom ? : string, + insufficientBalance ? : null, + insufficientAllowance ? : null, + zeroRecipientAddress ? : null, + zeroSenderAddress ? : null, + safeTransferCheckFailed ? : string +} + +export class PSP22ErrorBuilder { + static Custom(value: string): PSP22Error { + return { + custom: value, + }; + } + static InsufficientBalance(): PSP22Error { + return { + insufficientBalance: null, + }; + } + static InsufficientAllowance(): PSP22Error { + return { + insufficientAllowance: null, + }; + } + static ZeroRecipientAddress(): PSP22Error { + return { + zeroRecipientAddress: null, + }; + } + static ZeroSenderAddress(): PSP22Error { + return { + zeroSenderAddress: null, + }; + } + static SafeTransferCheckFailed(value: string): PSP22Error { + return { + safeTransferCheckFailed: value, + }; + } +} + diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..b054525 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2075 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@727-ventures/typechain-polkadot-parser@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@727-ventures/typechain-polkadot-parser/-/typechain-polkadot-parser-1.0.0.tgz#1e00a4a1f7597f6c3869e6a5dd96dbcab4fb4525" + integrity sha512-4JjvaTAhZtWo/HTNdkHxswg65ZxLHu4WfhWH5NdO0w+saweWZbO2rUzBTM+f9JhMdxirwMSr+Iyvi+9BcqEsdA== + dependencies: + "@polkadot/api" "^10.1.4" + "@polkadot/api-contract" "^10.1.4" + "@types/bn.js" "^5.1.0" + "@types/node" "^18.0.3" + camelcase "^6.3.0" + typescript "^4.7.4" + +"@727-ventures/typechain-polkadot@1.0.0-beta.2": + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/@727-ventures/typechain-polkadot/-/typechain-polkadot-1.0.0-beta.2.tgz#4716e1b8b70b9655df66988203fc59ff0def4016" + integrity sha512-wgvSsTfAlq77arvLebomRi5v04uxlVHLyW3Nd22OS//dQcR2R7gOnXj2WwPaZKpggp9trHgdBAWfu/bC8Wq5IQ== + dependencies: + "@727-ventures/typechain-polkadot-parser" "1.0.0" + "@polkadot/api" "^10.1.4" + "@polkadot/api-contract" "^10.1.4" + "@polkadot/keyring" "^11.1.1" + "@types/fs-extra" "^9.0.13" + "@types/node" "^18.11.18" + "@types/yargs" "^17.0.10" + camelcase "^6.3.0" + eslint "^8.18.0" + fs-extra "^9.1.0" + handlebars "^4.7.7" + prettier "^2.7.1" + ts-node "^10.7.0" + yargs "^17.5.1" + +"@727-ventures/typechain-types@1.0.0-beta.1": + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@727-ventures/typechain-types/-/typechain-types-1.0.0-beta.1.tgz#3f997ca70233e792718c561137d805a8f7865d6e" + integrity sha512-BEjoce+BWMlstdlVe/+WbLsA/8BbGc2haoQqCOOZ4BnAHDKgZiH0A6Ybob8f8Lf/zJw3gk0zcGrvTDKe1ddOdw== + dependencies: + "@polkadot/api" "^10.1.4" + "@polkadot/api-contract" "^10.1.4" + "@types/bn.js" "^5.1.0" + "@types/node" "^18.0.3" + camelcase "^6.3.0" + typescript "^4.9.5" + +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + version "4.5.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" + integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== + +"@eslint/eslintrc@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.0.tgz#82256f164cc9e0b59669efc19d57f8092706841d" + integrity sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.44.0": + version "8.44.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af" + integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw== + +"@humanwhocodes/config-array@^0.11.10": + version "0.11.10" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" + integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@noble/curves@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.1" + +"@noble/hashes@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" + integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== + +"@noble/hashes@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + +"@noble/secp256k1@1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@polkadot/api-augment@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-10.9.1.tgz#9fc81b81903229bb23b0b16783e97ec52a5d4f1b" + integrity sha512-kRZZvCFVcN4hAH4dJ+Qzfdy27/4EEq3oLDf3ihj0LTVrAezSWcKPGE3EVFy+Mn6Lo4SUc7RVyoKvIUhSk2l4Dg== + dependencies: + "@polkadot/api-base" "10.9.1" + "@polkadot/rpc-augment" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-augment" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + +"@polkadot/api-base@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-10.9.1.tgz#27f63c4950814c2f10535f794121fa1384dc2207" + integrity sha512-Q3m2KzlceMK2kX8bhnUZWk3RT6emmijeeFZZQgCePpEcrSeNjnqG4qjuTPgkveaOkUT8MAoDc5Avuzcc2jlW9g== + dependencies: + "@polkadot/rpc-core" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/util" "^12.3.1" + rxjs "^7.8.1" + tslib "^2.5.3" + +"@polkadot/api-contract@^10.1.4": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-10.9.1.tgz#6820836df2d0efa10d08d58fd85e3513a5d4c537" + integrity sha512-BJjFYSFtsUlClC3mgvPNQ5h/7LZd5gVfexwl+mDgLd/6SN4dUBQjIXhlIL5a1cGYjq3EROuu7t0agG2DIaiZMQ== + dependencies: + "@polkadot/api" "10.9.1" + "@polkadot/api-augment" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/types-create" "10.9.1" + "@polkadot/util" "^12.3.1" + "@polkadot/util-crypto" "^12.3.1" + rxjs "^7.8.1" + tslib "^2.5.3" + +"@polkadot/api-derive@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-10.9.1.tgz#04a4ca3285fd215c4cd50cfb3f4791d38dd90050" + integrity sha512-mRud1UZCFIc4Z63qAoGSIHh/foyUYADfy1RQYCmPpeFKfIdCIrHpd7xFdJXTOMYOS0BwlM6u4qli/ZT4XigezQ== + dependencies: + "@polkadot/api" "10.9.1" + "@polkadot/api-augment" "10.9.1" + "@polkadot/api-base" "10.9.1" + "@polkadot/rpc-core" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/util" "^12.3.1" + "@polkadot/util-crypto" "^12.3.1" + rxjs "^7.8.1" + tslib "^2.5.3" + +"@polkadot/api@10.9.1", "@polkadot/api@^10.1.4": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-10.9.1.tgz#156b3436f45ef18218960804988c1f552d2c4e46" + integrity sha512-ND/2UqZBWvtt4PfV03OStTKg0mxmPk4UpMAgJKutdgsz/wP9CYJ1KbjwFgPNekL9JnzbKQsWyQNPVrcw7kQk8A== + dependencies: + "@polkadot/api-augment" "10.9.1" + "@polkadot/api-base" "10.9.1" + "@polkadot/api-derive" "10.9.1" + "@polkadot/keyring" "^12.3.1" + "@polkadot/rpc-augment" "10.9.1" + "@polkadot/rpc-core" "10.9.1" + "@polkadot/rpc-provider" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-augment" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/types-create" "10.9.1" + "@polkadot/types-known" "10.9.1" + "@polkadot/util" "^12.3.1" + "@polkadot/util-crypto" "^12.3.1" + eventemitter3 "^5.0.1" + rxjs "^7.8.1" + tslib "^2.5.3" + +"@polkadot/keyring@^11.1.1": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-11.1.3.tgz#8718f14996ecdb389acffc6ecbe7deb8a2d74b5f" + integrity sha512-bzGz1cWDYK7MWhp0630W6KOwTC/wsvKKHBvWxReMT7iQwFHeLn5AemUOveqIPxF+esd/UfdN5aFDHApjYcyZsg== + dependencies: + "@polkadot/util" "11.1.3" + "@polkadot/util-crypto" "11.1.3" + tslib "^2.5.0" + +"@polkadot/keyring@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-12.3.2.tgz#112a0c28816a1f47edad6260dc94222c29465a54" + integrity sha512-NTdtDeI0DP9l/45hXynNABeP5VB8piw5YR+CbUxK2e36xpJWVXwbcOepzslg5ghE9rs8UKJb30Z/HqTU4sBY0Q== + dependencies: + "@polkadot/util" "12.3.2" + "@polkadot/util-crypto" "12.3.2" + tslib "^2.5.3" + +"@polkadot/networks@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-11.1.3.tgz#e113c98269328267962c2047dccca4d2790cc8a5" + integrity sha512-goLpX9SswAGGeh1jXB79wHEfWOF5rLIItMHYalujBmhQVxyAqbxP2tzQqPQXDLcnkWbgwkyYGLXaDD72GBqHZw== + dependencies: + "@polkadot/util" "11.1.3" + "@substrate/ss58-registry" "^1.39.0" + tslib "^2.5.0" + +"@polkadot/networks@12.3.2", "@polkadot/networks@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-12.3.2.tgz#131b0439c481add159814dd2cf0286c6c3fe5b3b" + integrity sha512-uCkyybKoeEm1daKr0uT/9oNDHDDzCy2/ZdVl346hQqfdR1Ct3BaxMjxqvdmb5N8aCw0cBWSfgsxAYtw8ESmllQ== + dependencies: + "@polkadot/util" "12.3.2" + "@substrate/ss58-registry" "^1.40.0" + tslib "^2.5.3" + +"@polkadot/rpc-augment@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-10.9.1.tgz#214ec3ee145d20caa61ea204041a3aadb89c6b0f" + integrity sha512-MaLHkNlyqN20ZRYr6uNd1BZr1OsrnX9qLAmsl0mcrri1vPGRH6VHjfFH1RBLkikpWD82v17g0l2hLwdV1ZHMcw== + dependencies: + "@polkadot/rpc-core" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + +"@polkadot/rpc-core@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-10.9.1.tgz#798c514dbed6f6c2e43098a494c9f51fb144dc31" + integrity sha512-ZtA8B8SfXSAwVkBlCcKRHw0eSM7ec/sbiNOM5GasXPeRujUgT7lOwSH2GbUZSqe9RfRDMp6DvO9c2JoGc3LLWw== + dependencies: + "@polkadot/rpc-augment" "10.9.1" + "@polkadot/rpc-provider" "10.9.1" + "@polkadot/types" "10.9.1" + "@polkadot/util" "^12.3.1" + rxjs "^7.8.1" + tslib "^2.5.3" + +"@polkadot/rpc-provider@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-10.9.1.tgz#de3a474bbcd26d28d9cd3134acdb3b5ce92b680b" + integrity sha512-4QzT2QzD+320+eT6b79sGAA85Tt3Bb8fQvse4r5Mom2iiBd2SO81vOhxSAOaIe4GUsw25VzFJmsbe7+OObItdg== + dependencies: + "@polkadot/keyring" "^12.3.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-support" "10.9.1" + "@polkadot/util" "^12.3.1" + "@polkadot/util-crypto" "^12.3.1" + "@polkadot/x-fetch" "^12.3.1" + "@polkadot/x-global" "^12.3.1" + "@polkadot/x-ws" "^12.3.1" + eventemitter3 "^5.0.1" + mock-socket "^9.2.1" + nock "^13.3.1" + tslib "^2.5.3" + optionalDependencies: + "@substrate/connect" "0.7.26" + +"@polkadot/types-augment@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-10.9.1.tgz#5f1c1225c04ffbfe243629a46087c9c9de25a6b3" + integrity sha512-OY9/jTMFRFqYdkUnfcGwqMLC64A0Q25bjvCuVQCVjsPFKE3wl0Kt5rNT01eV2UmLXrR6fY0xWbR2w80bLA7CIQ== + dependencies: + "@polkadot/types" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + +"@polkadot/types-codec@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-10.9.1.tgz#f30026d3dfeaa69c07c45fa66d1c39318fd232cc" + integrity sha512-mJ5OegKGraY1FLvEa8FopRCr3pQrhDkcn5RNOjmgJQozENVeRaxhk0NwxYz7IojFvSDnKnc6lNQfKaaSe5pLHg== + dependencies: + "@polkadot/util" "^12.3.1" + "@polkadot/x-bigint" "^12.3.1" + tslib "^2.5.3" + +"@polkadot/types-create@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-10.9.1.tgz#087d7e2af51cce558b67e3859613b932a3bdc0a3" + integrity sha512-OVz50MGTTuiuVnRP/zAx4CTuLioc0hsiwNwqN2lNhmIJGtnQ4Vy/7mQRsIWehiYz6g0Vzzm5B3qWkTXO1NSN5w== + dependencies: + "@polkadot/types-codec" "10.9.1" + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + +"@polkadot/types-known@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-10.9.1.tgz#fe0c7e55191aa843119edcaf9abb5d2471463a7d" + integrity sha512-zCMVWc4pJtkbMFPu72bD4IhvV/gkHXPX3C5uu92WdmCfnn0vEIEsMKWlVXVVvQQZKAqvs/awpqIfrUtEViOGEA== + dependencies: + "@polkadot/networks" "^12.3.1" + "@polkadot/types" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/types-create" "10.9.1" + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + +"@polkadot/types-support@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-10.9.1.tgz#17a861aab8e5a225a4e20cefa2d16076ddd51baf" + integrity sha512-XsieuLDsszvMZQlleacQBfx07i/JkwQV/UxH9q8Hz7Okmaz9pEVEW1h3ka2/cPuC7a4l32JhaORBUYshBZNdJg== + dependencies: + "@polkadot/util" "^12.3.1" + tslib "^2.5.3" + +"@polkadot/types@10.9.1": + version "10.9.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-10.9.1.tgz#f111d00f7278ad3be95deba3d701fafefe080cb2" + integrity sha512-AG33i2ZGGfq7u+5rkAdGrXAQHHl844/Yv+junH5ZzX69xiCoWO1bH/yzDUNBdpki2GlACWvF9nLYh3F2tVF93w== + dependencies: + "@polkadot/keyring" "^12.3.1" + "@polkadot/types-augment" "10.9.1" + "@polkadot/types-codec" "10.9.1" + "@polkadot/types-create" "10.9.1" + "@polkadot/util" "^12.3.1" + "@polkadot/util-crypto" "^12.3.1" + rxjs "^7.8.1" + tslib "^2.5.3" + +"@polkadot/util-crypto@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-11.1.3.tgz#c3b166f8f8934a2139c8cfb31af50dae53a9d985" + integrity sha512-hjH1y6jXQuceJ2NWx7+ei0sR4A7t844XwlNquPxZX3kQbQS+1t6tO4Eo3/95JhPsEaJOXduus02cYEF6gteEYQ== + dependencies: + "@noble/hashes" "1.3.0" + "@noble/secp256k1" "1.7.1" + "@polkadot/networks" "11.1.3" + "@polkadot/util" "11.1.3" + "@polkadot/wasm-crypto" "^7.0.3" + "@polkadot/x-bigint" "11.1.3" + "@polkadot/x-randomvalues" "11.1.3" + "@scure/base" "1.1.1" + tslib "^2.5.0" + tweetnacl "^1.0.3" + +"@polkadot/util-crypto@12.3.2", "@polkadot/util-crypto@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-12.3.2.tgz#42d810886904e06fa6e5db254c15f6ef80f4ab72" + integrity sha512-pTpx+YxolY0BDT4RcGmgeKbHHD/dI6Ll9xRsqmVdIjpcVVY20uDNTyXs81ZNtfKgyod1y9JQkfNv2Dz9iEpTkQ== + dependencies: + "@noble/curves" "1.1.0" + "@noble/hashes" "1.3.1" + "@polkadot/networks" "12.3.2" + "@polkadot/util" "12.3.2" + "@polkadot/wasm-crypto" "^7.2.1" + "@polkadot/wasm-util" "^7.2.1" + "@polkadot/x-bigint" "12.3.2" + "@polkadot/x-randomvalues" "12.3.2" + "@scure/base" "1.1.1" + tslib "^2.5.3" + +"@polkadot/util@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-11.1.3.tgz#dcdc4504f7c31e6104e7970903d8c1998f3858ef" + integrity sha512-Gsqzv1/fSoypS5tnJkM+NJQeT7O4iYlSniubUJnaZVOKsIbueTS1bMQ1y3/h8ISxbKBtICW5cZ6zCej6Q/jC3w== + dependencies: + "@polkadot/x-bigint" "11.1.3" + "@polkadot/x-global" "11.1.3" + "@polkadot/x-textdecoder" "11.1.3" + "@polkadot/x-textencoder" "11.1.3" + "@types/bn.js" "^5.1.1" + bn.js "^5.2.1" + tslib "^2.5.0" + +"@polkadot/util@12.3.2", "@polkadot/util@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-12.3.2.tgz#f46e147b0e6a426da5ba59df4ce65de1a3effe4a" + integrity sha512-y/JShcGyOamCUiSIg++XZuLHt1ktSKBaSH2K5Nw5NXlgP0+7am+GZzqPB8fQ4qhYLruEOv+YRiz0GC1Zr9S+wg== + dependencies: + "@polkadot/x-bigint" "12.3.2" + "@polkadot/x-global" "12.3.2" + "@polkadot/x-textdecoder" "12.3.2" + "@polkadot/x-textencoder" "12.3.2" + "@types/bn.js" "^5.1.1" + bn.js "^5.2.1" + tslib "^2.5.3" + +"@polkadot/wasm-bridge@7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-bridge/-/wasm-bridge-7.2.1.tgz#8464a96552207d2b49c6f32137b24132534b91ee" + integrity sha512-uV/LHREDBGBbHrrv7HTki+Klw0PYZzFomagFWII4lp6Toj/VCvRh5WMzooVC+g/XsBGosAwrvBhoModabyHx+A== + dependencies: + "@polkadot/wasm-util" "7.2.1" + tslib "^2.5.0" + +"@polkadot/wasm-crypto-asmjs@7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.2.1.tgz#3e7a91e2905ab7354bc37b82f3e151a62bb024db" + integrity sha512-z/d21bmxyVfkzGsKef/FWswKX02x5lK97f4NPBZ9XBeiFkmzlXhdSnu58/+b1sKsRAGdW/Rn/rTNRDhW0GqCAg== + dependencies: + tslib "^2.5.0" + +"@polkadot/wasm-crypto-init@7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.2.1.tgz#9dbba41ed7d382575240f1483cf5a139ff2787bd" + integrity sha512-GcEXtwN9LcSf32V9zSaYjHImFw16hCyo2Xzg4GLLDPPeaAAfbFr2oQMgwyDbvBrBjLKHVHjsPZyGhXae831amw== + dependencies: + "@polkadot/wasm-bridge" "7.2.1" + "@polkadot/wasm-crypto-asmjs" "7.2.1" + "@polkadot/wasm-crypto-wasm" "7.2.1" + "@polkadot/wasm-util" "7.2.1" + tslib "^2.5.0" + +"@polkadot/wasm-crypto-wasm@7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.2.1.tgz#d2486322c725f6e5d2cc2d6abcb77ecbbaedc738" + integrity sha512-DqyXE4rSD0CVlLIw88B58+HHNyrvm+JAnYyuEDYZwCvzUWOCNos/DDg9wi/K39VAIsCCKDmwKqkkfIofuOj/lA== + dependencies: + "@polkadot/wasm-util" "7.2.1" + tslib "^2.5.0" + +"@polkadot/wasm-crypto@^7.0.3", "@polkadot/wasm-crypto@^7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-7.2.1.tgz#db671dcb73f1646dc13478b5ffc3be18c64babe1" + integrity sha512-SA2+33S9TAwGhniKgztVN6pxUKpGfN4Tre/eUZGUfpgRkT92wIUT2GpGWQE+fCCqGQgADrNiBcwt6XwdPqMQ4Q== + dependencies: + "@polkadot/wasm-bridge" "7.2.1" + "@polkadot/wasm-crypto-asmjs" "7.2.1" + "@polkadot/wasm-crypto-init" "7.2.1" + "@polkadot/wasm-crypto-wasm" "7.2.1" + "@polkadot/wasm-util" "7.2.1" + tslib "^2.5.0" + +"@polkadot/wasm-util@7.2.1", "@polkadot/wasm-util@^7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@polkadot/wasm-util/-/wasm-util-7.2.1.tgz#fda233120ec02f77f0d14e4d3c7ad9ce06535fb8" + integrity sha512-FBSn/3aYJzhN0sYAYhHB8y9JL8mVgxLy4M1kUXYbyo+8GLRQEN5rns8Vcb8TAlIzBWgVTOOptYBvxo0oj0h7Og== + dependencies: + tslib "^2.5.0" + +"@polkadot/x-bigint@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-11.1.3.tgz#37b09a12a9ed6df704e047e261f1b8b2ac978497" + integrity sha512-fRUUHfW9VFsXT7sLUUY7gSu8v+PvzNLRwvjnp+Ly8vFx9LTLuVGFCi+mpysuRTaPpqZZJlzBJ3fST7xTGh67Pg== + dependencies: + "@polkadot/x-global" "11.1.3" + tslib "^2.5.0" + +"@polkadot/x-bigint@12.3.2", "@polkadot/x-bigint@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-12.3.2.tgz#0e99489cc7938bed40762aaaed58ded6850ab54b" + integrity sha512-JLqLgfGXe/x+hZJETd5ZqfpVsbwyMsH5Nn1Q20ineMMjXN/ig+kVR8Mc15LXBMuw4g7LldFW6UUrotWnuMI8Yw== + dependencies: + "@polkadot/x-global" "12.3.2" + tslib "^2.5.3" + +"@polkadot/x-fetch@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-12.3.2.tgz#7e8d2113268e792dd5d1b259ef13839c6aa77996" + integrity sha512-3IEuZ5S+RI/t33NsdPLIIa5COfDCfpUW2sbaByEczn75aD1jLqJZSEDwiBniJ2osyNd4uUxBf6e5jw7LAZeZJg== + dependencies: + "@polkadot/x-global" "12.3.2" + node-fetch "^3.3.1" + tslib "^2.5.3" + +"@polkadot/x-global@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-11.1.3.tgz#4086694f52373fea63910b62da999bf0981d7d86" + integrity sha512-R3aqtIjgzFHJ3TyX6wavhp+59oLbZiqczIHkaas/nJe21+SVARqFmIII6BwS7ty7+8Uu4fHliA9re+ZSUp+rwg== + dependencies: + tslib "^2.5.0" + +"@polkadot/x-global@12.3.2", "@polkadot/x-global@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-12.3.2.tgz#04ac0b0e559a35107f0b95ff7889fcade3796aa3" + integrity sha512-yVZq6oIegjlyh5rUZiTklgu+fL+W/DG1ypEa02683tUCB3avV5cA3PAHKptMSlb6FpweHu37lKKrqfAWrraDxg== + dependencies: + tslib "^2.5.3" + +"@polkadot/x-randomvalues@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-11.1.3.tgz#48dde21012aa4eef3bd00d46f545861727fb6618" + integrity sha512-kZjbRgxokMR9UTodZQKs6s3C/Q2YgeizcxpDCghM/VdvQUE8OVBGNzduF7SvBvQyg2Qbg8jMcSxXOY7UgcOWSg== + dependencies: + "@polkadot/x-global" "11.1.3" + tslib "^2.5.0" + +"@polkadot/x-randomvalues@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-12.3.2.tgz#43ac489a998098bdd40b3f82f28adb5b542db2a5" + integrity sha512-ywjIs8CWpvOGmq+3cGCNPOHxAjPHdBUiXyDccftx5BRVdmtbt36gK/V84bKr6Xs73FGu0jprUAOSRRsLZX/3dg== + dependencies: + "@polkadot/x-global" "12.3.2" + tslib "^2.5.3" + +"@polkadot/x-textdecoder@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-11.1.3.tgz#1d1e2aa86e47587393a6acb74a086ab97d62058d" + integrity sha512-NhOjuXVfYRMw9l0VhCtZOtcWefZth58p5KpVOrFyJZd12fTsoMO5/746K7QoAjWRrLQTJ/LHCEKCtWww0LwVPw== + dependencies: + "@polkadot/x-global" "11.1.3" + tslib "^2.5.0" + +"@polkadot/x-textdecoder@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-12.3.2.tgz#bbd5682744f3552ce5d4d792ff48a3ca525eafcf" + integrity sha512-lY5bfA5xArJRWEJlYOlQQMJeTjWD8s0yMhchirVgf5xj8Id9vPGeUoneH+VFDEwgXxrqBvDFJ4smN4T/r6a/fg== + dependencies: + "@polkadot/x-global" "12.3.2" + tslib "^2.5.3" + +"@polkadot/x-textencoder@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-11.1.3.tgz#ba7621b636dcfa6ca4ab6176a6a52eef15904a72" + integrity sha512-7DmqjlPN8aQexLUKwoHeadihpUnW8hjpXEru+aEDxjgq9XIxPvb++NeBK+Mra9RzzZRuiT/K5z16HlwKN//ewg== + dependencies: + "@polkadot/x-global" "11.1.3" + tslib "^2.5.0" + +"@polkadot/x-textencoder@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-12.3.2.tgz#223e6f6dd78e2d81c6dcc6f244c76ceae7b08e32" + integrity sha512-iP3qEBiHzBckQ9zeY7ZHRWuu7mCEg5SMpOugs6UODRk8sx6KHzGQYlghBbWLit0uppPDVE0ifEwZ2n73djJHWQ== + dependencies: + "@polkadot/x-global" "12.3.2" + tslib "^2.5.3" + +"@polkadot/x-ws@^12.3.1": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-12.3.2.tgz#422559dfbdaac4c965d5e1b406b6cc4529214f94" + integrity sha512-yM9Z64pLNlHpJE43+Xtr+iUXmYpFFY5u5hrke2PJt13O48H8f9Vb9cRaIh94appLyICoS0aekGhDkGH+MCspBA== + dependencies: + "@polkadot/x-global" "12.3.2" + tslib "^2.5.3" + ws "^8.13.0" + +"@scure/base@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@substrate/connect-extension-protocol@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.1.tgz#fa5738039586c648013caa6a0c95c43265dbe77d" + integrity sha512-161JhCC1csjH3GE5mPLEd7HbWtwNSPJBg3p1Ksz9SFlTzj/bgEwudiRN2y5i0MoLGCIJRYKyKGMxVnd29PzNjg== + +"@substrate/connect@0.7.26": + version "0.7.26" + resolved "https://registry.yarnpkg.com/@substrate/connect/-/connect-0.7.26.tgz#a0ee5180c9cb2f29250d1219a32f7b7e7dea1196" + integrity sha512-uuGSiroGuKWj1+38n1kY5HReer5iL9bRwPCzuoLtqAOmI1fGI0hsSI2LlNQMAbfRgr7VRHXOk5MTuQf5ulsFRw== + dependencies: + "@substrate/connect-extension-protocol" "^1.0.1" + eventemitter3 "^4.0.7" + smoldot "1.0.4" + +"@substrate/ss58-registry@^1.39.0", "@substrate/ss58-registry@^1.40.0": + version "1.41.0" + resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.41.0.tgz#dd18e132f44b73c3cd31cf0db489c10af70bef36" + integrity sha512-TLz5VkEaJRNFzf1Oiix9gqknKer3aKbLfjK9XHBFCIhdxlQpI+S6lZGu3wT4DHAGXPakYfXb8+9ZIOtWLcQ/2Q== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/chai-as-promised@^7.1.5": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz#6e016811f6c7a64f2eed823191c3a6955094e255" + integrity sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ== + dependencies: + "@types/chai" "*" + +"@types/chai@*", "@types/chai@^4.3.0": + version "4.3.5" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.5.tgz#ae69bcbb1bebb68c4ac0b11e9d8ed04526b3562b" + integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng== + +"@types/fs-extra@^9.0.13": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== + dependencies: + "@types/node" "*" + +"@types/mocha@^8.0.3": + version "8.2.3" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323" + integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw== + +"@types/node@*": + version "20.3.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.3.tgz#329842940042d2b280897150e023e604d11657d6" + integrity sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw== + +"@types/node@^18", "@types/node@^18.0.3", "@types/node@^18.11.18": + version "18.16.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.19.tgz#cb03fca8910fdeb7595b755126a8a78144714eea" + integrity sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.10": + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + dependencies: + "@types/yargs-parser" "*" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^6.0.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +chai-as-promised@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" + integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== + dependencies: + check-error "^1.0.2" + +chai@^4.3.6: + version "4.3.7" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" + integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^4.1.2" + get-func-name "^2.0.0" + loupe "^2.3.1" + pathval "^1.1.1" + type-detect "^4.0.5" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== + +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + +dateformat@^4.5.1: + version "4.6.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" + integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== + +debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +deep-eql@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" + integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" + integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + +eslint@^8.18.0: + version "8.44.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.44.0.tgz#51246e3889b259bbcd1d7d736a0c10add4f0e500" + integrity sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.1.0" + "@eslint/js" "8.44.0" + "@humanwhocodes/config-array" "^0.11.10" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.0" + eslint-visitor-keys "^3.4.1" + espree "^9.6.0" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.0.tgz#80869754b1c6560f32e3b6929194a3fe07c5b82f" + integrity sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@5.0.0, find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +fsu@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fsu/-/fsu-1.1.1.tgz#bd36d3579907c59d85b257a75b836aa9e0c31834" + integrity sha512-xQVsnjJ/5pQtcKh+KjUoZGzVWn4uNkchxTF6Lwjr4Gf7nQr8fmUfhKJ62zE77+xQg9xnxi5KUps7XGs+VC986A== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.isempty@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" + integrity sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg== + +lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + +lodash.isobject@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" + integrity sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA== + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loupe@^2.3.1: + version "2.3.6" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" + integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== + dependencies: + get-func-name "^2.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.5: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mocha@^10.1.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +mochawesome-report-generator@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/mochawesome-report-generator/-/mochawesome-report-generator-6.2.0.tgz#65a30a11235ba7a68e1cf0ca1df80d764b93ae78" + integrity sha512-Ghw8JhQFizF0Vjbtp9B0i//+BOkV5OWcQCPpbO0NGOoxV33o+gKDYU0Pr2pGxkIHnqZ+g5mYiXF7GMNgAcDpSg== + dependencies: + chalk "^4.1.2" + dateformat "^4.5.1" + escape-html "^1.0.3" + fs-extra "^10.0.0" + fsu "^1.1.1" + lodash.isfunction "^3.0.9" + opener "^1.5.2" + prop-types "^15.7.2" + tcomb "^3.2.17" + tcomb-validation "^3.3.0" + validator "^13.6.0" + yargs "^17.2.1" + +mochawesome@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/mochawesome/-/mochawesome-7.1.3.tgz#07b358138f37f5b07b51a1b255d84babfa36fa83" + integrity sha512-Vkb3jR5GZ1cXohMQQ73H3cZz7RoxGjjUo0G5hu0jLaW+0FdUxUwg3Cj29bqQdh0rFcnyV06pWmqmi5eBPnEuNQ== + dependencies: + chalk "^4.1.2" + diff "^5.0.0" + json-stringify-safe "^5.0.1" + lodash.isempty "^4.4.0" + lodash.isfunction "^3.0.9" + lodash.isobject "^3.0.2" + lodash.isstring "^4.0.1" + mochawesome-report-generator "^6.2.0" + strip-ansi "^6.0.1" + uuid "^8.3.2" + +mock-socket@^9.2.1: + version "9.2.1" + resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-9.2.1.tgz#cc9c0810aa4d0afe02d721dcb2b7e657c00e2282" + integrity sha512-aw9F9T9G2zpGipLLhSNh6ZpgUyUl4frcVmRN08uE1NWPWg43Wx6+sGPDbQ7E5iFZZDJW5b5bypMeAEHqTbIFag== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nock@^13.3.1: + version "13.3.1" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.1.tgz#f22d4d661f7a05ebd9368edae1b5dc0a62d758fc" + integrity sha512-vHnopocZuI93p2ccivFyGuUfzjq2fxNyNurp7816mlT5V5HF4SzXu8lvLrVzBbNqzs+ODooZ6OksuSUNM7Njkw== + dependencies: + debug "^4.1.0" + json-stringify-safe "^5.0.1" + lodash "^4.17.21" + propagate "^2.0.0" + +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-fetch@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.1.tgz#b3eea7b54b3a48020e46f4f88b9c5a7430d20b2e" + integrity sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +pako@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier@^2.7.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +propagate@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" + integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +smoldot@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/smoldot/-/smoldot-1.0.4.tgz#e4c38cedad68d699a11b5b9ce72bb75c891bfd98" + integrity sha512-N3TazI1C4GGrseFH/piWyZCCCRJTRx2QhDfrUKRT4SzILlW5m8ayZ3QTKICcz1C/536T9cbHHJyP7afxI6Mi1A== + dependencies: + pako "^2.0.4" + ws "^8.8.1" + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +tcomb-validation@^3.3.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tcomb-validation/-/tcomb-validation-3.4.1.tgz#a7696ec176ce56a081d9e019f8b732a5a8894b65" + integrity sha512-urVVMQOma4RXwiVCa2nM2eqrAomHROHvWPuj6UkDGz/eb5kcy0x6P0dVt6kzpUZtYMNoAqJLWmz1BPtxrtjtrA== + dependencies: + tcomb "^3.0.0" + +tcomb@^3.0.0, tcomb@^3.2.17: + version "3.2.29" + resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-3.2.29.tgz#32404fe9456d90c2cf4798682d37439f1ccc386c" + integrity sha512-di2Hd1DB2Zfw6StGv861JoAF5h/uQVu/QJp2g8KVbtfKnoHdBQl5M32YWq6mnSYBQ1vFFrns5B1haWJL7rKaOQ== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-node@^10.7.0, ts-node@^10.8.0: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@^2.1.0, tslib@^2.5.0, tslib@^2.5.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typescript@^4.7.4, typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@^5.0.4: + version "5.1.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" + integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== + +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +validator@^13.6.0: + version "13.9.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.9.0.tgz#33e7b85b604f3bbce9bb1a05d5c3e22e1c2ff855" + integrity sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA== + +web-streams-polyfill@^3.0.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^8.13.0, ws@^8.8.1: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.2.1, yargs@^17.5.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==