From 7d6c6c8c0e9710a044b9b617f5de81ab57bca7db Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Mon, 27 Nov 2023 17:45:55 +0000 Subject: [PATCH] Revert "Introduce `Defer` feature (#46)" (#47) This reverts commit f8709a20edeb06c8196306f5fe6025cae21a854e. --- .cargo/config | 9 - .github/workflows/push.yml | 35 - .github/workflows/test.yml | 36 - .gitignore | 2 +- .rustfmt.toml | 3 - Cargo.lock | 3800 ++++++--------------- Cargo.toml | 31 +- Makefile | 44 - defer-stub/Cargo.toml | 12 - defer-stub/src/lib.rs | 22 - examples/Cargo.toml | 30 + examples/src/formula.rs | 159 + examples/src/mint.rs | 97 + examples/src/transfer.rs | 141 + integration-tests/Cargo.lock | 3476 ------------------- integration-tests/Cargo.toml | 31 - integration-tests/src/defer.rs | 35 - integration-tests/src/formula.rs | 211 -- integration-tests/src/interface/common.rs | 13 - integration-tests/src/interface/mod.rs | 1 - integration-tests/src/lib.rs | 44 - integration-tests/src/mint.rs | 38 - integration-tests/src/prepare.rs | 78 - integration-tests/src/transfer.rs | 48 - model/Cargo.toml | 12 - model/src/lib.rs | 81 - res/defer_stub.wasm | Bin 90880 -> 0 bytes res/sweat.wasm | Bin 217749 -> 206835 bytes rust-toolchain.toml | 2 - scripts/build-in-docker.sh | 12 - scripts/build-stub.sh | 9 - scripts/build.sh | 9 - scripts/deploy.sh | 14 - scripts/lint.sh | 16 - sweat-integration/Cargo.toml | 16 - sweat-integration/src/lib.rs | 270 -- sweat/Cargo.toml | 6 +- sweat/build.sh | 7 + sweat/rustfmt.toml | 1 + sweat/src/defer.rs | 80 - sweat/src/lib.rs | 129 +- sweat/src/math.rs | 4 +- 42 files changed, 1593 insertions(+), 7471 deletions(-) delete mode 100644 .cargo/config delete mode 100644 .github/workflows/push.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .rustfmt.toml delete mode 100644 Makefile delete mode 100644 defer-stub/Cargo.toml delete mode 100644 defer-stub/src/lib.rs create mode 100644 examples/Cargo.toml create mode 100644 examples/src/formula.rs create mode 100644 examples/src/mint.rs create mode 100644 examples/src/transfer.rs delete mode 100644 integration-tests/Cargo.lock delete mode 100644 integration-tests/Cargo.toml delete mode 100644 integration-tests/src/defer.rs delete mode 100644 integration-tests/src/formula.rs delete mode 100644 integration-tests/src/interface/common.rs delete mode 100644 integration-tests/src/interface/mod.rs delete mode 100644 integration-tests/src/lib.rs delete mode 100644 integration-tests/src/mint.rs delete mode 100644 integration-tests/src/prepare.rs delete mode 100644 integration-tests/src/transfer.rs delete mode 100644 model/Cargo.toml delete mode 100644 model/src/lib.rs delete mode 100755 res/defer_stub.wasm delete mode 100644 rust-toolchain.toml delete mode 100755 scripts/build-in-docker.sh delete mode 100755 scripts/build-stub.sh delete mode 100755 scripts/build.sh delete mode 100755 scripts/deploy.sh delete mode 100755 scripts/lint.sh delete mode 100644 sweat-integration/Cargo.toml delete mode 100644 sweat-integration/src/lib.rs create mode 100755 sweat/build.sh create mode 100644 sweat/rustfmt.toml delete mode 100644 sweat/src/defer.rs diff --git a/.cargo/config b/.cargo/config deleted file mode 100644 index 771d123..0000000 --- a/.cargo/config +++ /dev/null @@ -1,9 +0,0 @@ -[profile.contract] -inherits = "release" -strip = true -codegen-units = 1 -opt-level = "z" -lto = true -debug = false -panic = "abort" -overflow-checks = true diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml deleted file mode 100644 index bd9d9ed..0000000 --- a/.github/workflows/push.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Push - -on: - push: - branches: [ main ] - -env: - CARGO_TERM_COLOR: always - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Build - run: make build - - unit-tests: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Unit tests - run: make test - - integration-tests: - runs-on: macos-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Integration tests - run: make integration diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index c4d00ef..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Test - -on: - pull_request: - branches: [ main ] - -env: - CARGO_TERM_COLOR: always - -jobs: - - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Build - run: make build - - unit-tests: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Unit tests - run: make test - - integration-tests: - runs-on: macos-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Integration tests - run: make integration diff --git a/.gitignore b/.gitignore index 4dfdeb8..a53e9b3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ target/ neardev/ -.DS_Store + diff --git a/.rustfmt.toml b/.rustfmt.toml deleted file mode 100644 index 1a25d9c..0000000 --- a/.rustfmt.toml +++ /dev/null @@ -1,3 +0,0 @@ -group_imports = "StdExternalCrate" -imports_granularity = "Crate" -max_width = 120 diff --git a/Cargo.lock b/Cargo.lock index cf7ff71..5f3f5e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,44 +10,32 @@ checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] name = "actix" -version = "0.13.1" +version = "0.11.0-beta.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cba56612922b907719d4a01cf11c8d5b458e7d3dba946d0435f20f58d6795ed2" +checksum = "8eb78f9871feb3519e06b947c2becbf2cc7f67ce786e510e6bd3f9a27da3dbf1" dependencies = [ - "actix-macros", "actix-rt", "actix_derive", - "bitflags 2.4.1", + "bitflags", "bytes", "crossbeam-channel", "futures-core", "futures-sink", "futures-task", - "futures-util", "log", "once_cell", - "parking_lot", + "parking_lot 0.11.2", "pin-project-lite", "smallvec", "tokio", - "tokio-util 0.7.10", -] - -[[package]] -name = "actix-macros" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" -dependencies = [ - "quote", - "syn 2.0.38", + "tokio-util 0.6.9", ] [[package]] name = "actix-rt" -version = "2.9.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" +checksum = "7ea16c295198e958ef31930a6ef37d0fb64e9ca3b6116e6b93a8bdae96ee1000" dependencies = [ "futures-core", "tokio", @@ -55,210 +43,169 @@ dependencies = [ [[package]] name = "actix_derive" -version = "0.6.1" +version = "0.6.0-beta.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" +checksum = "ae749cf2582eb83efd288edd4e9704600fdce1bc4f69aa0c86ca1368a3e4c13f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn", ] [[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "aes" -version = "0.8.3" +name = "addr2line" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ - "cfg-if 1.0.0", - "cipher 0.4.4", - "cpufeatures", + "gimli", ] [[package]] -name = "ahash" -version = "0.7.7" +name = "adler" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" -dependencies = [ - "getrandom 0.2.10", - "once_cell", - "version_check", -] +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" -dependencies = [ - "cfg-if 1.0.0", - "once_cell", - "version_check", - "zerocopy", -] +checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" [[package]] name = "aho-corasick" -version = "1.1.2" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ "memchr", ] [[package]] -name = "android-tzdata" -version = "0.1.1" +name = "anyhow" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" +checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" [[package]] -name = "android_system_properties" -version = "0.1.5" +name = "arrayref" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] -name = "anstream" -version = "0.6.4" +name = "arrayvec" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "utf8parse", + "nodrop", ] [[package]] -name = "anstyle" -version = "1.0.4" +name = "arrayvec" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] -name = "anstyle-parse" -version = "0.2.2" +name = "arrayvec" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" -dependencies = [ - "utf8parse", -] +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] -name = "anstyle-query" -version = "1.0.0" +name = "async-channel" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" dependencies = [ - "windows-sys", + "concurrent-queue", + "event-listener", + "futures-core", ] [[package]] -name = "anstyle-wincon" -version = "3.0.1" +name = "async-io" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "a811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607b" dependencies = [ - "anstyle", - "windows-sys", + "concurrent-queue", + "futures-lite", + "libc", + "log", + "once_cell", + "parking", + "polling", + "slab", + "socket2", + "waker-fn", + "winapi", ] [[package]] -name = "anyhow" -version = "1.0.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" - -[[package]] -name = "arbitrary" -version = "1.3.1" +name = "async-process" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e1373abdaa212b704512ec2bd8b26bd0b7d5c3f70117411a5d9a451383c859" +checksum = "83137067e3a2a6a06d67168e49e68a0957d215410473a740cea95a2425c0b7c6" dependencies = [ - "derive_arbitrary", + "async-io", + "blocking", + "cfg-if 1.0.0", + "event-listener", + "futures-lite", + "libc", + "once_cell", + "signal-hook", + "winapi", ] [[package]] -name = "arrayref" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "arrayvec" -version = "0.7.4" +name = "async-task" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9" [[package]] -name = "async-stream" -version = "0.3.5" +name = "async-trait" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "async-stream-impl" -version = "0.3.5" +name = "atomic-waker" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" [[package]] -name = "async-trait" -version = "0.1.74" +name = "autocfg" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] -name = "atty" -version = "0.2.14" +name = "backtrace" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" dependencies = [ - "hermit-abi 0.1.19", + "addr2line", + "cc", + "cfg-if 1.0.0", "libc", - "winapi", + "miniz_oxide", + "object", + "rustc-demangle", ] -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - [[package]] name = "base64" version = "0.11.0" @@ -267,38 +214,25 @@ checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" [[package]] name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" - -[[package]] -name = "base64ct" -version = "1.6.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "binary-install" -version = "0.2.0" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93bff426ff93f3610dd2b946f3eb8cb2d1285ca8682834d43be531a3f93db2ff" +checksum = "7b5bc5f8c50dd6a80d0b303ddab79f42ddcb52fd43d68107ecf622c551fd4cd4" dependencies = [ - "anyhow", - "dirs-next", + "curl", + "dirs 1.0.5", + "failure", "flate2", - "fs2", - "hex", + "hex 0.3.2", "is_executable", "siphasher", "tar", - "ureq", - "zip 0.6.6", + "zip", ] [[package]] @@ -307,34 +241,16 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "bitflags" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" - [[package]] name = "bitvec" version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" dependencies = [ - "funty 1.1.0", - "radium 0.6.2", - "tap", - "wyz 0.2.0", -] - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty 2.0.0", - "radium 0.7.0", + "funty", + "radium", "tap", - "wyz 0.5.1", + "wyz", ] [[package]] @@ -349,144 +265,98 @@ dependencies = [ ] [[package]] -name = "block-buffer" -version = "0.9.0" +name = "blake2b_simd" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" dependencies = [ - "generic-array", + "arrayref", + "arrayvec 0.5.2", + "constant_time_eq", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ + "block-padding", "generic-array", ] [[package]] -name = "borsh" -version = "0.9.3" +name = "block-buffer" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" dependencies = [ - "borsh-derive 0.9.3", - "hashbrown 0.11.2", + "generic-array", ] [[package]] -name = "borsh" -version = "0.10.3" +name = "block-padding" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" -dependencies = [ - "borsh-derive 0.10.3", - "hashbrown 0.13.2", -] +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] -name = "borsh" -version = "1.1.1" +name = "blocking" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e3f7359eeed8d454c38bbb25eb89d98b888b1060bbfeed2cda71cb013ff2dc2" +checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" dependencies = [ - "borsh-derive 1.1.1", - "cfg_aliases", + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", ] [[package]] -name = "borsh-derive" -version = "0.9.3" +name = "borsh" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +checksum = "18dda7dc709193c0d86a1a51050a926dc3df1cf262ec46a23a25dba421ea1924" dependencies = [ - "borsh-derive-internal 0.9.3", - "borsh-schema-derive-internal 0.9.3", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", + "borsh-derive", + "hashbrown 0.9.1", ] [[package]] name = "borsh-derive" -version = "0.10.3" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +checksum = "684155372435f578c0fa1acd13ebbb182cc19d6b38b64ae7901da4393217d264" dependencies = [ - "borsh-derive-internal 0.10.3", - "borsh-schema-derive-internal 0.10.3", + "borsh-derive-internal", + "borsh-schema-derive-internal", "proc-macro-crate 0.1.5", "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "318d18ba283f9aa5bfef1405996ce66c584127f401be1403729ec88b10adc772" -dependencies = [ - "once_cell", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 2.0.38", - "syn_derive", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "borsh-derive-internal" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.9.3" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +checksum = "2102f62f8b6d3edeab871830782285b64cc1830168094db05c8e458f209bc5c3" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "borsh-schema-derive-internal" -version = "0.10.3" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +checksum = "196c978c4c9b0b142d446ef3240690bf5a8a33497074a113ff9a337ccb750483" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", -] - -[[package]] -name = "brownstone" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030ea61398f34f1395ccbeb046fb68c87b631d1f34567fed0f0f11fa35d18d8d" -dependencies = [ - "arrayvec 0.7.4", + "syn", ] [[package]] @@ -495,53 +365,41 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" -[[package]] -name = "bs58" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" -dependencies = [ - "tinyvec", -] - [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "1d30c751592b77c499e7bce34d99d67c2c11bdc0574e9a488ddade14150a4698" [[package]] name = "byteorder" -version = "1.5.0" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.5.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" [[package]] name = "bytesize" -version = "1.3.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" -dependencies = [ - "serde", -] +checksum = "6c58ec36aac5066d5ca17df51b3e70279f5670a72102f5752cb7e7c856adfc70" [[package]] name = "bzip2" -version = "0.4.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" dependencies = [ "bzip2-sys", "libc", @@ -564,75 +422,21 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" dependencies = [ - "cipher 0.2.5", + "cipher", "ppv-lite86", ] [[package]] -name = "camino" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-near" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f73eb01da3b6737778d2006645533e75563d1080c64bf714bfb88d3fb0ac09b" -dependencies = [ - "anyhow", - "atty", - "bs58 0.4.0", - "camino", - "cargo_metadata", - "clap 3.2.25", - "colored", - "env_logger", - "libloading", - "log", - "near-abi", - "rustc_version", - "schemars", - "serde_json", - "sha2 0.10.8", - "symbolic-debuginfo", - "zstd", -] - -[[package]] -name = "cargo-platform" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.14.2" +name = "cache-padded" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", -] +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "jobserver", - "libc", -] +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" [[package]] name = "cfg-if" @@ -646,25 +450,18 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", + "libc", + "num-integer", "num-traits", "serde", - "wasm-bindgen", - "windows-targets", + "time", + "winapi", ] [[package]] @@ -677,109 +474,12 @@ dependencies = [ ] [[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - -[[package]] -name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_derive 3.2.25", - "clap_lex 0.2.4", - "indexmap 1.9.3", - "once_cell", - "strsim", - "termcolor", - "textwrap", -] - -[[package]] -name = "clap" -version = "4.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" -dependencies = [ - "clap_builder", - "clap_derive 4.4.7", -] - -[[package]] -name = "clap_builder" -version = "4.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" -dependencies = [ - "anstream", - "anstyle", - "clap_lex 0.6.0", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" -dependencies = [ - "heck 0.4.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "clap_derive" -version = "4.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", -] - -[[package]] -name = "clap_lex" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" - -[[package]] -name = "colorchoice" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" - -[[package]] -name = "colored" -version = "2.0.4" +name = "concurrent-queue" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" +checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" dependencies = [ - "is-terminal", - "lazy_static", - "windows-sys", + "cache-padded", ] [[package]] @@ -806,15 +506,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" dependencies = [ "libc", ] @@ -830,9 +530,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.8" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -840,11 +540,12 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" dependencies = [ "cfg-if 1.0.0", + "lazy_static", ] [[package]] @@ -874,109 +575,61 @@ dependencies = [ ] [[package]] -name = "curve25519-dalek" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - -[[package]] -name = "darling" -version = "0.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.38", -] - -[[package]] -name = "darling_macro" -version = "0.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "debugid" -version = "0.7.3" +name = "curl" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ee87af31d84ef885378aebca32be3d682b0e0dc119d5b4860a2c5bb5046730" -dependencies = [ - "uuid", -] - -[[package]] -name = "defer-stub" -version = "0.1.0" +checksum = "37d855aeef205b43f65a5001e0997d81f8efca7badad4fad7d897aa7f0d0651f" dependencies = [ - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2", + "winapi", ] [[package]] -name = "deranged" -version = "0.3.9" +name = "curl-sys" +version = "0.4.53+curl-7.82.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "8092905a5a9502c312f223b2775f57ec5c5b715f9a15ee9d2a8591d1364a0352" dependencies = [ - "powerfmt", - "serde", + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "winapi", ] [[package]] -name = "derive_arbitrary" -version = "1.3.1" +name = "curve25519-dalek" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e0efad4403bfc52dc201159c4b842a246a14b98c64b55dfd0f2d89729dfeb8" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", ] [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38df" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 1.0.109", + "syn", ] -[[package]] -name = "deunicode" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a1abaf4d861455be59f64fd2b55606cb151fce304ede7165f410243ce96bde6" - [[package]] name = "digest" version = "0.9.0" @@ -988,53 +641,44 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.7" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ - "block-buffer 0.10.4", + "block-buffer 0.10.2", "crypto-common", - "subtle", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", ] [[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "dirs" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" dependencies = [ "libc", - "redox_users", + "redox_users 0.3.5", "winapi", ] [[package]] -name = "dmsort" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0bc8fbe9441c17c9f46f75dfe27fa1ddb6c68a461ccaed0481419219d4f10d3" - -[[package]] -name = "dotenv" -version = "0.15.0" +name = "dirs" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +dependencies = [ + "dirs-sys", +] [[package]] -name = "dyn-clone" -version = "1.0.14" +name = "dirs-sys" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users 0.4.3", + "winapi", +] [[package]] name = "easy-ext" @@ -1044,9 +688,9 @@ checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" [[package]] name = "ed25519" -version = "1.5.3" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +checksum = "74e1069e39f1454367eb2de793ed062fac4c35c2934b76a81d90dd9abcd28816" dependencies = [ "signature", ] @@ -1061,116 +705,78 @@ dependencies = [ "ed25519", "rand 0.7.3", "serde", - "sha2 0.9.9", + "sha2 0.9.8", "zeroize", ] -[[package]] -name = "either" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" - -[[package]] -name = "elementtree" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6319c9433cf1e95c60c8533978bccf0614f27f03bb4e514253468eeeaa7fe3" -dependencies = [ - "string_cache", - "xml-rs", -] - [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" dependencies = [ "cfg-if 1.0.0", ] [[package]] -name = "enum-map" -version = "2.7.0" +name = "event-listener" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53337c2dbf26a3c31eccc73a37b10c1614e8d4ae99b6a50d553e8936423c1f16" -dependencies = [ - "enum-map-derive", -] +checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" [[package]] -name = "enum-map-derive" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d0b288e3bb1d861c4403c1774a6f7a798781dfc519b3647df2a3dd4ae95f25" +name = "examples" +version = "0.0.0" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", + "anyhow", + "near-sdk", + "near-units", + "serde_json", + "tokio", + "workspaces", ] [[package]] -name = "env_logger" -version = "0.9.3" +name = "failure" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", + "backtrace", + "failure_derive", ] [[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.5" +name = "failure_derive" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ - "libc", - "windows-sys", + "proc-macro2", + "quote", + "syn", + "synstructure", ] [[package]] -name = "fake" -version = "2.9.1" +name = "fastrand" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26221445034074d46b276e13eb97a265ebdb8ed8da705c4dddd3dd20b66b45d2" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" dependencies = [ - "deunicode", - "rand 0.8.5", + "instant", ] -[[package]] -name = "fallible-iterator" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" - -[[package]] -name = "fastrand" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" - [[package]] name = "filetime" -version = "0.2.22" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.3.5", - "windows-sys", + "redox_syscall 0.2.13", + "winapi", ] [[package]] @@ -1180,24 +786,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" dependencies = [ "byteorder", - "rand 0.8.5", + "rand 0.8.4", "rustc-hex", "static_assertions", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" dependencies = [ + "cfg-if 1.0.0", "crc32fast", + "libc", "miniz_oxide", ] @@ -1224,129 +826,85 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" dependencies = [ + "matches", "percent-encoding", ] -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "funty" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" dependencies = [ "futures-core", - "futures-sink", ] [[package]] name = "futures-core" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" - -[[package]] -name = "futures-executor" -version = "0.3.29" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" [[package]] -name = "futures-macro" -version = "0.3.29" +name = "futures-lite" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ - "futures-channel", "futures-core", - "futures-io", - "futures-macro", - "futures-sink", "futures-task", - "memchr", "pin-project-lite", "pin-utils", - "slab", ] [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" dependencies = [ "typenum", "version_check", @@ -1365,41 +923,26 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ "cfg-if 1.0.0", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.10.2+wasi-snapshot-preview1", ] [[package]] name = "gimli" -version = "0.26.2" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" -dependencies = [ - "fallible-iterator", - "stable_deref_trait", -] - -[[package]] -name = "goblin" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" -dependencies = [ - "log", - "plain", - "scroll 0.11.0", -] +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] name = "h2" -version = "0.3.21" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" dependencies = [ "bytes", "fnv", @@ -1407,42 +950,27 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap", "slab", "tokio", - "tokio-util 0.7.10", + "tokio-util 0.7.1", "tracing", ] [[package]] name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash 0.7.7", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.13.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" dependencies = [ - "ahash 0.8.6", + "ahash", ] [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" [[package]] name = "heck" @@ -1455,9 +983,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" [[package]] name = "hermit-abi" @@ -1469,54 +997,42 @@ dependencies = [ ] [[package]] -name = "hermit-abi" -version = "0.3.3" +name = "hex" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] [[package]] name = "home" -version = "0.5.5" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "2456aef2e6b6a9784192ae780c0f15bc57df0e918585282325e8c8ac27737654" dependencies = [ - "windows-sys", + "winapi", ] [[package]] name = "http" -version = "0.2.9" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" dependencies = [ "bytes", "fnv", - "itoa", + "itoa 1.0.1", ] [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" dependencies = [ "bytes", "http", @@ -1525,27 +1041,21 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" [[package]] name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humantime" -version = "2.1.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "b26ae0a80afebe130861d90abf98e3814a4f28a4c6ffeb5ab8ebb2be311e0ef2" dependencies = [ "bytes", "futures-channel", @@ -1556,7 +1066,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa", + "itoa 1.0.1", "pin-project-lite", "socket2", "tokio", @@ -1565,18 +1075,6 @@ dependencies = [ "want", ] -[[package]] -name = "hyper-timeout" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] - [[package]] name = "hyper-tls" version = "0.5.0" @@ -1590,41 +1088,13 @@ dependencies = [ "tokio-native-tls", ] -[[package]] -name = "iana-time-zone" -version = "0.1.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - [[package]] name = "idna" -version = "0.4.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" dependencies = [ + "matches", "unicode-bidi", "unicode-normalization", ] @@ -1640,117 +1110,39 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "d5dacb10c5b3bb92d46ba347505a9041e676bb20ad220101326bffb0c93031ee" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] -[[package]] -name = "indent_write" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" - [[package]] name = "indexmap" -version = "1.9.3" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" dependencies = [ "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" -dependencies = [ - "equivalent", - "hashbrown 0.14.2", - "serde", + "hashbrown 0.11.2", ] [[package]] -name = "inout" -version = "0.1.3" +name = "instant" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "integration-tests" -version = "1.0.0" -dependencies = [ - "anyhow", - "async-trait", - "borsh 0.10.3", - "integration-utils", - "maplit", - "near-contract-standards", - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", - "near-units", - "near-workspaces", - "pkg-config", - "serde_json", - "sweat-integration", - "sweat-model", - "tokio", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "integration-trait" -version = "0.1.0" -source = "git+https://github.com/sweatco/integration-trait.git?rev=83a69f7ba4acab9405bf935f7dfc70f2f5279c40#83a69f7ba4acab9405bf935f7dfc70f2f5279c40" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "integration-utils" -version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=1b05c03351009c901a45400687c24f685f8b81c3#1b05c03351009c901a45400687c24f685f8b81c3" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "anyhow", - "async-trait", - "dotenv", - "fake", - "futures", - "itertools 0.11.0", - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", - "near-units", - "near-workspaces", - "tokio", + "cfg-if 1.0.0", ] [[package]] name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[package]] -name = "is-terminal" -version = "0.4.9" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" -dependencies = [ - "hermit-abi 0.3.3", - "rustix", - "windows-sys", -] +checksum = "35e70ee094dc02fd9c13fdad4940090f22dbd6ac7c9e7094a46cf0232a50bc7c" [[package]] name = "is_executable" @@ -1761,163 +1153,86 @@ dependencies = [ "winapi", ] -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - -[[package]] -name = "jobserver" -version = "0.1.27" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" -dependencies = [ - "libc", -] +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] -name = "joinery" -version = "2.1.0" +name = "itoa" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" dependencies = [ "wasm-bindgen", ] -[[package]] -name = "json-patch" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" -dependencies = [ - "serde", - "serde_json", - "thiserror", - "treediff", -] - -[[package]] -name = "json_comments" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ee439ee368ba4a77ac70d04f14015415af8600d6c894dc1f11bd79758c57d5" - [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" -dependencies = [ - "cpufeatures", -] +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -dependencies = [ - "spin 0.5.2", -] - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.149" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "ec647867e2bf0772e28c8bcde4f0d19a9216916e890543b5a03ed8ef27b8f259" [[package]] -name = "libloading" -version = "0.7.4" +name = "libz-sys" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "6f35facd4a5673cb5a48822be2be1d4236c1c99cb4113cab7061ac720d5bf859" dependencies = [ - "cfg-if 1.0.0", - "winapi", + "cc", + "libc", + "pkg-config", + "vcpkg", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" - [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "matchers" -version = "0.1.0" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" dependencies = [ - "regex-automata 0.1.10", + "cfg-if 1.0.0", ] [[package]] -name = "memchr" -version = "2.6.4" +name = "matches" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] -name = "memmap2" -version = "0.5.10" +name = "memchr" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memory_units" @@ -1927,47 +1242,48 @@ checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" [[package]] name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "minimal-lexical" -version = "0.2.1" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", + "autocfg", ] [[package]] name = "mio" -version = "0.8.9" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" dependencies = [ "libc", + "log", + "miow", + "ntapi", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "winapi", ] [[package]] -name = "multimap" -version = "0.8.3" +name = "miow" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", +] [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" dependencies = [ "lazy_static", "libc", @@ -1981,98 +1297,113 @@ dependencies = [ "tempfile", ] -[[package]] -name = "near-abi" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "885db39b08518fa700b73fa2214e8adbbfba316ba82dd510f50519173eadaf73" -dependencies = [ - "borsh 0.9.3", - "schemars", - "semver", - "serde", -] - [[package]] name = "near-account-id" -version = "0.14.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d258582a1878e6db67400b0504a5099db85718d22c2e07f747fe1706ae7150" +checksum = "5b81ee2cf429b8bc04046d94f725a4f192fe7b13f42d76649d0177fd9ea719d8" dependencies = [ - "borsh 0.9.3", + "borsh", "serde", ] [[package]] name = "near-account-id" -version = "0.17.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0cb40869cab7f5232f934f45db35bffe0f2d2a7cb0cd0346202fbe4ebf2dd7" +checksum = "de83d74a9241be8cc4eb3055216966b58bf8c463e8e285c0dc553925acdd19fa" dependencies = [ - "borsh 0.10.3", + "borsh", "serde", ] [[package]] name = "near-chain-configs" -version = "0.17.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f9a1c805846237d56f99b328ba6ab77e5d43ef59aaaf8d2a41d42fdc708a7b" +checksum = "a830a8ea64328e4d2553873df848a97a90d111cb838ff5e199bfce79b62b6c2b" dependencies = [ "anyhow", "chrono", "derive_more", - "near-config-utils", - "near-crypto 0.17.0", - "near-o11y", - "near-primitives 0.17.0", + "near-crypto 0.12.0", + "near-primitives 0.12.0", "num-rational", - "once_cell", "serde", "serde_json", - "sha2 0.10.8", + "sha2 0.9.8", "smart-default", "tracing", ] [[package]] -name = "near-config-utils" -version = "0.17.0" +name = "near-chain-primitives" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5523e7dce493c45bc3241eb3100d943ec471852f9b1f84b46a34789eadf17031" +checksum = "ff7984007ab1c73f101c5acf60a1e1f86a4afd47048df1e2412d4501794b43da" dependencies = [ - "anyhow", - "json_comments", + "chrono", + "failure", + "failure_derive", + "log", + "near-crypto 0.12.0", + "near-primitives 0.12.0", + "thiserror", +] + +[[package]] +name = "near-chunks-primitives" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "838c06b137c7452001fc826f2defa6328b2695aaa720df2f0d08e31e54f849f6" +dependencies = [ + "near-chain-primitives", +] + +[[package]] +name = "near-client-primitives" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc73ebfbb59defac9a17883467af98a14a37f53079dbcbdeec57c37d329de2b" +dependencies = [ + "actix", + "chrono", + "near-chain-configs", + "near-chain-primitives", + "near-chunks-primitives", + "near-crypto 0.12.0", + "near-network-primitives", + "near-primitives 0.12.0", + "strum 0.20.0", "thiserror", - "tracing", ] [[package]] name = "near-contract-standards" -version = "4.1.1" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" +version = "4.0.0" +source = "git+https://github.com/sweatco/near-sdk-rs?rev=af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b#af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" dependencies = [ - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", - "schemars", + "near-sdk", "serde", "serde_json", ] [[package]] name = "near-crypto" -version = "0.14.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e75673d69fd7365508f3d32483669fe45b03bfb34e4d9363e90adae9dfb416c" +checksum = "d301d3ca4f59ab69c4b8ff625e7b2ef624345f69ab651d15c5fd59382096d2b1" dependencies = [ "arrayref", "blake2", - "borsh 0.9.3", - "bs58 0.4.0", + "borsh", + "bs58", "c2-chacha", "curve25519-dalek", "derive_more", "ed25519-dalek", - "near-account-id 0.14.0", + "libc", + "near-account-id 0.12.0", "once_cell", "parity-secp256k1", "primitive-types", @@ -2086,25 +1417,25 @@ dependencies = [ [[package]] name = "near-crypto" -version = "0.17.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6b382b626e7e0cd372d027c6672ac97b4b6ee6114288c9e58d8180b935d315" +checksum = "b8ecf0b8b31aa7f4e60f629f72213a2617ca4a5f45cd1ae9ed2cf7cecfebdbb7" dependencies = [ + "arrayref", "blake2", - "borsh 0.10.3", - "bs58 0.4.0", + "borsh", + "bs58", "c2-chacha", "curve25519-dalek", "derive_more", "ed25519-dalek", - "hex", - "near-account-id 0.17.0", - "near-config-utils", - "near-stdx", + "libc", + "near-account-id 0.13.0", "once_cell", + "parity-secp256k1", "primitive-types", "rand 0.7.3", - "secp256k1", + "rand_core 0.5.1", "serde", "serde_json", "subtle", @@ -2112,290 +1443,235 @@ dependencies = [ ] [[package]] -name = "near-fmt" -version = "0.17.0" +name = "near-jsonrpc-client" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c44c842c6cfcd9b8c387cccd4cd0619a5f21920cde5d5c292af3cc5d40510672" +checksum = "bf00d43006d0768aba1ff4d24386192a7aed2ad7548e9301055b6494917b2cc7" dependencies = [ - "near-primitives-core 0.17.0", -] - -[[package]] -name = "near-gas" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b30860db1eceba9b445dc56558a0fdcdfe29fd612a088e697b32dfb681aaac" -dependencies = [ - "borsh 1.1.1", - "schemars", - "serde", -] - -[[package]] -name = "near-jsonrpc-client" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "118f44c02ad211db805c1370ad3ff26576af6ff554093c9fece1b835d29d233a" -dependencies = [ - "borsh 0.10.3", + "borsh", "lazy_static", - "log", "near-chain-configs", - "near-crypto 0.17.0", "near-jsonrpc-primitives", - "near-primitives 0.17.0", + "near-primitives 0.12.0", "reqwest", "serde", "serde_json", "thiserror", + "uuid", ] [[package]] name = "near-jsonrpc-primitives" -version = "0.17.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b2934b5ab243e25e951c984525ba0aff0e719ed915c988c5195405aa0f6987" +checksum = "33e636f8862e0f5f565fb02b752e16aa676fc684e81682bfbb39a964defea627" dependencies = [ - "arbitrary", + "actix", "near-chain-configs", - "near-crypto 0.17.0", - "near-primitives 0.17.0", - "near-rpc-error-macro 0.17.0", + "near-client-primitives", + "near-crypto 0.12.0", + "near-metrics", + "near-network-primitives", + "near-primitives 0.12.0", + "near-primitives-core 0.12.0", + "near-rpc-error-macro 0.12.0", + "once_cell", "serde", "serde_json", "thiserror", + "tracing", + "uuid", ] [[package]] -name = "near-o11y" -version = "0.17.0" +name = "near-metrics" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7d35397b02b131c188c72f3885e97daeccab134ec2fc8cc0073a94cf1cfe19" +checksum = "8df4074b56b24c73073b576bc27133182c8654d414be09ef666ad1e1d5ea8adb" dependencies = [ - "actix", - "atty", - "clap 4.4.7", - "near-crypto 0.17.0", - "near-primitives-core 0.17.0", - "once_cell", - "opentelemetry", - "opentelemetry-otlp", - "opentelemetry-semantic-conventions", + "lazy_static", + "log", "prometheus", - "serde", - "strum", - "thiserror", +] + +[[package]] +name = "near-network-primitives" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63ddab6f0376a0ce870947e1ea2e98eba746af2e7edfba5dc127bbd2a2508d6" +dependencies = [ + "actix", + "actix_derive", + "anyhow", + "borsh", + "chrono", + "near-crypto 0.12.0", + "near-primitives 0.12.0", + "strum 0.20.0", "tokio", "tracing", - "tracing-appender", - "tracing-opentelemetry", - "tracing-subscriber", ] [[package]] name = "near-primitives" -version = "0.14.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad1a9a1640539c81f065425c31bffcfbf6b31ef1aeaade59ce905f5df6ac860" +checksum = "ad6a0b49d322ebda81ec4fdd99dca804526539673d0b12133286e0d7934f4802" dependencies = [ - "borsh 0.9.3", + "borsh", "byteorder", "bytesize", "chrono", "derive_more", "easy-ext", - "hex", - "near-crypto 0.14.0", - "near-primitives-core 0.14.0", - "near-rpc-error-macro 0.14.0", - "near-vm-errors 0.14.0", + "hex 0.4.3", + "near-crypto 0.12.0", + "near-primitives-core 0.12.0", + "near-rpc-error-macro 0.12.0", + "near-vm-errors 0.12.0", "num-rational", - "once_cell", "primitive-types", "rand 0.7.3", "reed-solomon-erasure", "serde", "serde_json", "smart-default", - "strum", - "thiserror", ] [[package]] name = "near-primitives" -version = "0.17.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f7051aaf199adc4d068620fca6d5f70f906a1540d03a8bb3701271f8881835" +checksum = "0a2ba19282e79a4485a77736b679d276b09870bbf8042a18e0f0ae36347489c5" dependencies = [ - "arbitrary", - "borsh 0.10.3", + "borsh", + "byteorder", "bytesize", - "cfg-if 1.0.0", "chrono", "derive_more", "easy-ext", - "enum-map", - "hex", - "near-crypto 0.17.0", - "near-fmt", - "near-primitives-core 0.17.0", - "near-rpc-error-macro 0.17.0", - "near-stdx", - "near-vm-errors 0.17.0", + "hex 0.4.3", + "near-crypto 0.13.0", + "near-primitives-core 0.13.0", + "near-rpc-error-macro 0.13.0", + "near-vm-errors 0.13.0", "num-rational", "once_cell", "primitive-types", - "rand 0.8.5", + "rand 0.7.3", "reed-solomon-erasure", "serde", "serde_json", - "serde_with", - "serde_yaml", "smart-default", - "strum", + "strum 0.24.1", "thiserror", - "time", - "tracing", ] [[package]] name = "near-primitives-core" -version = "0.14.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d508f0fc340f6461e4e256417685720d3c4c00bb5a939b105160e49137caba" +checksum = "aaae2d2271ecdb0e3d90c11724cdb46d7d5bb50838fdb3941bfc381634cf08a3" dependencies = [ "base64 0.11.0", - "borsh 0.9.3", - "bs58 0.4.0", + "borsh", + "bs58", "derive_more", - "near-account-id 0.14.0", + "near-account-id 0.12.0", "num-rational", "serde", - "sha2 0.10.8", - "strum", + "sha2 0.9.8", ] [[package]] name = "near-primitives-core" -version = "0.17.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775fec19ef51a341abdbf792a9dda5b4cb89f488f681b2fd689b9321d24db47b" +checksum = "bb561feb392bb8c4f540256073446e6689af087bf6356e8dddcf75fc279f201f" dependencies = [ - "arbitrary", - "base64 0.21.5", - "borsh 0.10.3", - "bs58 0.4.0", + "base64 0.11.0", + "borsh", + "bs58", "derive_more", - "enum-map", - "near-account-id 0.17.0", + "near-account-id 0.13.0", "num-rational", "serde", - "serde_repr", - "serde_with", - "sha2 0.10.8", - "strum", - "thiserror", + "sha2 0.10.2", + "strum 0.24.1", ] [[package]] name = "near-rpc-error-core" -version = "0.14.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ee0b41c75ef859c193a8ff1dadfa0c8207bc0ac447cc22259721ad769a1408" +checksum = "d5b9fd54b177a2efc1203cd605dc3369289d9c2a74ddbfdfb372feb13be38060" dependencies = [ "quote", "serde", - "syn 1.0.109", + "syn", ] [[package]] name = "near-rpc-error-core" -version = "0.17.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c1eda300e2e78f4f945ae58117d49e806899f4a51ee2faa09eda5ebc2e6571" +checksum = "77fdd7ea8d8f786878651c37691515d5053f827ae60894aa40c16882b78f77c9" dependencies = [ "quote", "serde", - "syn 2.0.38", + "syn", ] [[package]] name = "near-rpc-error-macro" -version = "0.14.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e837bd4bacd807073ec5ceb85708da7f721b46a4c2a978de86027fb0034ce31" +checksum = "a38f5469f86f3c8ce0f39828f10a9c6aca2581d71a5c176a1c9be7e7eb4511a3" dependencies = [ - "near-rpc-error-core 0.14.0", + "near-rpc-error-core 0.12.0", "serde", - "syn 1.0.109", + "syn", ] [[package]] name = "near-rpc-error-macro" -version = "0.17.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31d2dadd765101c77e664029dd6fbec090e696877d4ae903c620d02ceda4969a" +checksum = "e521842b6ae864dfe5391afbbe2df9e9d8427c26e9333b2e0b65cd42094f7607" dependencies = [ - "fs2", - "near-rpc-error-core 0.17.0", + "near-rpc-error-core 0.13.0", "serde", - "syn 2.0.38", + "syn", ] [[package]] name = "near-sandbox-utils" -version = "0.7.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2de216bb0152bfb64f59016d9e6a5b1ac56dd85f729e5fde08461571e2182c8f" +checksum = "0a543af5c633d7351ff92bbb523f040ffd393b7460d10ee7478282221a57abcf" dependencies = [ "anyhow", + "async-process", "binary-install", "chrono", - "fs2", + "hex 0.3.2", "home", - "tokio", -] - -[[package]] -name = "near-sdk" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15eb3de2defe3626260cc209a6cdb985c6b27b0bd4619fad97dcfae002c3c5bd" -dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58 0.4.0", - "near-abi", - "near-crypto 0.14.0", - "near-primitives 0.14.0", - "near-primitives-core 0.14.0", - "near-sdk-macros 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "near-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "near-vm-logic", - "once_cell", - "schemars", - "serde", - "serde_json", - "wee_alloc", ] [[package]] name = "near-sdk" -version = "4.1.1" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" -dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58 0.4.0", - "near-abi", - "near-crypto 0.14.0", - "near-primitives 0.14.0", - "near-primitives-core 0.14.0", - "near-sdk-macros 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", - "near-sys 0.2.0 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", +version = "4.0.0" +source = "git+https://github.com/sweatco/near-sdk-rs?rev=af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b#af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" +dependencies = [ + "base64 0.13.0", + "borsh", + "bs58", + "near-crypto 0.13.0", + "near-primitives 0.13.0", + "near-primitives-core 0.13.0", + "near-sdk-macros", + "near-sys", "near-vm-logic", - "once_cell", - "schemars", "serde", "serde_json", "wee_alloc", @@ -2403,52 +1679,19 @@ dependencies = [ [[package]] name = "near-sdk-macros" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4907affc9f5ed559456509188ff0024f1f2099c0830e6bdb66eb61d5b75912c0" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "near-sdk-macros" -version = "4.1.1" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" +version = "4.0.0" +source = "git+https://github.com/sweatco/near-sdk-rs?rev=af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b#af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] -[[package]] -name = "near-stdx" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6540152fba5e96fe5d575b79e8cd244cf2add747bb01362426bdc069bc3a23bc" - -[[package]] -name = "near-sys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" - [[package]] name = "near-sys" version = "0.2.0" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" - -[[package]] -name = "near-token" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b68f3f8a2409f72b43efdbeff8e820b81e70824c49fee8572979d789d1683fb" -dependencies = [ - "serde", -] +source = "git+https://github.com/sweatco/near-sdk-rs?rev=af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b#af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" [[package]] name = "near-units" @@ -2479,130 +1722,66 @@ dependencies = [ "near-units-core", "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "near-vm-errors" -version = "0.14.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0da466a30f0446639cbd788c30865086fac3e8dcb07a79e51d2b0775ed4261e" +checksum = "5092bbad4e16e48423d9be92e18b84af8e128c263df66d867a3f99c560b3cb28" dependencies = [ - "borsh 0.9.3", - "near-account-id 0.14.0", - "near-rpc-error-macro 0.14.0", + "borsh", + "near-account-id 0.12.0", + "near-rpc-error-macro 0.12.0", "serde", ] [[package]] name = "near-vm-errors" -version = "0.17.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec545d1bede0579e7c15dd2dce9b998dc975c52f2165702ff40bec7ff69728bb" +checksum = "0e02faf2bc1f6ef82b965cfe44389808fb5594f7aca4b596766117f4ce74df20" dependencies = [ - "borsh 0.10.3", - "near-account-id 0.17.0", - "near-rpc-error-macro 0.17.0", + "borsh", + "near-account-id 0.13.0", + "near-rpc-error-macro 0.13.0", "serde", - "strum", - "thiserror", ] [[package]] name = "near-vm-logic" -version = "0.14.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b534828419bacbf1f7b11ef7b00420f248c548c485d3f0cfda8bb6931152f2" +checksum = "f024d90451cd3c24d7a0a5cabf3636b192a60eb8e3ff0456f6c18b91152c346d" dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58 0.4.0", + "base64 0.13.0", + "borsh", + "bs58", "byteorder", - "near-account-id 0.14.0", - "near-crypto 0.14.0", - "near-primitives 0.14.0", - "near-primitives-core 0.14.0", - "near-vm-errors 0.14.0", + "near-account-id 0.13.0", + "near-crypto 0.13.0", + "near-primitives 0.13.0", + "near-primitives-core 0.13.0", + "near-vm-errors 0.13.0", "ripemd", "serde", - "sha2 0.10.8", + "sha2 0.9.8", "sha3", - "zeropool-bn", -] - -[[package]] -name = "near-workspaces" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a14e772e49ba9644c06dad20f635b6463f74d378fa19822bfc35fef479c72e5" -dependencies = [ - "async-trait", - "base64 0.21.5", - "borsh 0.10.3", - "bs58 0.5.0", - "cargo-near", - "chrono", - "fs2", - "json-patch", - "libc", - "near-account-id 0.17.0", - "near-crypto 0.17.0", - "near-gas", - "near-jsonrpc-client", - "near-jsonrpc-primitives", - "near-primitives 0.17.0", - "near-sandbox-utils", - "near-sdk 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "near-token", - "rand 0.8.5", - "reqwest", - "serde", - "serde_json", - "sha2 0.10.8", - "tempfile", - "thiserror", - "tokio", - "tokio-retry", - "tracing", - "url", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", ] [[package]] -name = "nom-supreme" -version = "0.6.0" +name = "nodrop" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aadc66631948f6b65da03be4c4cd8bd104d481697ecbb9bbd65719b1ec60bc9f" -dependencies = [ - "brownstone", - "indent_write", - "joinery", - "memchr", - "nom", -] +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" [[package]] -name = "nu-ansi-term" -version = "0.46.0" +name = "ntapi" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" dependencies = [ - "overload", "winapi", ] @@ -2619,19 +1798,19 @@ dependencies = [ [[package]] name = "num-format" -version = "0.4.4" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465" dependencies = [ - "arrayvec 0.7.4", - "itoa", + "arrayvec 0.4.12", + "itoa 0.4.8", ] [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ "autocfg", "num-traits", @@ -2652,28 +1831,37 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi", "libc", ] +[[package]] +name = "object" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" -version = "1.18.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" [[package]] name = "opaque-debug" @@ -2683,30 +1871,18 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.57" +version = "0.10.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" +checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" dependencies = [ - "bitflags 2.4.1", + "bitflags", "cfg-if 1.0.0", "foreign-types", "libc", "once_cell", - "openssl-macros", "openssl-sys", ] -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - [[package]] name = "openssl-probe" version = "0.1.5" @@ -2715,84 +1891,25 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.93" +version = "0.9.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" +checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" dependencies = [ + "autocfg", "cc", "libc", "pkg-config", "vcpkg", ] -[[package]] -name = "opentelemetry" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" -dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror", - "tokio", - "tokio-stream", -] - -[[package]] -name = "opentelemetry-otlp" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1a6ca9de4c8b00aa7f1a153bd76cb263287155cec642680d79d98706f3d28a" -dependencies = [ - "async-trait", - "futures", - "futures-util", - "http", - "opentelemetry", - "prost", - "thiserror", - "tokio", - "tonic", - "tonic-build", -] - -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "985cc35d832d412224b2cffe2f9194b1b89b6aa5d0bef76d080dce09d90e62bd" -dependencies = [ - "opentelemetry", -] - -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "parity-scale-codec" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ - "arrayvec 0.7.4", - "bitvec 0.20.4", + "arrayvec 0.7.2", + "bitvec", "byte-slice-cast", "impl-trait-for-tuples", "parity-scale-codec-derive", @@ -2805,10 +1922,10 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] @@ -2824,112 +1941,99 @@ dependencies = [ ] [[package]] -name = "parking_lot" -version = "0.12.1" +name = "parking" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" [[package]] -name = "parking_lot_core" -version = "0.9.9" +name = "parking_lot" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.4.1", - "smallvec", - "windows-targets", + "instant", + "lock_api", + "parking_lot_core 0.8.5", ] [[package]] -name = "password-hash" -version = "0.4.2" +name = "parking_lot" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", + "lock_api", + "parking_lot_core 0.9.2", ] [[package]] -name = "pbkdf2" -version = "0.11.0" +name = "parking_lot_core" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" dependencies = [ - "digest 0.10.7", - "hmac", - "password-hash", - "sha2 0.10.8", + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall 0.2.13", + "smallvec", + "winapi", ] [[package]] -name = "pdb" -version = "0.7.0" +name = "parking_lot_core" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13f4d162ecaaa1467de5afbe62d597757b674b51da8bb4e587430c5fdb2af7aa" +checksum = "995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37" dependencies = [ - "fallible-iterator", - "scroll 0.10.2", - "uuid", + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.13", + "smallvec", + "windows-sys", ] [[package]] name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "petgraph" -version = "0.6.4" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" -dependencies = [ - "fixedbitset", - "indexmap 2.0.2", -] +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] -name = "phf_shared" -version = "0.10.0" +name = "pest" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" dependencies = [ - "siphasher", + "ucd-trie", ] [[package]] name = "pin-project" -version = "1.1.3" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" [[package]] name = "pin-utils" @@ -2939,33 +2043,37 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] -name = "plain" -version = "0.2.3" +name = "polling" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "log", + "wepoll-ffi", + "winapi", +] [[package]] -name = "powerfmt" -version = "0.2.0" +name = "portpicker" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" +dependencies = [ + "rand 0.8.4", +] [[package]] name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "precomputed-hash" -version = "0.1.1" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "primitive-types" @@ -2989,126 +2097,49 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" dependencies = [ - "once_cell", - "toml_edit", + "thiserror", + "toml", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro2" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", + "unicode-xid", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "prometheus" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "c8425533e7122f0c3cc7a37e6244b16ad3a2cc32ae7ac6276e2a75da0d9c200d" dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "prometheus" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" -dependencies = [ - "cfg-if 1.0.0", - "fnv", - "lazy_static", - "memchr", - "parking_lot", - "protobuf", - "thiserror", -] - -[[package]] -name = "prost" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-build" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" -dependencies = [ - "bytes", - "heck 0.3.3", - "itertools 0.10.5", - "lazy_static", - "log", - "multimap", - "petgraph", - "prost", - "prost-types", - "regex", - "tempfile", - "which", -] - -[[package]] -name = "prost-derive" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" -dependencies = [ - "anyhow", - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "prost-types" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" -dependencies = [ - "bytes", - "prost", + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "parking_lot 0.11.2", + "protobuf", + "regex", + "thiserror", ] [[package]] name = "protobuf" -version = "2.28.0" +version = "2.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" +checksum = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96" [[package]] name = "quote" -version = "1.0.33" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" dependencies = [ "proc-macro2", ] @@ -3119,12 +2150,6 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - [[package]] name = "rand" version = "0.7.3" @@ -3135,18 +2160,19 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc", + "rand_hc 0.2.0", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" dependencies = [ "libc", "rand_chacha 0.3.1", - "rand_core 0.6.4", + "rand_core 0.6.3", + "rand_hc 0.3.1", ] [[package]] @@ -3166,7 +2192,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", + "rand_core 0.6.3", ] [[package]] @@ -3180,11 +2206,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.4" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.3", ] [[package]] @@ -3197,30 +2223,38 @@ dependencies = [ ] [[package]] -name = "redox_syscall" -version = "0.2.16" +name = "rand_hc" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" dependencies = [ - "bitflags 1.3.2", + "rand_core 0.6.3", ] [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] -name = "redox_syscall" -version = "0.4.1" +name = "redox_users" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" dependencies = [ - "bitflags 1.3.2", + "getrandom 0.1.16", + "redox_syscall 0.1.57", + "rust-argon2", ] [[package]] @@ -3229,8 +2263,8 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.10", - "redox_syscall 0.2.16", + "getrandom 0.2.3", + "redox_syscall 0.2.13", "thiserror", ] @@ -3245,55 +2279,37 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.3", - "regex-syntax 0.8.2", + "regex-syntax", ] [[package]] -name = "regex-automata" -version = "0.1.10" +name = "regex-syntax" +version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" [[package]] -name = "regex-automata" -version = "0.4.3" +name = "remove_dir_all" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.2", + "winapi", ] -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" - [[package]] name = "reqwest" -version = "0.11.22" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "46a1f7aa4f35e5e8b4160449f51afc758f0ce6454315a9fa7d0d113e958c41eb" dependencies = [ - "base64 0.21.5", + "base64 0.13.0", "bytes", "encoding_rs", "futures-core", @@ -3305,19 +2321,17 @@ dependencies = [ "hyper-tls", "ipnet", "js-sys", + "lazy_static", "log", "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", "serde", "serde_json", "serde_urlencoded", - "system-configuration", "tokio", "tokio-native-tls", - "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", @@ -3326,28 +2340,32 @@ dependencies = [ ] [[package]] -name = "ring" -version = "0.17.5" +name = "ripemd" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" +checksum = "1facec54cb5e0dc08553501fa740091086d0259ad0067e0d4103448e4cb22ed3" dependencies = [ - "cc", - "getrandom 0.2.10", - "libc", - "spin 0.9.8", - "untrusted", - "windows-sys", + "digest 0.10.3", ] [[package]] -name = "ripemd" -version = "0.1.3" +name = "rust-argon2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" dependencies = [ - "digest 0.10.7", + "base64 0.13.0", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", ] +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -3356,161 +2374,48 @@ checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "0.38.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" -dependencies = [ - "bitflags 2.4.1", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "rustls" -version = "0.21.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" -dependencies = [ - "log", - "ring", - "rustls-webpki", - "sct", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "schannel" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "schemars" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.15" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 1.0.109", + "lazy_static", + "winapi", ] [[package]] name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "scroll" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" - -[[package]] -name = "scroll" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" -dependencies = [ - "scroll_derive", -] - -[[package]] -name = "scroll_derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "secp256k1" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" -dependencies = [ - "rand 0.8.5", - "secp256k1-sys", -] - -[[package]] -name = "secp256k1-sys" -version = "0.8.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" -dependencies = [ - "cc", -] +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "security-framework" -version = "2.9.2" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -3519,9 +2424,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" dependencies = [ "core-foundation-sys", "libc", @@ -3529,66 +2434,53 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ - "serde", + "semver-parser", ] [[package]] -name = "serde" -version = "1.0.190" +name = "semver-parser" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" dependencies = [ - "serde_derive", + "pest", ] [[package]] -name = "serde_derive" -version = "1.0.190" +name = "serde" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", + "serde_derive", ] [[package]] -name = "serde_derive_internals" -version = "0.26.0" +name = "serde_derive" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "063bf466a64011ac24040a49009724ee60a57da1b437617ceb32e53ad61bfb19" dependencies = [ - "itoa", + "itoa 0.4.8", "ryu", "serde", ] -[[package]] -name = "serde_repr" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -3596,69 +2488,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" -dependencies = [ - "base64 0.21.5", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.0.2", - "serde", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "serde_yaml" -version = "0.9.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c" -dependencies = [ - "indexmap 2.0.2", - "itoa", + "itoa 1.0.1", "ryu", "serde", - "unsafe-libyaml", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.10.7", ] [[package]] name = "sha2" -version = "0.9.9" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", @@ -3669,69 +2508,69 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.7", + "digest 0.10.3", ] [[package]] name = "sha3" -version = "0.10.8" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" dependencies = [ - "digest 0.10.7", + "block-buffer 0.9.0", + "digest 0.9.0", "keccak", + "opaque-debug", ] [[package]] -name = "sharded-slab" -version = "0.1.7" +name = "signal-hook" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +checksum = "647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d" dependencies = [ - "lazy_static", + "libc", + "signal-hook-registry", ] [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" dependencies = [ "libc", ] [[package]] name = "signature" -version = "1.6.4" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4" [[package]] name = "siphasher" -version = "0.3.11" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" [[package]] name = "smallvec" -version = "1.11.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" [[package]] name = "smart-default" @@ -3741,37 +2580,19 @@ checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "socket2" -version = "0.4.10" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" dependencies = [ "libc", "winapi", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - [[package]] name = "static_assertions" version = "1.1.0" @@ -3779,32 +2600,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "string_cache" -version = "0.8.7" +name = "strum" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared", - "precomputed-hash", - "serde", + "strum_macros 0.20.1", ] -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "strum" version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" dependencies = [ - "strum_macros", + "strum_macros 0.24.3", +] + +[[package]] +name = "strum_macros" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -3813,149 +2635,49 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck 0.4.1", + "heck 0.4.0", "proc-macro2", "quote", "rustversion", - "syn 1.0.109", + "syn", ] [[package]] name = "subtle" -version = "2.5.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "sweat" version = "0.1.0" dependencies = [ "near-contract-standards", - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-sdk", "static_assertions", - "sweat-model", -] - -[[package]] -name = "sweat-integration" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-trait", - "integration-utils", - "near-contract-standards", - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", - "near-units", - "near-workspaces", - "sweat-model", -] - -[[package]] -name = "sweat-model" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-trait", - "integration-trait", - "near-contract-standards", - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", -] - -[[package]] -name = "symbolic-common" -version = "8.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f551f902d5642e58039aee6a9021a61037926af96e071816361644983966f540" -dependencies = [ - "debugid", - "memmap2", - "stable_deref_trait", - "uuid", -] - -[[package]] -name = "symbolic-debuginfo" -version = "8.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165dabf9fc1d6bb6819c2c0e27c8dd0e3068d2c53cf186d319788e96517f0d6" -dependencies = [ - "bitvec 1.0.1", - "dmsort", - "elementtree", - "fallible-iterator", - "flate2", - "gimli", - "goblin", - "lazy_static", - "lazycell", - "nom", - "nom-supreme", - "parking_lot", - "pdb", - "regex", - "scroll 0.11.0", - "serde", - "serde_json", - "smallvec", - "symbolic-common", - "thiserror", - "wasmparser", - "zip 0.5.13", ] [[package]] name = "syn" -version = "1.0.109" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "a4eac2e6c19f5c3abc0c229bea31ff0b9b091c7b14990e8924b92902a303a0c0" dependencies = [ "proc-macro2", "quote", - "unicode-ident", + "unicode-xid", ] [[package]] -name = "syn" -version = "2.0.38" +name = "synstructure" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", - "unicode-ident", -] - -[[package]] -name = "syn_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", + "syn", + "unicode-xid", ] [[package]] @@ -3966,9 +2688,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.40" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" dependencies = [ "filetime", "libc", @@ -3977,521 +2699,268 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ "cfg-if 1.0.0", "fastrand", - "redox_syscall 0.4.1", - "rustix", - "windows-sys", -] - -[[package]] -name = "termcolor" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" -dependencies = [ - "winapi-util", + "libc", + "redox_syscall 0.2.13", + "remove_dir_all", + "winapi", ] -[[package]] -name = "textwrap" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" - [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if 1.0.0", - "once_cell", + "syn", ] [[package]] name = "time" -version = "0.3.30" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" dependencies = [ - "deranged", - "itoa", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" -dependencies = [ - "time-core", + "libc", + "winapi", ] [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.28.2" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" +checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" dependencies = [ - "autocfg", "bytes", "libc", + "memchr", "mio", "num_cpus", - "parking_lot", + "once_cell", + "parking_lot 0.12.0", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys", -] - -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-macros" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-retry" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" -dependencies = [ - "pin-project", - "rand 0.8.5", - "tokio", -] - -[[package]] -name = "tokio-stream" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.0.2", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tonic" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" -dependencies = [ - "async-stream", - "async-trait", - "base64 0.13.1", - "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", - "percent-encoding", - "pin-project", - "prost", - "prost-derive", - "tokio", - "tokio-stream", - "tokio-util 0.6.10", - "tower", - "tower-layer", - "tower-service", - "tracing", - "tracing-futures", -] - -[[package]] -name = "tonic-build" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" -dependencies = [ - "proc-macro2", - "prost-build", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util 0.7.10", - "tower-layer", - "tower-service", - "tracing", + "winapi", ] [[package]] -name = "tower-layer" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.40" +name = "tokio-macros" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "tracing-appender" -version = "0.2.2" +name = "tokio-native-tls" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" dependencies = [ - "crossbeam-channel", - "time", - "tracing-subscriber", + "native-tls", + "tokio", ] [[package]] -name = "tracing-attributes" -version = "0.1.27" +name = "tokio-retry" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", + "pin-project", + "rand 0.8.4", + "tokio", ] [[package]] -name = "tracing-core" -version = "0.1.32" +name = "tokio-util" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" dependencies = [ - "once_cell", - "valuable", + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", ] [[package]] -name = "tracing-futures" -version = "0.2.5" +name = "tokio-util" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +checksum = "0edfdeb067411dba2044da6d1cb2df793dd35add7888d73c16e3381ded401764" dependencies = [ - "pin-project", + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", "tracing", ] [[package]] -name = "tracing-log" -version = "0.1.4" +name = "toml" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ - "log", - "once_cell", - "tracing-core", + "serde", ] [[package]] -name = "tracing-opentelemetry" -version = "0.17.4" +name = "tower-service" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" + +[[package]] +name = "tracing" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +checksum = "80b9fa4360528139bc96100c160b7ae879f5567f49f1782b0b02035b0358ebf3" dependencies = [ - "once_cell", - "opentelemetry", - "tracing", + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", "tracing-core", - "tracing-log", - "tracing-subscriber", ] [[package]] -name = "tracing-subscriber" -version = "0.3.17" +name = "tracing-attributes" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", + "proc-macro2", + "quote", + "syn", ] [[package]] -name = "treediff" -version = "4.0.2" +name = "tracing-core" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" +checksum = "90442985ee2f57c9e1b548ee72ae842f4a9a20e3f417cc38dbc5dc684d9bb4ee" dependencies = [ - "serde_json", + "lazy_static", ] [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "typenum" -version = "1.17.0" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" + +[[package]] +name = "ucd-trie" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" [[package]] name = "uint" -version = "0.9.5" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +checksum = "6470ab50f482bde894a037a57064480a246dbfdd5960bd65a44824693f08da5f" dependencies = [ "byteorder", "crunchy", - "hex", + "hex 0.4.3", "static_assertions", ] [[package]] name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - -[[package]] -name = "unicode-ident" -version = "1.0.12" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" - -[[package]] -name = "unsafe-libyaml" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" - -[[package]] -name = "untrusted" -version = "0.9.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" [[package]] -name = "ureq" -version = "2.8.0" +name = "unicode-xid" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3" -dependencies = [ - "base64 0.21.5", - "flate2", - "log", - "once_cell", - "rustls", - "rustls-webpki", - "url", - "webpki-roots", -] +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "url" -version = "2.4.1" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" dependencies = [ "form_urlencoded", "idna", + "matches", "percent-encoding", "serde", ] -[[package]] -name = "utf8parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" - [[package]] name = "uuid" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +dependencies = [ + "getrandom 0.2.3", +] [[package]] name = "vcpkg" @@ -4501,16 +2970,23 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" + +[[package]] +name = "waker-fn" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" [[package]] name = "want" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" dependencies = [ + "log", "try-lock", ] @@ -4520,6 +2996,12 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -4528,9 +3010,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -4538,24 +3020,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" dependencies = [ "bumpalo", + "lazy_static", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -4565,9 +3047,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4575,45 +3057,33 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" - -[[package]] -name = "wasmparser" -version = "0.83.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" +checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "webpki-roots" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" - [[package]] name = "wee_alloc" version = "0.4.5" @@ -4627,15 +3097,12 @@ dependencies = [ ] [[package]] -name = "which" -version = "4.4.2" +name = "wepoll-ffi" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" dependencies = [ - "either", - "home", - "once_cell", - "rustix", + "cc", ] [[package]] @@ -4654,113 +3121,93 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" -dependencies = [ - "winapi", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-core" -version = "0.51.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825" dependencies = [ - "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", "windows_i686_msvc", "windows_x86_64_gnu", - "windows_x86_64_gnullvm", "windows_x86_64_msvc", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" [[package]] name = "windows_i686_msvc" -version = "0.48.5" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" [[package]] -name = "winnow" -version = "0.5.17" +name = "winreg" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" dependencies = [ - "memchr", + "winapi", ] [[package]] -name = "winreg" -version = "0.50.0" +name = "workspaces" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "fbf3750ed46c2da9ea420fe3c7fa71b6a85cf472a73b9c1985a6ea79ef164563" dependencies = [ - "cfg-if 1.0.0", - "windows-sys", + "anyhow", + "async-trait", + "base64 0.13.0", + "borsh", + "chrono", + "dirs 3.0.2", + "hex 0.4.3", + "libc", + "near-account-id 0.12.0", + "near-crypto 0.12.0", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives 0.12.0", + "near-sandbox-utils", + "portpicker", + "rand 0.8.4", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-retry", + "tracing", + "url", ] [[package]] @@ -4769,82 +3216,34 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - [[package]] name = "xattr" -version = "1.0.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" dependencies = [ "libc", ] -[[package]] -name = "xml-rs" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" - -[[package]] -name = "zerocopy" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd66a62464e3ffd4e37bd09950c2b9dd6c4f8767380fabba0d523f9a775bc85a" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "255c4596d41e6916ced49cfafea18727b24d67878fa180ddfd69b9df34fd1726" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - [[package]] name = "zeroize" -version = "1.3.0" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "65f1a51723ec88c66d5d1fe80c841f17f63587d6691901d66be9bec6c3b51f73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", -] - -[[package]] -name = "zeropool-bn" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" -dependencies = [ - "borsh 0.9.3", - "byteorder", - "crunchy", - "lazy_static", - "rand 0.8.5", - "rustc-hex", + "syn", + "synstructure", ] [[package]] @@ -4853,57 +3252,10 @@ version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" dependencies = [ - "byteorder", - "crc32fast", - "flate2", - "thiserror", -] - -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "aes", "byteorder", "bzip2", - "constant_time_eq", "crc32fast", - "crossbeam-utils", "flate2", - "hmac", - "pbkdf2", - "sha1", + "thiserror", "time", - "zstd", -] - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" -dependencies = [ - "cc", - "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index c489f5a..eebb61a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,25 +1,16 @@ [workspace] members = [ - "sweat", - "sweat", - "sweat-integration", - "integration-tests", - "defer-stub" + "./sweat", + "./examples" ] -resolver = "2" -[workspace.dependencies] -tokio = "1.28.0" -anyhow = "1.0.75" -async-trait = "0.1.74" - -near-workspaces = "0.9.0" - -near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } -near-contract-standards = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } -integration-trait = { git = "https://github.com/sweatco/integration-trait.git", rev = "83a69f7ba4acab9405bf935f7dfc70f2f5279c40" } -integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "1b05c03351009c901a45400687c24f685f8b81c3" } - -sweat-model = { path = "model" } -sweat-integration = { path = "sweat-integration" } +[profile.release] +codegen-units = 1 +# s = optimize for binary size ("z" would additionally turn off loop vectorization) +opt-level = "z" +# link time optimization +lto = true +debug = false +panic = "abort" +overflow-checks = true diff --git a/Makefile b/Makefile deleted file mode 100644 index 503e010..0000000 --- a/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -help: ##@Miscellaneous Show this help - @echo "Usage: make [target] ...\n" - @perl -e '$(HELP_FUN)' $(MAKEFILE_LIST) - -install: ##@Miscellaneous Install dependencies - @npm i near-cli - @cargo build - -build: ##@Build the contract locally. - ./scripts/build.sh - -build-in-docker: ##@Build reproducible artifact in Docker. - ./scripts/build-in-docker.sh - -build-stub: ##@Build stub for holding contract. - ./scripts/build-stub.sh - -dock: build-in-docker ##@Build Shorthand for `build-in-docker` - -deploy: ##@Deploy Deploy the contract to dev account on Testnet. - ./scripts/deploy.sh - -cov: ##@Testing Run unit tests with coverage. - cargo llvm-cov --hide-instantiations --open - -test: ##@Testing Run unit tests. - cargo test --package sweat - -integration: ##@Testing Run integration tests. - cargo test --package integration-tests - -int: integration ##@Testing Shorthand for `integration` - -fmt: ##@Chores Format the code using rustfmt nightly. - cargo +nightly fmt --all - -lint: ##@Chores Run lint checks with Clippy. - ./scripts/lint.sh - -HELP_FUN = \ - %help; while(<>){push@{$$help{$$2//'options'}},[$$1,$$3] \ - if/^([\w-_]+)\s*:.*\#\#(?:@(\w+))?\s(.*)$$/}; \ - print"$$_:\n", map" $$_->[0]".(" "x(20-length($$_->[0])))."$$_->[1]\n",\ - @{$$help{$$_}},"\n" for keys %help; \ diff --git a/defer-stub/Cargo.toml b/defer-stub/Cargo.toml deleted file mode 100644 index 5ff7f34..0000000 --- a/defer-stub/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "defer-stub" -version = "0.1.0" -authors = [] -edition = "2021" -publish = false - -[lib] -crate-type = ["cdylib"] - -[dependencies] -near-sdk = { workspace = true } diff --git a/defer-stub/src/lib.rs b/defer-stub/src/lib.rs deleted file mode 100644 index 6c70140..0000000 --- a/defer-stub/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -use near_sdk::{ - borsh::{self, BorshDeserialize, BorshSerialize}, - env::log_str, - json_types::U128, - near_bindgen, AccountId, PanicOnDefault, -}; - -#[near_bindgen] -#[derive(BorshSerialize, BorshDeserialize, PanicOnDefault)] -struct Contract {} - -#[near_bindgen] -impl Contract { - #[init] - pub fn new() -> Self { - Self {} - } - - pub fn record_batch_for_hold(&mut self, amounts: Vec<(AccountId, U128)>) { - log_str(format!("Call record_batch_for_hold with {:?}", amounts).as_str()); - } -} diff --git a/examples/Cargo.toml b/examples/Cargo.toml new file mode 100644 index 0000000..0f73848 --- /dev/null +++ b/examples/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "examples" +version = "0.0.0" +publish = false +edition = "2021" + +[dev-dependencies] +anyhow = "1.0" +# borsh = "0.9" +# maplit = "1.0" +near-units = "0.2.0" +# arbitrary_precision enabled for u128 types that workspaces requires for Balance types +serde_json = { version = "1.0", features = ["arbitrary_precision"] } +tokio = { version = "1.10.0", features = ["full"] } +# tracing = "0.1" +# tracing-subscriber = { version = "0.3.5", features = ["env-filter"] } +workspaces = "0.2.0" +near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" } + +[[example]] +name = "mint" +path = "src/mint.rs" + +[[example]] +name = "transfer" +path = "src/transfer.rs" + +[[example]] +name = "formula" +path = "src/formula.rs" diff --git a/examples/src/formula.rs b/examples/src/formula.rs new file mode 100644 index 0000000..92208c9 --- /dev/null +++ b/examples/src/formula.rs @@ -0,0 +1,159 @@ +use serde_json::json; + +use near_sdk::json_types::{U128, U64}; +use workspaces::prelude::*; + +const SWEAT_WASM_FILEPATH: &str = "./target/wasm32-unknown-unknown/release/sweat.wasm"; + +const EPS: f64 = 0.00001; + +#[tokio::main] +async fn main() -> anyhow::Result<()> { + // can't use sandbox on M1 because of + // https://github.com/near/workspaces-rs/issues/110 + // ☹️ + let worker = workspaces::testnet().await?; + let wasm = std::fs::read(SWEAT_WASM_FILEPATH)?; + let contract = worker.dev_deploy(&wasm).await?; + let oracle1 = worker.dev_create_account().await?; + + let result = contract + .call(&worker, "new") + .args_json(json!({}))? + .transact() + .await?; + println!("deploy: {:#?}", result); + + let result = worker + .view(contract.id(), "get_steps_since_tge", Vec::new()) + .await? + .json::()?; + assert_eq!(result, U64(0)); + + let steps_to_convert = vec![1u16, 10, 100, 1000, 10000]; + let steps_since_tge = vec![ + 1, + 10, + 100, + 1000, + 10000, + 100000, + 1000000, + 10000000, + 100000000, + 1000000000, + 10000000000, + 100000000000, + 1000000000000, + 10000000000000, + 100000000000000, + 1000000000000000u64, + ]; + let mut test_number = 0; + for tge in 0..steps_since_tge.len() { + for steps in 0..steps_to_convert.len() { + let formula_res = oracle1 + .call(&worker, contract.id(), "formula") + .args_json((U64(steps_since_tge[tge]), steps_to_convert[steps]))? + .max_gas() + .transact() + .await? + .json::()? + .0 as f64 + / 1e+18; + println!( + "formula ({} {}) = {}", + steps_since_tge[tge], steps_to_convert[steps], formula_res + ); + + let diff = formula_res - TEST_RESULTS[test_number]; + assert_eq!(true, diff.abs() < EPS); + test_number = test_number + 1; + } + } + + Ok(()) +} + +const TEST_RESULTS: [f64; 80] = [ + 0.0009999999999997387, + 0.009999999999989545, + 0.09999999999911131, + 0.9999999999126997, + 9.999999991285653, + 0.0009999999999981703, + 0.009999999999973861, + 0.09999999999895448, + 0.9999999999111314, + 9.999999991269972, + 0.0009999999999824878, + 0.009999999999817035, + 0.09999999999738622, + 0.9999999998954487, + 9.999999991113144, + 0.0009999999998256607, + 0.009999999998248767, + 0.09999999998170353, + 0.9999999997386219, + 9.999999989544875, + 0.0009999999982573922, + 0.009999999982566081, + 0.09999999982487667, + 0.9999999981703533, + 9.99999997386219, + 0.0009999999825747062, + 0.00999999982573922, + 0.09999999825660807, + 0.9999999824876673, + 9.99999981703533, + 0.0009999998257478467, + 0.009999998257470626, + 0.09999998257392213, + 0.9999998256608078, + 9.999998248766735, + 0.0009999982574792517, + 0.009999982574784676, + 0.09999982574706262, + 0.9999982573922128, + 9.999982566080785, + 0.0009999825747933012, + 0.009999825747925172, + 0.09999825747846758, + 0.9999825747062624, + 9.999825739221281, + 0.0009998257479337971, + 0.009998257479330131, + 0.09998257479251717, + 0.9998257478467583, + 9.998257470626239, + 0.0009982574793387558, + 0.009982574793379717, + 0.09982574793301303, + 0.9982574792517169, + 9.982574784675826, + 0.0009825747933883426, + 0.009825747933875585, + 0.09825747933797171, + 0.9825747933013037, + 9.825747925171694, + 0.0008257479338842365, + 0.00825747933883687, + 0.08257479338781916, + 0.8257479338232387, + 8.257479332737093, + 0.00032230806451611884, + 0.003223080645160268, + 0.03223080645151066, + 0.32230806450590477, + 3.223080644138863, + 4.541613636363615e-05, + 0.0004541613636363422, + 0.0045416136363614894, + 0.04541613636342166, + 0.45416136361489273, + 4.741577501003273e-06, + 4.739512354008062e-05, + 0.00047393471422484454, + 0.004739338881660464, + 0.047393368165134696, +]; diff --git a/examples/src/mint.rs b/examples/src/mint.rs new file mode 100644 index 0000000..8dd2934 --- /dev/null +++ b/examples/src/mint.rs @@ -0,0 +1,97 @@ +use serde_json::json; + +use near_sdk::json_types::{U128, U64}; +use workspaces::prelude::*; + +const SWEAT_WASM_FILEPATH: &str = "./res/sweat.wasm"; + +#[tokio::main] +async fn main() -> anyhow::Result<()> { + // can't use sandbox on M1 because of + // https://github.com/near/workspaces-rs/issues/110 + // ☹️ + let worker = workspaces::testnet().await?; + let wasm = std::fs::read(SWEAT_WASM_FILEPATH)?; + let contract = worker.dev_deploy(&wasm).await?; + let oracle1 = worker.dev_create_account().await?; + let user = worker.dev_create_account().await?; + + let result = contract.call(&worker, "new").args_json(json!({}))?.transact().await?; + println!("deploy: {:#?}", result); + + let result = worker + .view(contract.id(), "get_steps_since_tge", Vec::new()) + .await? + .json::()?; + assert_eq!(result, U64(0)); + + let result = contract + .view( + &worker, + "formula", + json!({ + "steps_since_tge": U64(0), + "steps" : 10_000u32, + }) + .to_string() + .into_bytes(), + ) + .await? + .json::()?; + assert_eq!(result, U128(9999999991287398400)); + + let result = contract + .call(&worker, "add_oracle") + .args_json(json!({ + "account_id": oracle1.id(), + }))? + .transact() + .await?; + println!("add_oracle: {:#?}", result); + + let result = oracle1 + .call(&worker, contract.id(), "record_batch") + .args_json(json!({ + "steps_batch": vec![(user.id(), 10_000u32)], + }))? + .transact() + .await?; + + println!("record_batch: {:#?}", result); + + let result = contract + .view( + &worker, + "ft_balance_of", + json!({ + "account_id": oracle1.id(), + }) + .to_string() + .into_bytes(), + ) + .await? + .json::()?; + assert_eq!(result, U128(9999999991287398400 * 5 / 100)); + + let result = contract + .view( + &worker, + "ft_balance_of", + json!({ + "account_id": user.id(), + }) + .to_string() + .into_bytes(), + ) + .await? + .json::()?; + assert_eq!(result, U128(9999999991287398400 * 95 / 100)); + + let result = worker + .view(contract.id(), "get_steps_since_tge", Vec::new()) + .await? + .json::()?; + assert_eq!(result, U64(10_000)); + + Ok(()) +} diff --git a/examples/src/transfer.rs b/examples/src/transfer.rs new file mode 100644 index 0000000..39acaa7 --- /dev/null +++ b/examples/src/transfer.rs @@ -0,0 +1,141 @@ +use serde_json::json; + +use near_sdk::json_types::{U128, U64}; +use workspaces::prelude::*; + +const SWEAT_WASM_FILEPATH: &str = "./target/wasm32-unknown-unknown/release/sweat.wasm"; + +#[tokio::main] +async fn main() -> anyhow::Result<()> { + // can't use sandbox on M1 because of + // https://github.com/near/workspaces-rs/issues/110 + // ☹️ + let worker = workspaces::testnet().await?; + let wasm = std::fs::read(SWEAT_WASM_FILEPATH)?; + let contract = worker.dev_deploy(&wasm).await?; + let oracle1 = worker.dev_create_account().await?; + let user = worker.dev_create_account().await?; + + let result = contract + .call(&worker, "new") + .args_json(json!({}))? + .transact() + .await?; + + println!("deploy: {:#?}", result); + + let result = worker + .view(contract.id(), "get_steps_since_tge", Vec::new()) + .await? + .json::()?; + assert_eq!(result, U64(0)); + + let result = contract + .view( + &worker, + "formula", + json!({ + "steps_since_tge": U64(0), + "steps" : 10_000u32, + }) + .to_string() + .into_bytes(), + ) + .await? + .json::()?; + assert_eq!(result, U128(9999999991287398400)); + + let result = contract + .call(&worker, "add_oracle") + .args_json(json!({ + "account_id": oracle1.id(), + }))? + .transact() + .await?; + println!("add_oracle: {:#?}", result); + + let result = oracle1 + .call(&worker, contract.id(), "record_batch") + .args_json(json!({ + "steps_batch": vec![(user.id(), 10_000u32)], + }))? + .transact() + .await?; + + println!("record_batch: {:#?}", result); + + let result = contract + .view( + &worker, + "ft_balance_of", + json!({ + "account_id": oracle1.id(), + }) + .to_string() + .into_bytes(), + ) + .await? + .json::()?; + assert_eq!(result, U128(9999999991287398400 * 5 / 100)); + + let result = contract + .view( + &worker, + "ft_balance_of", + json!({ + "account_id": user.id(), + }) + .to_string() + .into_bytes(), + ) + .await? + .json::()?; + assert_eq!(result, U128(9999999991287398400 * 95 / 100)); + + let result = worker + .view(contract.id(), "get_steps_since_tge", Vec::new()) + .await? + .json::()?; + assert_eq!(result, U64(10_000)); + + let new_account = worker.dev_create_account().await?; + // This will fail because storage is not registered for this new account + let res = oracle1 + .call(&worker, contract.id(), "ft_transfer") + .args_json(( + new_account.id(), + U128(9499999991723028480), + Option::::None, + ))? + .max_gas() + .deposit(1) + .transact() + .await; + assert!(res.is_err()); + + let res = contract + .call(&worker, "storage_deposit") + .args_json((new_account.id(), Option::::None))? + .max_gas() + .deposit(near_sdk::env::storage_byte_cost() * 125) + .transact() + .await?; + assert!(res.is_success()); + + // Transfer all tokens from intmainreturn to new account + let res = oracle1 + .call(&worker, contract.id(), "ft_transfer") + .args_json(( + new_account.id(), + U128(9999999991287398400 * 5 / 100), + Option::::None, + ))? + .max_gas() + .deposit(1) + .transact() + .await?; + assert!(res.is_success()); + println!("ft_transfer: {:#?}", res); + + Ok(()) +} diff --git a/integration-tests/Cargo.lock b/integration-tests/Cargo.lock deleted file mode 100644 index 872ef40..0000000 --- a/integration-tests/Cargo.lock +++ /dev/null @@ -1,3476 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" - -[[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom 0.2.10", - "once_cell", - "version_check", -] - -[[package]] -name = "aho-corasick" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" -dependencies = [ - "memchr", -] - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anyhow" -version = "1.0.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" - -[[package]] -name = "arrayref" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock", - "autocfg", - "cfg-if 1.0.0", - "concurrent-queue", - "futures-lite", - "log", - "parking", - "polling", - "rustix 0.37.24", - "slab", - "socket2 0.4.9", - "waker-fn", -] - -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-process" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" -dependencies = [ - "async-io", - "async-lock", - "autocfg", - "blocking", - "cfg-if 1.0.0", - "event-listener", - "futures-lite", - "rustix 0.37.24", - "signal-hook", - "windows-sys", -] - -[[package]] -name = "async-task" -version = "4.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9441c6b2fe128a7c2bf680a44c34d0df31ce09e5b7e401fcca3faa483dbc921" - -[[package]] -name = "async-trait" -version = "0.1.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "backtrace" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" -dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" - -[[package]] -name = "binary-install" -version = "0.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5bc5f8c50dd6a80d0b303ddab79f42ddcb52fd43d68107ecf622c551fd4cd4" -dependencies = [ - "curl", - "dirs 1.0.5", - "failure", - "flate2", - "hex 0.3.2", - "is_executable", - "siphasher", - "tar", - "zip", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" - -[[package]] -name = "bitvec" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake2" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" -dependencies = [ - "crypto-mac", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "constant_time_eq", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blocking" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94c4ef1f913d78636d78d538eec1f18de81e481f44b1be0a81060090530846e1" -dependencies = [ - "async-channel", - "async-lock", - "async-task", - "fastrand 2.0.1", - "futures-io", - "futures-lite", - "piper", - "tracing", -] - -[[package]] -name = "borsh" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" -dependencies = [ - "borsh-derive 0.9.3", - "hashbrown 0.11.2", -] - -[[package]] -name = "borsh" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" -dependencies = [ - "borsh-derive 0.10.3", - "hashbrown 0.12.3", -] - -[[package]] -name = "borsh-derive" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" -dependencies = [ - "borsh-derive-internal 0.9.3", - "borsh-schema-derive-internal 0.9.3", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" -dependencies = [ - "borsh-derive-internal 0.10.3", - "borsh-schema-derive-internal 0.10.3", - "proc-macro-crate 0.1.5", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "bs58" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" - -[[package]] -name = "bumpalo" -version = "3.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" - -[[package]] -name = "byte-slice-cast" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" - -[[package]] -name = "bytesize" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" - -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "c2-chacha" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" -dependencies = [ - "cipher", - "ppv-lite86", -] - -[[package]] -name = "cc" -version = "1.0.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets", -] - -[[package]] -name = "cipher" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" -dependencies = [ - "generic-array", -] - -[[package]] -name = "concurrent-queue" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "cpufeatures" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array", - "subtle", -] - -[[package]] -name = "curl" -version = "0.4.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" -dependencies = [ - "curl-sys", - "libc", - "openssl-probe", - "openssl-sys", - "schannel", - "socket2 0.4.9", - "winapi", -] - -[[package]] -name = "curl-sys" -version = "0.4.66+curl-8.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70c44a72e830f0e40ad90dda8a6ab6ed6314d39776599a58a2e5e37fbc6db5b9" -dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", - "windows-sys", -] - -[[package]] -name = "curve25519-dalek" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn 1.0.109", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "crypto-common", -] - -[[package]] -name = "dirs" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" -dependencies = [ - "libc", - "redox_users 0.3.5", - "winapi", -] - -[[package]] -name = "dirs" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users 0.4.3", - "winapi", -] - -[[package]] -name = "dyn-clone" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" - -[[package]] -name = "easy-ext" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" - -[[package]] -name = "ed25519" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" -dependencies = [ - "signature", -] - -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek", - "ed25519", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "zeroize", -] - -[[package]] -name = "encoding_rs" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure", -] - -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fastrand" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" - -[[package]] -name = "filetime" -version = "0.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.3.5", - "windows-sys", -] - -[[package]] -name = "fixed-hash" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" -dependencies = [ - "byteorder", - "rand 0.8.5", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "flate2" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "funty" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" - -[[package]] -name = "futures-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - -[[package]] -name = "futures-sink" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" - -[[package]] -name = "futures-task" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-core", - "futures-task", - "pin-project-lite", - "pin-utils", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "gimli" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" - -[[package]] -name = "h2" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 1.9.3", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" - -[[package]] -name = "hex" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "home" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "http" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "0.14.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.4.9", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "idna" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "impl-codec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" -dependencies = [ - "equivalent", - "hashbrown 0.14.1", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "integration-tests" -version = "1.0.0" -dependencies = [ - "anyhow", - "async-trait", - "borsh 0.10.3", - "maplit", - "near-sdk", - "near-units", - "pkg-config", - "serde_json", - "tokio", - "tracing", - "tracing-subscriber", - "workspaces", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys", -] - -[[package]] -name = "ipnet" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" - -[[package]] -name = "is_executable" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577" -dependencies = [ - "winapi", -] - -[[package]] -name = "itoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - -[[package]] -name = "js-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "keccak" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -dependencies = [ - "spin", -] - -[[package]] -name = "libc" -version = "0.2.148" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" - -[[package]] -name = "libz-sys" -version = "1.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "linux-raw-sys" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" - -[[package]] -name = "lock_api" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - -[[package]] -name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" -dependencies = [ - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", -] - -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "near-abi" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "885db39b08518fa700b73fa2214e8adbbfba316ba82dd510f50519173eadaf73" -dependencies = [ - "borsh 0.9.3", - "schemars", - "semver", - "serde", -] - -[[package]] -name = "near-account-id" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d258582a1878e6db67400b0504a5099db85718d22c2e07f747fe1706ae7150" -dependencies = [ - "borsh 0.9.3", - "serde", -] - -[[package]] -name = "near-account-id" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d924011380de759c3dc6fdbcda37a19a5c061f56dab69d28a34ecee765e23e4" -dependencies = [ - "borsh 0.9.3", - "serde", -] - -[[package]] -name = "near-chain-configs" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1faf676a95bd1718b06e5957e01a9415fedf7900f32d94d5bcf70abd678b10a2" -dependencies = [ - "anyhow", - "chrono", - "derive_more", - "near-crypto 0.15.0", - "near-primitives 0.15.0", - "num-rational", - "serde", - "serde_json", - "sha2 0.10.8", - "smart-default", - "tracing", -] - -[[package]] -name = "near-crypto" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e75673d69fd7365508f3d32483669fe45b03bfb34e4d9363e90adae9dfb416c" -dependencies = [ - "arrayref", - "blake2", - "borsh 0.9.3", - "bs58", - "c2-chacha", - "curve25519-dalek", - "derive_more", - "ed25519-dalek", - "near-account-id 0.14.0", - "once_cell", - "parity-secp256k1", - "primitive-types", - "rand 0.7.3", - "rand_core 0.5.1", - "serde", - "serde_json", - "subtle", - "thiserror", -] - -[[package]] -name = "near-crypto" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7754612b47737d277fb818e9fdbb1406e90f9e57151c55c3584d714421976cb6" -dependencies = [ - "arrayref", - "blake2", - "borsh 0.9.3", - "bs58", - "c2-chacha", - "curve25519-dalek", - "derive_more", - "ed25519-dalek", - "near-account-id 0.15.0", - "once_cell", - "primitive-types", - "rand 0.7.3", - "secp256k1", - "serde", - "serde_json", - "subtle", - "thiserror", -] - -[[package]] -name = "near-jsonrpc-client" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1335ffce1476da6516dcd22b26cece1a495fc725c0e8fec1879073752ac068d" -dependencies = [ - "borsh 0.9.3", - "lazy_static", - "log", - "near-chain-configs", - "near-crypto 0.15.0", - "near-jsonrpc-primitives", - "near-primitives 0.15.0", - "reqwest", - "serde", - "serde_json", - "thiserror", - "uuid", -] - -[[package]] -name = "near-jsonrpc-primitives" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ada226c74f05508c516f109a97b9f23335120d0bfda208f0d187b6bbfe6eef5a" -dependencies = [ - "near-chain-configs", - "near-crypto 0.15.0", - "near-primitives 0.15.0", - "near-rpc-error-macro 0.15.0", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "near-primitives" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad1a9a1640539c81f065425c31bffcfbf6b31ef1aeaade59ce905f5df6ac860" -dependencies = [ - "borsh 0.9.3", - "byteorder", - "bytesize", - "chrono", - "derive_more", - "easy-ext", - "hex 0.4.3", - "near-crypto 0.14.0", - "near-primitives-core 0.14.0", - "near-rpc-error-macro 0.14.0", - "near-vm-errors 0.14.0", - "num-rational", - "once_cell", - "primitive-types", - "rand 0.7.3", - "reed-solomon-erasure", - "serde", - "serde_json", - "smart-default", - "strum", - "thiserror", -] - -[[package]] -name = "near-primitives" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97670b302dce15f09bba50f24c67aa08130fd01528cc61d4415892401e88e974" -dependencies = [ - "borsh 0.9.3", - "byteorder", - "bytesize", - "cfg-if 1.0.0", - "chrono", - "derive_more", - "easy-ext", - "hex 0.4.3", - "near-crypto 0.15.0", - "near-primitives-core 0.15.0", - "near-rpc-error-macro 0.15.0", - "near-vm-errors 0.15.0", - "num-rational", - "once_cell", - "primitive-types", - "rand 0.7.3", - "reed-solomon-erasure", - "serde", - "serde_json", - "smart-default", - "strum", - "thiserror", -] - -[[package]] -name = "near-primitives-core" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d508f0fc340f6461e4e256417685720d3c4c00bb5a939b105160e49137caba" -dependencies = [ - "base64 0.11.0", - "borsh 0.9.3", - "bs58", - "derive_more", - "near-account-id 0.14.0", - "num-rational", - "serde", - "sha2 0.10.8", - "strum", -] - -[[package]] -name = "near-primitives-core" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7929e19d862221949734c4a0063a8f55e7069de3a2ebc2d4f4c13497a5e953cb" -dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58", - "derive_more", - "near-account-id 0.15.0", - "num-rational", - "serde", - "serde_repr", - "sha2 0.10.8", - "strum", -] - -[[package]] -name = "near-rpc-error-core" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ee0b41c75ef859c193a8ff1dadfa0c8207bc0ac447cc22259721ad769a1408" -dependencies = [ - "quote", - "serde", - "syn 1.0.109", -] - -[[package]] -name = "near-rpc-error-core" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36addf90cc04bd547a627b3a292f59d7de4dd6fb5042115419ae901b93ce6c2d" -dependencies = [ - "quote", - "serde", - "syn 1.0.109", -] - -[[package]] -name = "near-rpc-error-macro" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e837bd4bacd807073ec5ceb85708da7f721b46a4c2a978de86027fb0034ce31" -dependencies = [ - "near-rpc-error-core 0.14.0", - "serde", - "syn 1.0.109", -] - -[[package]] -name = "near-rpc-error-macro" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5beb352f3b91d8c491646c2fa4fdbbbf463c7b9c0226951c28f0197de44f99" -dependencies = [ - "near-rpc-error-core 0.15.0", - "serde", - "syn 1.0.109", -] - -[[package]] -name = "near-sandbox-utils" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7479b0a2c52890000d410c6e4ba4f851334280530fa7446b78bcaf4683fe69b0" -dependencies = [ - "anyhow", - "async-process", - "binary-install", - "chrono", - "fs2", - "hex 0.3.2", - "home", -] - -[[package]] -name = "near-sdk" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15eb3de2defe3626260cc209a6cdb985c6b27b0bd4619fad97dcfae002c3c5bd" -dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58", - "near-abi", - "near-crypto 0.14.0", - "near-primitives 0.14.0", - "near-primitives-core 0.14.0", - "near-sdk-macros", - "near-sys", - "near-vm-logic", - "once_cell", - "schemars", - "serde", - "serde_json", - "wee_alloc", -] - -[[package]] -name = "near-sdk-macros" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4907affc9f5ed559456509188ff0024f1f2099c0830e6bdb66eb61d5b75912c0" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "near-sys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" - -[[package]] -name = "near-units" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a2b77f295d398589eeee51ad0887905ef1734fb12b45cb6d77bd7e401988b9" -dependencies = [ - "near-units-core", - "near-units-macro", -] - -[[package]] -name = "near-units-core" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89aa2a7985de87a08ca35f28abd8d00f0f901e704257e6e029aadef981386bc6" -dependencies = [ - "num-format", - "regex", -] - -[[package]] -name = "near-units-macro" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ab45d066220846f9bd5c21e9ab88c47c892edd36f962ada78bf8308523171a" -dependencies = [ - "near-units-core", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "near-vm-errors" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0da466a30f0446639cbd788c30865086fac3e8dcb07a79e51d2b0775ed4261e" -dependencies = [ - "borsh 0.9.3", - "near-account-id 0.14.0", - "near-rpc-error-macro 0.14.0", - "serde", -] - -[[package]] -name = "near-vm-errors" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5591c9c8afa83a040cb5c3f29bc52b2efae2c32d4bcaee1bba723738da1a5cf6" -dependencies = [ - "borsh 0.9.3", - "near-account-id 0.15.0", - "near-rpc-error-macro 0.15.0", - "serde", - "strum", -] - -[[package]] -name = "near-vm-logic" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b534828419bacbf1f7b11ef7b00420f248c548c485d3f0cfda8bb6931152f2" -dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58", - "byteorder", - "near-account-id 0.14.0", - "near-crypto 0.14.0", - "near-primitives 0.14.0", - "near-primitives-core 0.14.0", - "near-vm-errors 0.14.0", - "ripemd", - "serde", - "sha2 0.10.8", - "sha3", - "zeropool-bn", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-bigint" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-format" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" -dependencies = [ - "arrayvec 0.7.4", - "itoa", -] - -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" -dependencies = [ - "autocfg", - "num-bigint", - "num-integer", - "num-traits", - "serde", -] - -[[package]] -name = "num-traits" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "object" -version = "0.32.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - -[[package]] -name = "openssl" -version = "0.10.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" -dependencies = [ - "bitflags 2.4.0", - "cfg-if 1.0.0", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "parity-scale-codec" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" -dependencies = [ - "arrayvec 0.7.4", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parity-secp256k1" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fca4f82fccae37e8bbdaeb949a4a218a1bbc485d11598f193d2a908042e5fc1" -dependencies = [ - "arrayvec 0.5.2", - "cc", - "cfg-if 0.1.10", - "rand 0.7.3", -] - -[[package]] -name = "parking" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.3.5", - "smallvec", - "windows-targets", -] - -[[package]] -name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "pin-project" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "piper" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" -dependencies = [ - "atomic-waker", - "fastrand 2.0.1", - "futures-io", -] - -[[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - -[[package]] -name = "polling" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if 1.0.0", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys", -] - -[[package]] -name = "portpicker" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" -dependencies = [ - "rand 0.8.5", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "primitive-types" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" -dependencies = [ - "fixed-hash", - "impl-codec", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" -dependencies = [ - "toml", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit", -] - -[[package]] -name = "proc-macro2" -version = "1.0.67" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.10", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_users" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" -dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", -] - -[[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" -dependencies = [ - "getrandom 0.2.10", - "redox_syscall 0.2.16", - "thiserror", -] - -[[package]] -name = "reed-solomon-erasure" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" -dependencies = [ - "smallvec", -] - -[[package]] -name = "regex" -version = "1.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.3.9", - "regex-syntax 0.7.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.7.5", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" - -[[package]] -name = "reqwest" -version = "0.11.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" -dependencies = [ - "base64 0.21.4", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "rust-argon2" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" -dependencies = [ - "base64 0.13.1", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "0.37.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys", -] - -[[package]] -name = "rustix" -version = "0.38.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" -dependencies = [ - "bitflags 2.4.0", - "errno", - "libc", - "linux-raw-sys 0.4.8", - "windows-sys", -] - -[[package]] -name = "rustversion" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" - -[[package]] -name = "ryu" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" - -[[package]] -name = "schannel" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "schemars" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" -dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 1.0.109", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "secp256k1" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" -dependencies = [ - "rand 0.8.5", - "secp256k1-sys", -] - -[[package]] -name = "secp256k1-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" -dependencies = [ - "cc", -] - -[[package]] -name = "security-framework" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" - -[[package]] -name = "serde" -version = "1.0.188" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.188" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", -] - -[[package]] -name = "serde_derive_internals" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "serde_json" -version = "1.0.107" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] - -[[package]] -name = "sharded-slab" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b21f559e07218024e7e9f90f96f601825397de0e25420135f7f952453fed0b" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "signal-hook" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" -dependencies = [ - "libc", -] - -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" - -[[package]] -name = "siphasher" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" - -[[package]] -name = "smart-default" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "socket2" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strum" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 1.0.109", -] - -[[package]] -name = "subtle" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "unicode-xid", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tar" -version = "0.4.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tempfile" -version = "3.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" -dependencies = [ - "cfg-if 1.0.0", - "fastrand 2.0.1", - "redox_syscall 0.3.5", - "rustix 0.38.15", - "windows-sys", -] - -[[package]] -name = "thiserror" -version = "1.0.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if 1.0.0", - "once_cell", -] - -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "num_cpus", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2 0.5.4", - "tokio-macros", - "windows-sys", -] - -[[package]] -name = "tokio-macros" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-retry" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" -dependencies = [ - "pin-project", - "rand 0.8.5", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.0.2", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if 1.0.0", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", -] - -[[package]] -name = "tracing-core" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "try-lock" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex 0.4.3", - "static_assertions", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "url" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "uuid" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" -dependencies = [ - "getrandom 0.2.10", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "waker-fn" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" -dependencies = [ - "cfg-if 1.0.0", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.37", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" -dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" - -[[package]] -name = "web-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "wee_alloc" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "memory_units", - "winapi", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "winnow" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if 1.0.0", - "windows-sys", -] - -[[package]] -name = "workspaces" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b13d249618f197811e3673decc81459730cf5cc09ee7246dc4bede1e9333bc" -dependencies = [ - "async-process", - "async-trait", - "base64 0.13.1", - "borsh 0.9.3", - "bs58", - "chrono", - "dirs 3.0.2", - "hex 0.4.3", - "libc", - "near-account-id 0.15.0", - "near-crypto 0.15.0", - "near-jsonrpc-client", - "near-jsonrpc-primitives", - "near-primitives 0.15.0", - "near-sandbox-utils", - "portpicker", - "rand 0.8.5", - "reqwest", - "serde", - "serde_json", - "thiserror", - "tokio", - "tokio-retry", - "tracing", - "url", -] - -[[package]] -name = "wyz" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" - -[[package]] -name = "xattr" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" -dependencies = [ - "libc", -] - -[[package]] -name = "zeroize" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.37", -] - -[[package]] -name = "zeropool-bn" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" -dependencies = [ - "borsh 0.9.3", - "byteorder", - "crunchy", - "lazy_static", - "rand 0.8.5", - "rustc-hex", -] - -[[package]] -name = "zip" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" -dependencies = [ - "byteorder", - "bzip2", - "crc32fast", - "flate2", - "thiserror", - "time", -] diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml deleted file mode 100644 index 1d6ddec..0000000 --- a/integration-tests/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "integration-tests" -version = "1.0.0" -publish = false -edition = "2021" - -[lib] -name = "integration_tests" - -[dev-dependencies] -near-workspaces = { workspace = true } -near-sdk = { workspace = true } -near-contract-standards = { workspace = true } -anyhow = { workspace = true } -tokio = { workspace = true } - -near-units = "0.2.0" -borsh = "0.10.3" -maplit = "1.0" -# arbitrary_precision enabled for u128 types that workspaces requires for Balance types -serde_json = { version = "1.0.107", features = ["arbitrary_precision"] } -tracing = "0.1.37" -tracing-subscriber = { version = "0.3.11", features = ["env-filter"] } -pkg-config = "0.3.1" - -[dependencies] -async-trait = "0.1.73" - -sweat-model = { workspace = true } -sweat-integration = { workspace = true } -integration-utils = { workspace = true } diff --git a/integration-tests/src/defer.rs b/integration-tests/src/defer.rs deleted file mode 100644 index 6db7942..0000000 --- a/integration-tests/src/defer.rs +++ /dev/null @@ -1,35 +0,0 @@ -#![cfg(test)] - -use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; -use near_sdk::json_types::U64; -use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration, SweatDeferIntegration}; - -use crate::prepare::{prepare_contract, IntegrationContext}; - -#[tokio::test] -async fn test_defer() -> anyhow::Result<()> { - let mut context = prepare_contract().await?; - let oracle = context.oracle().await?; - let alice = context.alice().await?; - let holding_account = context.holding_contract().as_account().to_near(); - - let target_amount = context.ft_contract().formula(U64(0), 10_000).await?; - assert_ne!(0, target_amount.0); - - context - .ft_contract() - .with_user(&oracle) - .defer_batch(vec![(alice.to_near(), 10_000)], holding_account.clone()) - .await?; - - let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).await?; - assert_eq!(0, alice_balance.0); - - let holder_balance = context.ft_contract().ft_balance_of(holding_account.clone()).await?; - assert_eq!(target_amount.0 * 95 / 100, holder_balance.0); - - let oracle_balance = context.ft_contract().ft_balance_of(oracle.to_near()).await?; - assert_eq!(target_amount.0 * 5 / 100, oracle_balance.0); - - Ok(()) -} diff --git a/integration-tests/src/formula.rs b/integration-tests/src/formula.rs deleted file mode 100644 index 6c3b178..0000000 --- a/integration-tests/src/formula.rs +++ /dev/null @@ -1,211 +0,0 @@ -use anyhow::Result; -use integration_utils::integration_contract::IntegrationContract; -use near_sdk::json_types::U64; -use sweat_model::SweatApiIntegration; - -use crate::prepare::{prepare_contract, IntegrationContext}; - -const EPS: f64 = 0.00001; - -#[tokio::test] -async fn test_formula() -> Result<()> { - let mut context = prepare_contract().await?; - - let oracle = context.oracle().await?; - - let steps = context.ft_contract().get_steps_since_tge().await?; - - assert_eq!(0, steps.0); - - let steps_to_convert = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000]; - let steps_from_tge = [ - 1, - 10, - 100, - 1000, - 10000, - 100000, - 1000000, - 10000000, - 100000000, - 1000000000, - 10000000000, - 100000000000, - 1000000000000, - 10000000000000, - 100000000000000, - 1000000000000000u64, - ]; - - let mut test_number = 0; - for tge in 0..steps_from_tge.len() { - for steps in 0..steps_to_convert.len() { - let formula_res = context - .ft_contract() - .with_user(&oracle) - .formula(U64(steps_from_tge[tge]), steps_to_convert[steps]) - .await? - .0; - - let formula_res = formula_res as f64 / 1e+18; - - println!( - "{}. formula ({} {}) = {}", - test_number, steps_from_tge[tge], steps_to_convert[steps], formula_res - ); - - let diff = formula_res - TEST_RESULTS[test_number]; - assert_eq!(true, diff.abs() < EPS); - test_number = test_number + 1; - } - } - - Ok(()) -} - -pub const TEST_RESULTS: [f64; 144] = [ - 0.0009999999999993069988, - 0.0099999999999722827965, - 0.09999999999764401515, - 0.99999999976855979966, - 9.999999976897553822, - 99.99999769017119888, - 999.9997690212771886, - 9999.97690216929368, - 99997.69021734510898, - 0.0009999999999951495171, - 0.009999999999930706679, - 0.09999999999722826438, - 0.99999999976440212546, - 9.99999997685597819, - 99.99999768975543191, - 999.99976901711954724, - 9999.9769021277170395, - 99997.69021692934621, - 0.0009999999999535733996, - 0.0099999999995149455034, - 0.09999999999307064569, - 0.99999999972282604954, - 9.9999999764402165425, - 99.999997685597818986, - 999.9997689755434749, - 9999.9769017119560885, - 99997.69021277173306, - 0.0009999999995378124409, - 0.009999999995357337218, - 0.09999999995149456977, - 0.99999999930706517937, - 9.999999972282608951, - 99.99999764402173241, - 999.99976855978263757, - 9999.9768975543483975, - 99997.690171195645235, - 0.0009999999953802037218, - 0.0099999999537812491596, - 0.099999999535733699596, - 0.9999999951494564776, - 9.9999999307065223775, - 99.99999722826086668, - 999.99976440217392337, - 9999.9768559782605735, - 99997.689755434781546, - 0.0009999999538041167476, - 0.009999999538020380718, - 0.099999995378124997836, - 0.999999953573369571, - 9.999999514945651313, - 99.999993070652180904, - 999.9997228260870088, - 9999.976440217391428, - 99997.68559782608645, - 0.0009999995380432472221, - 0.009999995380411684162, - 0.09999995380203804962, - 0.9999995378124999501, - 9.999995357336956658, - 99.9999514945652237, - 999.9993070652174083, - 9999.972282608696332, - 99997.644021739135496, - 0.0009999953804345515333, - 0.009999953804324729009, - 0.099999538041168484215, - 0.99999538020380429604, - 9.999953781249999452, - 99.99953573369565163, - 999.99514945652174447, - 9999.930706521739921, - 99997.22826086956775, - 0.0009999538043475950794, - 0.009999538043455163602, - 0.099995380432472830146, - 0.99995380411684786637, - 9.999538020380434489, - 99.995378125000002, - 999.95357336956521976, - 9999.514945652173992, - 99993.07065217391937, - 0.0009995380434780298893, - 0.009995380434759511268, - 0.09995380434551630333, - 0.99953804324728257047, - 9.995380411684783084, - 99.953802038043477296, - 999.5378124999999727, - 9995.357336956521976, - 99951.49456521739194, - 0.0009953804347823777716, - 0.009953804347802989658, - 0.0995380434759510907, - 0.99538043455163038864, - 9.9538043247282601556, - 99.53804116847825867, - 995.3802038043478433, - 9953.78125, - 99535.73369565217581, - 0.0009538043478258559447, - 0.009538043478237771822, - 0.09538043478029890887, - 0.95380434759510868137, - 9.538043455163043305, - 95.38043247282608661, - 953.80411684782609427, - 9538.020380434782055, - 95378.125, - 0.0005380434782607852349, - 0.005380434782600264018, - 0.053804347825243750703, - 0.53804347817654929464, - 5.3804347741766713753, - 53.804346982884489137, - 538.04339394062299107, - 5380.4263505840362996, - 53803.50462362102553, - 0.00010531914893616588951, - 0.0010531914893612702357, - 0.0105319148935738241685, - 0.10531914893185048698, - 1.053191488929729136, - 10.531914850419713758, - 105.31914461643948755, - 1053.19105738863027, - 10531.871696309839535, - 1.16470588235293541626e-05, - 0.00011647058823528841538, - 0.0011647058823523713262, - 0.011647058823472423994, - 0.11647058822959541202, - 1.1647058817830711064, - 11.647058766542404129, - 116.47058253659338334, - 1164.705312482868294, - 1.1895246692412392412e-06, - 1.1891116398421971423e-05, - 0.00011890600111673168301, - 0.0011890610437408145102, - 0.011890606307114153298, - 0.118906064103715028435, - 1.1890606420697238388, - 11.890606361840548644, - 118.906058271739922816, -]; diff --git a/integration-tests/src/interface/common.rs b/integration-tests/src/interface/common.rs deleted file mode 100644 index b9f6776..0000000 --- a/integration-tests/src/interface/common.rs +++ /dev/null @@ -1,13 +0,0 @@ -use integration_utils::integration_contract::IntegrationContract; -use near_sdk::AccountId; -use sweat_integration::SweatFt; - -pub(crate) trait ContractAccount { - fn account(&self) -> AccountId; -} - -impl ContractAccount for SweatFt<'_> { - fn account(&self) -> AccountId { - AccountId::new_unchecked(self.contract().as_account().id().to_string()) - } -} diff --git a/integration-tests/src/interface/mod.rs b/integration-tests/src/interface/mod.rs deleted file mode 100644 index 34994bf..0000000 --- a/integration-tests/src/interface/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod common; diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs deleted file mode 100644 index d39bba0..0000000 --- a/integration-tests/src/lib.rs +++ /dev/null @@ -1,44 +0,0 @@ -#![cfg(test)] - -use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; -use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration, SweatDeferIntegration}; - -use crate::prepare::{prepare_contract, IntegrationContext}; - -mod defer; -mod formula; -mod interface; -mod mint; -mod prepare; -mod transfer; - -#[tokio::test] -async fn happy_flow() -> anyhow::Result<()> { - let mut context = prepare_contract().await?; - - let alice = context.alice().await?; - let oracle = context.oracle().await?; - - assert_eq!( - 99999995378125008, - context.ft_contract().formula(100_000.into(), 100).await?.0 - ); - - context - .ft_contract() - .tge_mint(&alice.to_near(), 100_000_000.into()) - .await?; - - assert_eq!( - 100_000_000, - context.ft_contract().ft_balance_of(alice.to_near()).await?.0 - ); - - context - .ft_contract() - .with_user(&oracle) - .defer_batch(vec![(alice.to_near(), 1000)], oracle.to_near()) - .await?; - - Ok(()) -} diff --git a/integration-tests/src/mint.rs b/integration-tests/src/mint.rs deleted file mode 100644 index 5687329..0000000 --- a/integration-tests/src/mint.rs +++ /dev/null @@ -1,38 +0,0 @@ -use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; -use near_sdk::json_types::{U128, U64}; -use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration}; - -use crate::prepare::{prepare_contract, IntegrationContext}; - -const TARGET_BALANCE: u128 = 9999999976902174720; -const TARGET_STEPS_SINCE_TGE: u32 = 10_000; - -#[tokio::test] -async fn test_mint() -> anyhow::Result<()> { - let mut context = prepare_contract().await?; - let user = context.alice().await?; - let oracle = context.oracle().await?; - - let result = context.ft_contract().get_steps_since_tge().await?; - assert_eq!(result, U64(0)); - - let result = context.ft_contract().formula(U64(0), TARGET_STEPS_SINCE_TGE).await?; - assert_eq!(result, U128(TARGET_BALANCE)); - - context - .ft_contract() - .with_user(&oracle) - .record_batch(vec![(user.to_near(), 10_000u32)]) - .await?; - - let result = context.ft_contract().ft_balance_of(oracle.to_near()).await?; - assert_eq!(result, U128(TARGET_BALANCE * 5 / 100)); - - let result = context.ft_contract().ft_balance_of(user.to_near()).await?; - assert_eq!(result, U128(TARGET_BALANCE * 95 / 100)); - - let result = context.ft_contract().get_steps_since_tge().await?; - assert_eq!(result, U64(TARGET_STEPS_SINCE_TGE as u64)); - - Ok(()) -} diff --git a/integration-tests/src/prepare.rs b/integration-tests/src/prepare.rs deleted file mode 100644 index d6952d0..0000000 --- a/integration-tests/src/prepare.rs +++ /dev/null @@ -1,78 +0,0 @@ -use async_trait::async_trait; -use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; -use near_workspaces::{Account, Contract}; -use sweat_integration::{SweatFt, FT_CONTRACT}; -use sweat_model::{StorageManagementIntegration, SweatApiIntegration}; - -const HOLDING_STUB_CONTRACT: &str = "defer_stub"; - -pub type Context = integration_utils::context::Context; - -#[async_trait] -pub trait IntegrationContext { - async fn oracle(&mut self) -> anyhow::Result; - async fn alice(&mut self) -> anyhow::Result; - async fn bob(&mut self) -> anyhow::Result; - fn ft_contract(&self) -> SweatFt; - - fn holding_contract(&self) -> &Contract; -} - -#[async_trait] -impl IntegrationContext for Context { - async fn oracle(&mut self) -> anyhow::Result { - self.account("oracle").await - } - - async fn alice(&mut self) -> anyhow::Result { - self.account("alice").await - } - - async fn bob(&mut self) -> anyhow::Result { - self.account("bob").await - } - - fn ft_contract(&self) -> SweatFt { - SweatFt::with_contract(&self.contracts[FT_CONTRACT]) - } - - fn holding_contract(&self) -> &Contract { - &self.contracts[HOLDING_STUB_CONTRACT] - } -} - -pub async fn prepare_contract() -> anyhow::Result { - let mut context = Context::new(&[FT_CONTRACT, HOLDING_STUB_CONTRACT], "build".into()).await?; - let oracle = context.oracle().await?; - let alice = context.alice().await?; - - context.ft_contract().new(".u.sweat.testnet".to_string().into()).await?; - - context - .ft_contract() - .storage_deposit(oracle.to_near().into(), None) - .await?; - - context - .ft_contract() - .storage_deposit(alice.to_near().into(), None) - .await?; - - context.ft_contract().add_oracle(&oracle.to_near()).await?; - - let holding_contract_init_result = context - .holding_contract() - .call("new") - .max_gas() - .transact() - .await? - .into_result()?; - println!("Initialized holding contract: {:?}", holding_contract_init_result); - - context - .ft_contract() - .storage_deposit(context.holding_contract().as_account().to_near().into(), None) - .await?; - - Ok(context) -} diff --git a/integration-tests/src/transfer.rs b/integration-tests/src/transfer.rs deleted file mode 100644 index 078952a..0000000 --- a/integration-tests/src/transfer.rs +++ /dev/null @@ -1,48 +0,0 @@ -use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; -use near_sdk::json_types::U128; -use sweat_model::{FungibleTokenCoreIntegration, StorageManagementIntegration, SweatApiIntegration}; - -use crate::prepare::{prepare_contract, IntegrationContext}; - -#[tokio::test] -async fn test_transfer() -> anyhow::Result<()> { - let mut context = prepare_contract().await?; - let oracle = context.oracle().await?; - let alice = context.alice().await?; - let bob = context.bob().await?; - - context - .ft_contract() - .with_user(&oracle) - .record_batch(vec![(alice.to_near(), 10_000)]) - .await?; - - // This will fail because storage is not registered for this new account - let res = context - .ft_contract() - .with_user(&alice) - .ft_transfer(bob.to_near(), U128(9499999991723028480), None) - .await; - assert!(res.is_err()); - - let res = context.ft_contract().storage_deposit(Some(bob.to_near()), None).await; - assert!(res.is_ok()); - - let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).await?; - assert_ne!(U128(0), alice_balance); - - // Transfer all tokens from alice to new account - context - .ft_contract() - .with_user(&alice) - .ft_transfer(bob.to_near(), alice_balance, None) - .await?; - - let alice_balance_updated = context.ft_contract().ft_balance_of(alice.to_near()).await?; - assert_eq!(U128(0), alice_balance_updated); - - let bob_balance = context.ft_contract().ft_balance_of(bob.to_near()).await?; - assert_eq!(alice_balance, bob_balance); - - Ok(()) -} diff --git a/model/Cargo.toml b/model/Cargo.toml deleted file mode 100644 index d270770..0000000 --- a/model/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "sweat-model" -version = "0.1.0" -edition = "2021" - -[dependencies] -anyhow = { workspace = true } -async-trait = { workspace = true } -integration-trait = { workspace = true } - -near-sdk = { workspace = true } -near-contract-standards = { workspace = true } diff --git a/model/src/lib.rs b/model/src/lib.rs deleted file mode 100644 index 8f04c45..0000000 --- a/model/src/lib.rs +++ /dev/null @@ -1,81 +0,0 @@ -use integration_trait::make_integration_version; -use near_contract_standards::storage_management::{StorageBalance, StorageBalanceBounds}; -use near_sdk::{ - json_types::{U128, U64}, - AccountId, PromiseOrValue, -}; - -#[make_integration_version] -pub trait SweatApi { - fn new(postfix: Option) -> Self; - fn add_oracle(&mut self, account_id: &AccountId); - fn remove_oracle(&mut self, account_id: &AccountId); - fn get_oracles(&self) -> Vec; - fn tge_mint(&mut self, account_id: &AccountId, amount: U128); - fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>); - fn burn(&mut self, amount: &U128); - fn get_steps_since_tge(&self) -> U64; - fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>); - fn formula(&self, steps_since_tge: U64, steps: u32) -> U128; -} - -#[make_integration_version] -pub trait SweatDefer { - fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()>; -} - -/// Copy of near_sdk trait to use in integration tests -#[make_integration_version] -pub trait FungibleTokenCore { - fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option); - fn ft_transfer_call( - &mut self, - receiver_id: AccountId, - amount: U128, - memo: Option, - msg: String, - ) -> PromiseOrValue; - fn ft_total_supply(&self) -> U128; - fn ft_balance_of(&self, account_id: AccountId) -> U128; -} - -/// Copy of near_sdk trait to use in integration tests -#[make_integration_version] -pub trait StorageManagement { - // if `registration_only=true` MUST refund above the minimum balance if the account didn't exist and - // refund full deposit if the account exists. - fn storage_deposit(&mut self, account_id: Option, registration_only: Option) -> StorageBalance; - - /// Withdraw specified amount of available Ⓝ for predecessor account. - /// - /// This method is safe to call. It MUST NOT remove data. - /// - /// `amount` is sent as a string representing an unsigned 128-bit integer. If - /// omitted, contract MUST refund full `available` balance. If `amount` exceeds - /// predecessor account's available balance, contract MUST panic. - /// - /// If predecessor account not registered, contract MUST panic. - /// - /// MUST require exactly 1 yoctoNEAR attached balance to prevent restricted - /// function-call access-key call (UX wallet security) - /// - /// Returns the StorageBalance structure showing updated balances. - fn storage_withdraw(&mut self, amount: Option) -> StorageBalance; - - /// Unregisters the predecessor account and returns the storage NEAR deposit back. - /// - /// If the predecessor account is not registered, the function MUST return `false` without panic. - /// - /// If `force=true` the function SHOULD ignore account balances (burn them) and close the account. - /// Otherwise, MUST panic if caller has a positive registered balance (eg token holdings) or - /// the contract doesn't support force unregistration. - /// MUST require exactly 1 yoctoNEAR attached balance to prevent restricted function-call access-key call - /// (UX wallet security) - /// Returns `true` iff the account was unregistered. - /// Returns `false` iff account was not registered before. - fn storage_unregister(&mut self, force: Option) -> bool; - - fn storage_balance_bounds(&self) -> StorageBalanceBounds; - - fn storage_balance_of(&self, account_id: AccountId) -> Option; -} diff --git a/res/defer_stub.wasm b/res/defer_stub.wasm deleted file mode 100755 index 7ccd9fd4bbfe125e704a42f590f4aef38ca34b46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90880 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 QT#iA{-w+`R z7vx706laiJAZS!zbp{0r%t&X8ZOf8*8OC3658#~lNi#BzrWu~^y=leWs z?X%Cl=O#gH=a2WzkF)n)d;NIU^J_ipSCWvGP9~ML zKQimfuDmqVzV(tzlAbcIKX%3~uiAFe%P-uSOez14J1^YwvMVpSM7`g(V~3YH?Rd(xySG9uoiei21=}v! zwsV^rb8L+!LC6(JV0eWsoC&sGdV!O##TGlS+|Au|ItAk}Q4d z5B*U3L)j0lDzc}pDb}p!|C;n^Cq3olf-Gy-tjb3Id3u_r1^<`%(|)y*mWtJ@(p78L z{F9Ygkrde}1%Fl*O3$)2S(ap3QLIVUD7pEQC20ms$*Ke(EtRZmlBch!o}K{P%GD=Q zLk1KpSEamPnWj%)Saz4Av+d3v!5^rXO+W&bprC3jM!U{44v@-;M_2sde( zuYbA&y~=SlD`XJ*3D!?LT{B%|Nq%({LuGwRkEsBwdU!hCE1!a zPk%~Evqd($vRaj->B?f2;Udja-qUjcOZms6;3!rXRFI|>^q^r1WW_4FwQ4nwlt@99 z$_UGp;VqC0;Tw5TJiS=`%oH%ynZke)M5nBw{-VhF2Ry6NWDSGj(|#;@8bjkh|K~sc zv>z+R)63J3^0$+x$%$i6%Xg*q{QQBWw=1dlAGyb_2Xr03F<&$GifymBZ2POTB)@dq ztCAbCNvRdo`}vn_OMWRs=)|}&;jLNk<=b|Krya?!WZj(%1FyIUjk_;f5%0H{Hc#G} z6)%;9|7x~Mg^=dUcWl{l(WU2a+d|Id-5ElD{$<-Q2-z31@t0k;{S{YUvNd^c)_d8` zEsc`AB`aHxTh5m<{m^%uTzUEBm%KXpST;@4OSfLKRZU#>vgG60DiRoe zF1v&-G}Z0T8VQUt|LLrZLMd%}!S=1MN`5UZFx5FIVfGHy}Q%- z{Mvkf`gr=`^dsr5`FpaDapb&Ca^H*puE<+?f7S{-*TH*=y6g^IuBu$gfM!n@`WZ{QRB& z?&|;hKfe4w{QE0j{F-e$Ub21btIxUYf~)?YSN-BOFT3*pedWKsK7DKP#q1BW2eLoP zzLfoOb~yX*+5X}a#Ut6*vu|V{Fa9F?X7;V@NcLCRW7%J4*XM7|Z_eM9-=4oae^0)U ze=z?*{?Yt*^UvqMmmkc3EBkoC|NDHtxVHGE;+KoP#hZ&a6z?nERoq&tgP~K zK~+_#oZ0ELS0#0FdX`Lam(^#^)!jME%XKzO`W;?XS(UBNXZ!gX`I%mA)v1f;Tcy=p zO{=%{$Er^G-dOFrx_I7nss^grB$?r^UNcvbr7p@_Vy3k-oorK;PQxuTV>P+>KR%WB zNbFSU&s*(}Cv)}cdhhM`(DReZ_o?XA7;vI2XS&o{(xo~nZ;f@Xo*7r+i)T8@Qvy}D zO3N?rrrb20P~T7^mHj;b}ne0a@EY(RAEp*m-k~E=rHNl+jP*|!a+)A#sGtERpaHa8PsXLYi=e5`$GTTbV+|b zd-;Crdq9l}#vGrKe}Nt8?S0XSeD)c6zqJwSEwQ zvU(w%D{og``bx*nRe!R2PpWs1CSnI;1_QvjMy?WHpJheK7uX&|y-1AcD4=Bhl={J65rS7b z8&d1RApj5^2M2i)o2l;!0AxZuVmr5vrstCr^yKxW^^so_9`00nuYUCP2aL;qU5`oc zvNVk{UtQeKy>zw-pd|EFb}q!pEBa7=^I8g2xr8C7=lbcE-?BtcF8|VV1avhb-=k0! z;OhNIqN=O>Z0bz}e!(T97eGvMxleT@y=N*Lh?RVT@A7S)th`lzv6mwI90hy-G0j?C zD7*_*A@t;p#1&OBn@ydbt*-2@D~(fD$S-Z0;GV>b{Pb*%-qXkOYuBl}fT)5=z3}A& z5r@2Qx^rVXz+brtf2MLWM2@b&rDsjkCvG!!$!J%n<)2$CLgkEd3e`1#%ZFonGLu2d z=@gulw>3y;;ms)GeeV4dB+Bp3HP0n=#0)3YgXi6C~lfW_5ZASwv1Po1kpUhaNsuBM`S z6W7k>?2K$JiT8f{fKt|QOP6)~EXsE3jes|6cO`dc+Fh5sjl4t27v=8@LrL$=EubJk z9JA0t>KQ-X@;d_GQBRs7B$Yl9>(x_I)iwqJBtwH#B={L*fZdV$0s&i+JDu^o>YfIP zb#wqkeFxh#GUUdFC#>{LVQ?g5Mu7{(Iq4_r;n~T!u>}y-*GDuls0xdDz1vf!$e-8a zM!LK~ZSKg->%)I@z>%q3!q#k+io?NJ`32!?#>U?~HlXTgpi2(OWV(b=UWCc(JC0qK z1bbuXb(Qqa8WM%nu_1P(n`wid6MFUTyYHD#>N5=S^}RNp?D;53aRhnkprV0JqOCGm z4Ut?x4`~<}gdvmmA-R=Q4asdjklRnBX-A?W2I*(@XLiliwJZ&B%}idWB2>Pqvf&gJ zUMEVZa_Gcp{vL9FFTJ8ZNhQYW7x~j9Pbx^t{{_$cyFX2yH_f;~jdL0|Gze$#a&ZN; zpUN1FJ9T;mwa~J$q?k-W&EZ&mwNM*2CWpXc8T?4C16tXDQH{_V3 z_|&cm<|twmBwO<1e~nfv3TD?iy%)xwnL|5}oIg8RBewsEyy6LMkzth9cU-R?eONu3 zN!6pDOoi>j2T`*KA+hR_wOeeSpD)faih`LM)T+wj463v;O}*tuTr^FxK=;2)Gq}YS z11&&gfxDz$>dcN^XPricw4`2I2!`oYV={?}08u7u&niF8&Xd18SKh6TsMaXcy|1PN z;nNKejMDquot{-Z3Ig$S z)KO@pkUi9D!-(lR)w*X;>uU$K!cx>VT>0!!<%^WoFAaCG89$s|)J-#IrQqq9fsjdA zHlSrvzEiy3`&#%*$~3DRfEa`YknBb8EqBt&j&JWR4-w%g(Wih=8+UE|4ImUt`b4ApyE(^|L(q#4e`x4dKtO8*CcYL15}+231z2k~IvikBJOsEy?J$ zI|i3RqK0@c&HwRMek4&P+xf9m3MNN0OvDmbB^oxXG0g)^NovkWo@Qj}-HM|JEVT{V zj^hdCxnHf(<1u<{T7NuZ$`d^~sm6t|`rpp2$kQyz)JFga#ig#Loy$+FvWWVsvmxn% za4r*uWiu^>W`?8xq?|6q9Sl%Y3_j8(X8pQ(NYTkKj`YWCjU<%DS}j3tyBa!fqjamR zLy>RN)jP&ivdscr>yQsp{jMrUb&LUMQH@_r!YNnQz&L-^4(6cab@Bo(#aTN}wn=jA zI8~3=_rK#KUy~IZZ=W|^RNZ>~>}gnJ{Ep3&*YqbgS9@-&CT{CbQmemC&Z;IWrfK8V zJ`m)aL8DN4|I-*=s@CH#AT`~(bGGOc7>?IMYc+o7=I^D~U)|5EiE~6b>h>JGX8|2VtjzjuuNloBoMhV z4FVYMVH{Rbox$TTfTl62DB6uGsv{LOu6c&3s7^JGA9$dAZX8nc>Pl$vGwQdPRGy@g z{@U=KKQmwBG)|4~Hu8%J!N+X28jgftT!>{)_{ zYZ-8+H8N4m7_DY*F6eNR6m}==@%(2eX>WUm5Vowcf%Vu(Kl2NzDTy}M@{b0>pEtsf z_wKlb|C4eqNCJepHnpQ>gr1FF#PAzTPGw182IgF31{Pdp2AU|*cShEMLJYKpHlTYB zqq5Mr-|?ZQ8Noj_L|SJg)nbO-2(|iKdD<*6Aew0$cTHE8_e6d$o=8nJ?XGJ0%AzoJVOIum8+eXhbOKwZO2YUd&6Bza(lx0B=PgrK;CKpb zNDPLuxVa~-DH;i@j1lSus2qSwZ-jaPH&W>O&+rq(rs42>7~r3u&W0*z`lYmzyCh4h218u$Pg#qO4zw1Zgnl|AqJz`W+d{2b?n#Pp zM!cvW62}39Rgt-LGtuBuI(HN`bI6=;qDv6S+(o)D#Tr6!kTW=lgr!`AP zi%Sn7G3mX+^ms1GqE7LHPyrD|DM$vc3_Gxvu)?tSDs0aBhp?~fw90nYZ^gqS{vXCs zh4&~$Uk@w&-ltnm-5)d_0ww_N?}Ao1RnzpeUbPenQaJ;Gw*fG%S1!%B2wCsS20rOF z_|&zChKZzLLy{T**x-w)U^)*(8=;J4$(;fFSH2(ELs#gliD-buc&VQ`BomSb;}rQ^ zzk)-R$5CCDdKrnc$~+uuqAs?V2gS3C(DVE-&43cp(tS87S&=2F^gDeu@JK4ZrLx{m zF<0)n)@o9TdUaSO`HggFjO(~)!;)H-27vjrS(56=wqfC;>ew1Eh(2@o0V+q^HQr4<3gQEa0QZJ6^&QjD9P?bLLB5t(ORsOOVsSWTZaWa z0BjX9_#fJRU_Pl=l!v0AS9mdGtO@FDwS0}%tv|7R9qLcZFBp&o3}mnVo4uM)H`=e7 zUJLZ{iz;L0g&J5byK4X=qtAzi(V91CWfrywt+}HWCtw?`EK8Ad5n6@P`wiML>k=gl zrRL>P?je+R9Cv1ozh9+5>0ly~4^aAoA?+SurF|jib8Y~(mQX*T6jlXtr;|bH-K(w`8mMoX1^oASReF-R(KzXzc%0{?S z$S*&m4!Fq##=8C7W@K>{9HKH{%J(t@1Vq5puRC~vj!n_XS}7O|niIj$JWThGn`7P- z$>jfWIR0_)anSrq`B8fNgTTlA*Ne6%9;KCkoZkK*T3Nm?tEH>bVSU$o2J(PLD$p?q zof)BM#k72AH@y8^Y4)PGhJso=H+9b~O2uw_tUSCFi^?Vhb!X>HYVtILROeJ@MrC~- z0au8dm(3U+2=QQ2Nqfjph_FcO?|tukKXXNuhRLnK?Cf+qqt{!V2sl@@O&A7EKbe0F zA4&NarXliBHMCzPRD8_wA zE4)uWzD&iClEq7!3O-G8hJlFT)Pw zou_AjNm)vZbCL=bojfCI^B1F670+)txERgBmk)Drxhw~NFBxXxqG91RP{{bexEO8; z{p+0;SZP=kmapiEM1;A$P(H4Zm!$W@0)av8Uz5xwhM0-4m@iypu=GNizx6WfRR#{h z)UF@@%z^o&KBWv1b1G0DPQrNE`|*%dMhZq1?yp~!L@~o4-{_bQ#bNLgP<~mq-}f6i zbNB|qH555>F-U!e4bC;zM!wE&y(htlYC@T0s1a)f^BP~nTAmxf9ZU{Yi0P_7e4m=w zh+q(vw4n9?I>dRtU@)UxY}vSiDCFTvtHeTd@Ty9CzDKxOY_ara)ASn4HQ+bjyO+%()Qc04(ocD-k^8L&eWZnMk5_Bq}piZ7_v|$;Az#5{ymx5E_%W;O_6&@35V`NYaj0$zJvk!95LP=+k>-~bP z&kSEv3*nrgMq63u0%3_Ojd7C*nrovtpj!Bp`keNDZa`1mBS~NlCPyKPDTz@`YpO(1 zOt5DCz#-(p+7sJ7q^B6a^fSnYcf&kW#CoX};APzwr4yDI%v;yEKvMx+C(qMtt{#Ac zYz6k>ttLBQAT7TtH6=eP;U*a5<$v?%hCIC&8#1MNqo*`jIOT_gFnbYZV`0_925T_7 zbFNPti#3-&_r9sPxgbLzDnN!Am1mm-n3hGw{?IO08<;tDy0fn^5&oZjGF~{XH~Jl> zkH}j5Y@O{?BnfT%;$@XmgS>cPO$=M?R7h#23PE_OM6jrUEW9e9g<WeA zdPW%ah!Rur7JYhEs1;O_6Cf#2n6bxzeW#%&8_eYY{g93e`qb2nNEJ2&U;uPyG>&kC zTU&RwGzlh9Az$7NVAwRap54|)eZb9xG#Z`1%5)`$2gDz6?4!e8k7cpl!n9_({9lS` zj7$)n@1)CxEY^;4>+d3Vltp8A~BOu*Sw{s4OB{{Ndf7UEBYO@v_*-hkf|v=<%PS(C!ST_ zE|5^(uLk;f=p%0uKV`MKLXkDWo3WrX#R&vZNq?HpO|yqeF-tTWwdnuX{QQ;Am9GNRD2lI{tAvTJ|`6SfwVQa-6_H^N9Gzrv?gsW1~hRs~`Pp#?^|INt)$F zXKcJXG1;4%UU5QsA|@v)64$+4TNb2fR+9xNt|ei=JPIbs_3H$NbZW}%R+0jY?%hFY zDq2yFQow(tYmB!9%X-8qL6O7l-8^V-&y#M?l)gmhxY~RD zlWq?)7-Z5OLB&5|5w%PDH$Uj#8=iD~E4)367O?4M6OrH0@9>8k`n~ZKTz3)Xp? zUu*|JR^LBp@5U$H-W2VrOK_dcoDdTZi}`+oto~GNEwE%{$YHi)dHd+q+QJuLwm5& zbx7vCw6_f7Dn*)5R%!jLx%yF8PkP6a_L;m>)_L{^tnuu#eyJFqG&k4YDrH8=UneDB zF357VSLIh_7~3FmAPIhgD(PJ{fMqaZiyjYI3&;{sNEeb;LbXz(eyeUpGc zJv-G#npr@o?9R6?nW-7J1dw;*pke&EsgJChVw8U(yR7$)MW|`4by?o4%t~yw zFDhz!h(*r6v>O}_p5j)jLk=YS6XIs6XHi!Bois4UwZt>+Zpv_HyR0I(dEG|TiP!=E z0xw~T5&0bh_WMNLV^11&Kj!m7*pEqbd9V82XSN09v+}n@WyNi^gUox^b;cCsrhr&& z5f29Xd~1WaZ|ud%>eHuL_Q<9K8%8rM?IJb4IMe8Rm<_$!QGQ1DQy9!lSQIzjXBTYl z#oSS=82p5@AhgoPyt#whmi@=9x$>M6xMqy*Qx0Q0?WK^_?U@5?4&tr+nCdBlr&Y>kE0aq~3zli9E9pOpE3i1kaRG{GDGtAZ!>le(`dds1&us7_LUndld| zm%Fc7986Mwi)+VH9t$ads}yn!Vlu@JlOtM{HRushbmp^f0rPcUep)E&vs5xRCF`wu ze~-N{2JbslvbN&;@;}9L#gur>({*z|NK}Q{6qbyZKiI~QhxK8kcC~E}vZa1ar`b$Y zjVV+Q@tf1cmgRTz%Xp2Tp3X7-)gT!guMZ9bKRpgUts%oW!N5g%yRijWEiE3A$^C}p zM1obQP<}I5k`=Fp2)W%=7M^1-fX{jh-S~>eVyh>Q$dDG*X{96mu`@Ct{QUMhf;neDE*E)NGs-CbA zdZCqNe-3W&5;}n*)fiQ&PK&3jg!3WxoQhbIl2q|y_3vQ2e_)OcBo@0aXvK|-QE1e7 z8m<-xU~&6&KCL;~5R+*`t%vJ-XofF?4 zrX@t2Q)J*~0>b3Jzd$!QEIm?Kr92054GcFP+-4($Zx*)heq%#|P3m^;%&@6h{+ z`XSSh6Vj<-@DpNgnX*H-^*ErdOUyrbQc87ABstnI|VJHxaHVhGtke?Xa}2e-Iebk;Zy8_pWpkbT{5sp zoWGX_UG`QSU+0*wnom?L13^*uUFkgS{kcOtRX(7BLBc35?<%H0t=R#BH|m(AF;PFx zye|E#X~FdD@sUQbG&0xi9fqS?GMBl`fi6I0r-Ck=n{=`5cq0`}s|W{M3e2@YLV^-; z+rv>*-9`9N9b|2}n{CyjwGJY6rx78ngMvZNrhhAtt!*%UuQhxXgJVvWDc| zPs4H@C{(=-cAj;VY1Quxup{e9Dn+D7de^eWI3lP$fgXXNCx;>(HIO1-7O~Po(-1gj zw>hRh>(;g7N}4tC_D@9AGmT<+5V*lp5Vl*z`4)6r+0TOsoHK9Gu9gAyhAr82+VE*o z*ARHvm`#~>0k+mq@M^cau-a#R0%LZr-v18ii~k}-)7*o)Iwu5FH+0kDDn;VpepIgh z?0{}iOCZ1jy$@squ0D(hCWyLhjbRQ;3|Sk)nI&Q}mp9c#X7jsl1QvKx0Qs3w4SV{M z60_CdrQ?wWRN4e7l7$FIHub)B{%$0!{l zO+8TI!(`TWp*Eo{Si0U|=5j+I<}Rp+@>9}Ys%j0&C&<^VuN#qUE*uXR(nwVPrgFo} z;3;p-%#n7=u8GISm}+6NlsQgp%(cDI=1F4YZMUkDCe_Di)%qktNL2vZX(>VUS(I!W zC+G!cfonAI-{`T?lv_&{6U$-BDS1fiePbEHl%=&qDgh4Mz{YYDnpAR<3pe0yo z^2f{2nuSLcsRaCBsy%Tn z+*BajO!g$Y-+P%9)nnyH zm3bx&ViaVXGj0ZxPuhvbIbIj}vSy_FY0h>mSRAv;kv26~KBx=|gTt62vHX&rv05++ zfKSQp^WXw=cgcmvVQNu%JQua)B#Sj-LKHfX_nvAx$hyl|Nsr%axOuF|#s(*DXaPLH z9mXH*7rZTlL!*6!)5=CszFjqBn*`lD9UN_~+riNaA!V%fY`VFyO5U~PH79}SUK@C6U9V0>SN?6m2;G|!&EAk)uToGV?MJ8 z)&VXFgg^-47^v#C)!3aJ=2&QOG_#^p&sWqrUoC&qG}As?AUq?V%{Rp!*m9*$E(Z;1 z0tnV=&Q`wsC<6S~+P@4PnOCJ{gCUXJFjT~z%C!Vkvn&*O$T)y;&P(I z4A~Ae^VqfEUaTl5o^h0Zy1s3;_e}Tv=pBB(^lX?z)Xy64r4?0Z?OgBLbl^L{;S&}T z$SuzT7o&rnpcq0E2vWFS^An-fLKAfI;X_A2fds1wO;|_SoO!w&Gu*`pg@S~N7if;= zWX`#)l3%+huLP1 zUsq{B)MBx8!6ON)@ga#d6OLK8w`=f#b9Mr>BhYbGw5DHe zAVSu~2q~r}Tm2U9{zI^!gA=2uSOR5bPk6+Ov9vsk#hxQ+b&l=~;8Crc%o#D8J%?G3 zmX|jqwbi*H+02r^kZ2CqmaAcDOImhr_f)l9Wy{{&cn?RAykNPS`pNPioSqFet;s%1 z&$g1G)0IR`ZN(Z%O#^&DKWyfmC?yDcIr-J$tmXvw^7F3f#YR%!o16snTqosf(9v1* z^^xn5qVnU)JJZwXZ7TAtGqS6>Lva(~(5my`k~*a^&Uz8f>RNN4G%nNkBUnwf^fR@CXt2?nB9$m0r;&8ZleZJA|Od+7?+ig$V5%v`;U(W#&R&c4X=A;5ygBDXP1xh11bMHaNc3Ko34C83H}u!4h5HLPYsZ(VxmOH()}OhR81F zJ!|XGhF$2c!gHKu%y7efEItrdh>liIPYhw(WL-0Is*1HHP)L@8kCnv08*n_m*8qp` znYtJMP5GkDXuMbK9>upI3wa}?X;9iwbJsV!Ejqz zp>y%69tR7?T87(c>8UdcxSL{Foel<>GV&;6LtWH7g@JrR#&k9Dyy*#WGht`((|t3^ z`owbm6ma%_GSvd?q%1xgVo&9QHw25dnijz=5+Yh$;*;l2PvRo5^UE|6r1WwCzFPwm zX6rDPz~;mykG0jqm|07*u+6BMG8YILuxsv$c1>4P9HJvM{z@BaH!#DYhHVNF?W{R+ zF1u!;v0ikvm&ybKrVNw)QS79hF6)WX(A-Ij{}YOyjQzNK$f{Y+Qd3hev}mBwM$)nt z1w$Rg2wGQw(Dm{y>NtRCsyZo10 z8-X?AdaHL?2tL~CDld@-F%|#Z6c=sfuQGPhLXDWDP3&fsb)HX@hD|afO{y~`Y0dta zpYqr~=?RDJOyNW3(rVm`*ZwYPo!trw5jVKAp=;8MxZ?hK^Q#nFd@C0&cY9>_wWeYukzMQSq=Ry(*X6 zq7nfaRj6y{ z%+?=tVRE<&lNXzDdF(Fqj@5;L>kh6d{-50+Ke<0uPx?{W-HH!7@J-TcN*`qribWO4 zH#hq01ZW6RO@$NjZ2ZNUSo8m4icVGIe9_b>vTJ7CAHNkRj-77XkIV0S*4=2`mT0LWFFi>Rp)2>lVTpK zt|pCn&_kRHi=BhhZn(2pldw(b?26;*Z0`wl*7<65XL~Y|a2l(#y?>z2!XGeHT2CM- z>~e&u_<#1vv?hx3eW3&tYfIy_2GFrOzrs}jx9l6RFQ=HG!#Pc!tFM4dTB-S_&1^KO z^SK{OlGoa8Hn>fjTfMEOck>6{V?wVLn}V|dHECqpD?{9C3K=aIe2W&*lG23H4)b3; zA>;D9j3dm^5^mY}XopB~%c4+)TTiKc`czq=l+*IIO7K-78$gQGdk@eCma^2%BcP(4xJxtjr@VhM8NbImou z-Lv`=5}e7(J{&T^7bR_*YsxTIN%wJ{;#m3XDreN8#HpHLa-H=-*~TsRUZyDiSg7NL zlyRN3_VcxUgppVY6{PHzZ;QaJt-EZ0(~C9hlVtP4eV_hsU;6c5{dn~Y)8iRy<_v0m z4%{_$gIM^s71k4mfLa}ZDwhDo>IDbxv(7+WL6wh7-p3H*6w!-c;W_dJhLh;jrxnZx zB$Zk7Z#bN`qyvl$et6T$582EC!(@}37+PJ?0t&0pK(?raVXGKXq5!0O&s`@OooC|M6A_nrA+sY@+%^=CY26x z1*6f}l9R6Oq^htTtuI3{oOG@9!AaLvk#_P4{_E36t=wIAJK8sIPClg>_Ksx z>cm5@H8M74=CY?-KYyqa2H%1a*cHV}QxD_kxkN&@m>UOAnuS0C8f4$wjNGtap3b{=U(W z4`Uvuc{u(qlUU+u*L;wPIsQW%AhYDL0Gx zCM5G9P(;s~S%?l~QjN9%UEj3l0POXQcqZ$=9hy)@)S=LA_AJfLH|L~Lw9Yy;IOP+6 z9cURk<#T|6-pMeX4QTLcrDYZsFCSHxdS4jk#ZKUTzLG~EnFe^YpZY;OiF6kmHA$?Y zR$Ve#>i7;^20~7?OW`NDg@cp<##dLa(oS8e7jRM_n6hI;!0%|h3N@r=Us`#C(te`A zWeoXLA%P3UwVLigqMQ!DU(&g@e*6Pm<8XQQXe3h3@hB{c+p0`dra6!&7_kBjCoMkg z&9ylPO&3TaPH=9xvr6yW{F?G+Nf960O<#<{DsEem!E!wfKHv(3Nvd+PeL|d0lX>|` z-L;kN@D?u2&U^N$Z(mCyZwOL5^%k9Cwp#C<%kZ^9rqAB@@q+wh^4nGn2=wrm_7Khn7h}h{cJFkK!VNgGPc?78rhJ#- zC^H<1gQ^TXfhggrPUVnFdsASCtcIuFcgnH&A-q5Ge$EkOZu%Rk{I(y6*@HWL+9+6lt zXk(*c__2uLTM3$QbPbTUAZx`iyBFQ!_MWrVUzgO3S}?kkpL|WW%##G&By=CfIySfRAk8z}B}LLS~wb z0swbKTHj$W`V-}My#Cp2!Ge;6FY=s`-Jw2WG2X6guZfj~FqA$}h<#xq$F-b>2bAuZ z)LT2@ru=}UEgV(De9cOkkUNR!(*eARhg5VwFQ3AdOy!4E%&Uujy7l>fNFo(x@L5QU z9JydKzYSD^3laBd&jy~>O*DFNf)}5fzEv%MN=D`B^q>3PYWei+Uha9KBd2F~`Tcuz zZ=D3f0Nej`+^O3x)!xH~1?k@*`q!XLM?{i0_HUN@@WjCt_revT(OzEKn5>0SRwX?~ zxqIhs1aML@V`+UOt^0&pdSYI{!QCe711e>^)ft-NmsQR3e+kfG))1$f5>Q9)D&(X$ zVe`J|Nv-+p^jug*+Tm{_uP{F)q^AiccGB+u6{*0zHVWP*JTkOIcFGT{HVN`~RR{6V zJgTWBA|gg#0BMT~Xii}I02k41oGqdXe0DrDMO7>|IEX=9>cgfU^eI>|(m|fYuMPvZ zW?jWM1jtDwfR1{aH?CkvS5-D_JJVuHJxpf=Cvin+Kix^g91N+CkmF|E6DoMSx_toM zq;sX*JF%Z9x9(_PWe-yJF6Bqz@8jA~MrCCYxQd{E<$GN)m~D#yc%N?*%AZL-ao+sx zqXUDZ0gl!z8-^;Ap-#!q}_viUA17NY88(!nf32TC;kk82XgAW;e=NS^5-&Orn>IaRt zR+jH`u-51MGUHFGD|Z`5sTZR;su@hY&I9p>MCUJytn>Zu z&M-M;l)#)i+U^XO6*8?6E|q(2d+z}ibQsE#&ER~#*}G%&M~z%|9E}La&BZdyAs(8K z2!{@u(rq(bRn5#sVd{kgr9DV-dj{q~Fp+c_Y|r2mxNOhJm*1X|*U+ctl#f9Z8jckI zp$X6v-<|>V7#+cDh8@k2Y#TLXm=DHb6J6^b?!d9~W9IZau8kSv^v{MKTrJ1gnBl7Q zcsFJ&s#t?$hO=^sZiOaC*_iRnM8vUgtZG_PzD;7K$%7J&z|vQ_XxqDPEbp+HL7y1V zq${b(RKHr$EtKT66^%Y4fmqF+@%4N)({%=qt7;BkfO4!p@;6AjAg!;_5sE3F1oLXp$IqXZQ@%?Cw=SMM zsiql{s!6#fvE|0<1xl_+^VXj%UtB`kCX|Q(P;xINJ86<63Wpf4Pw>Fl?Ck03YEmB! z*JabsPh0rZq~i6>^}G=P!~~P|FOx^;s51?50H$Wf%xC%;UQGZt=Pg1ie=D%#+ZRrE z96^WaTEvh7<|ga&uBaDw5sjshW0KpSo7U_GnvU0}I0RGfO}*xd`cg%-8LYYht4)L^ zYc)SEB&hue9V1=S{tKqH(P;^dhH_vt$$9H`p=fJnq39w5ArwB)hCf?cqgqkCQYB9{ z`lg!Dj<6uBI)_Kz20b%xv&kCVBpEns$TyU_I{+leTR3pX;UCz2w}$02NMtbIX9L;L zcV={;DXS@{vv{ECTZ*(h;;at^{lNWF*1DifX%63y68SoHzSGxG2s-@g8JC(cO*j5bbvHEdJXmLp|k)ClXCi_)tfa~SqdSSSp7p~`q z>x;tmEW3`)g+H`2uB8H7BVzGn0ud$UIV7;qC4KAbOtHZ+#gvYNEDChBs6?=d)++pO zrTML|RL~cWIc2OxaVxRr!!WQUAGZ&yv2+bTc@lcP>xI@-TH2>dv@cLc_{10`R9zj` z*`c{eEVm3RQ;^=jIgnK(+6-9spwW1JW=0*hahL!Mc3xmP=_M#fHDa87_Ycq`+~Rfn z!gXj?V9Dy}senr!J;eL^$1O*FlRfPJ0!h)xIFe??t~{O?JMbR{toYz145(g#C#KNQ zRR*)2;eB;o>I5k6O85m>6EQ(Y7wyY}!M#8*4CF=x394;OwyTMN9eA2*YoQV(3F07& zEn95M!_qPY0LWt<+rAlk98DlA>m%MlNk{DQ4?{R<@}qxh%09tnCKlij1NWyIkb8f~ zxpY`h?GvF=mrxhOmdiC&C)QM{OkJ!7&V7a~)TOBpT`v!595fb6HzZZ?w64#qes){m zPfl^Ks~5vu_F@aM7@attg2Miwy{3qP)ozQ?5j<|5zvlY*K_7z_`Dzt+rdYmZq5{lg z%tan!GA26gNGxOSBl=zc)$7EN@zX_SUXyyHol1)|j;C3xveFUO0oz^t1UkUSs@N`? zSCD{3JD-5fT2)p*4D3GTK$kO>!&?eCZrURGD1^}@26`T&P#a%WPu%I?Hd`Ky{01;;O{8U4;eSUXgQg0;;B)_sO*WVH`ix%QC1sK3v>Nx4L2*QX*u6fsdFVSnM14*4T6&NAfxXyXndQ-sdPmf7l-d~g(|FiYfhsGPx=gfY)OTU z{8kwEODHTN4x=Ius-3>snV6VJssGKYSJ6V+a@FCY11-DtFMBe^Q2oYmOMw0B!!6sv zUl(q(UVTHjWm)-6eki#+NK?gZ_7 zYmNGQew7ZR;lk$->wWh8l=%EkmL>*+{t-47#pO6{aRaWbe8eW8xdp@6srg?E35PWz zXf5nT`Z>4!^N@akbP~?f&xO8Tft5gRS4@UBUTv~aRud_EtMMt98OM#r2^-p(@2$@_ z^>NoxopKbnf&Tv2LwMO2-V=;<-|hAO^rBwROuHC~5*C=m`e1 zY#Vr5EObUbFFyzLyNV0c+o|}8H?UXDAn@c%O`G%ax?(FJp zSAO*~1hCfSK=*1g|cnRQ!VpU9ezG?uTGj)UN@(^V8X z`d?FqQ339b>%7%mxyS2~;3jo7SO3wyV4(iddj7Lq%XdnlR|I2}2qKp?Ga1=7&f!}$ zai3>P+nJ5yF`uo_pr>c+xS(|^vMwNcs@HdZC_HI_7?W(1?%tasHY~-So*kreGVyZ| z5%7(bd^W7-`EE&xo6wgA5}s4re5`Vo|8aD{Zqd+>L1opSPjpfDnKD-RgeJ3UJfAv` z6_9|H8Zv8@&3dC-U8zYW0Q>eG?CNJHHvyg{o}TR$qzK=Fu5?bjDXCj<>$c$bRQ6oL z==eL#Aj_OEIbE*z4Piqs1nWNV;CJtEj1WRG3bvFJEW9$6dS^=ibmW}O9NVWouI^&o zG0ZJjfxage4$L3wB;Zr5O{RnC^a=;+cl}e`8Il@Ub5 zKj3J`BV6$P^SR`tjb`}#RvNLyz~7ED;pg`Rm-C*O!Z1(P+3fz5#jT{i%kaKmzu|BZ z-$A4dglYh=iG~*4t?&|)ig@Bsj>s5@GGfN`htM^XSj_d!lZ9SCgh*Jm)>}i2udH6nfMAQg8 zcR>Dp3et_K-k?#X zuLTF5=fSIe-rbeQsg04tpyPIkb5@+Gmv2;QE6RZM_5)zBoDaj4RIaQ>0nz}7JyL<^nM}EZtHzRH6LmC$#|vPjB(&740mF%Qz`pM(3U>T z8xJanl!30rik=su+^>?)K*0 z{U787;WkziZ*H|W8Kqzkd*D_kLaabifDwYCJCTk6qwe`cbV&CAa_OkSbd!GY9JjNL z`V99&Uo|MCM47$K{~1s5Gu$uE6bJVV!@bP*)KLI0DYC+OISrRP%Y6b#?lLV`04O&; zqhk(5`oI=loe+}vcFV0h54w9(Z}8QXjm-?fnzFS;wxx7jx|jaK?j4ZAiWV~<&D0SF zmLx5TLd#9#Gm|PrHYWA*T20^`+K?pdp=y79h0RZLWKGJ!ttCZj(S{8|h9wj1H6TSx zez5pmGSU59t{#pT86>@$?b_yPmkS+V01gF8ly6s7&Abcx!3AHMmOz+OR!k+zeR^G| z0v48~wgS-;gmL+ppuLH53_mVMbTKcq(;a*!$1!k=v7cUpMR7orGL z@;5{Xal&SJkPES%3=f!DSv?&dfFomXhL>UNbjM2g2u*%kYM(Xp{#QJnM1So=H1_Eh zk(wL-5KXQR(Hu{AFh!T*nDcGGrupq~94;Y2c&!i7G^PDRGyqkx;LN43kK`P{12Omz z&2+7A$$;{Cyda*=*J#M5KvZR834NYm=}Bc-^eLK?)m2JkN&pb2m>o~wI1NuVeP-8= z@I4ztDSE4-4zaZLt^5^ZUE@N;L%WBJ_2mpa{N76X)bz4IdfoJ3F7`Th}a4(~7 zx2~}CJlA>;(ThH3_^jI+8iYOzl`gVU8Be74cSPKk>@`Q=nvd@ z0NMU8l5M7e?lRh!j`kVtOT`h4ABoOd9oeq=jHtcsG`d-~w!uiqIrrkMJ-Swn)96N) zRuo3Axp5|r#MChtdaM7&s7&-Zo(3?u(btIhF6Kx`QnPJT#PhBkb`cTF*LD$A)UybM z>C}*isNE%Vw<)0^OBFptGqPj>tq(5I6y_fqS-H7~I%HtRb92@+Fqd}^EmMU<-Jlw@ z%0CBM{RLw};~%QrJv1wJJheV(PKwFs9LkjnYxzuw!UV9E_lhO-!itI+%Qt(H?oCQv zhFt+;zhN!!$sl5;)lYK@jfC5MLVI9LMaw4Zvl}xz)Is#maYU$1ecj16)Qe37P0L|4 z$&1*5j|RSF18q!-jw5U?2=OFX+1x^Hx+AkUwpcl^FaQcStwU$UaW(?$vW}gE*-`yM z>u`V2byiJ0C@f)usX2%ax-gu?j*RdHNr#AYOZNtep=M*`i=00jt3>K#9T&|3fXsqL z2|*HtO#WP*ifmP9;0Pke3UX|0`GNk_rkk^I=Bmy?xgVS#NO(}CdvKQM&d}Mi5j>zZAtuR)ITrBa8QTl%bA&gR9zQYs9S~3?pERGOE{&MhVh&%R% zd(s0eUv$9F{*`gTHl;h5bk0>^lTveR>q)`VZ{+g!o(uETN#~b`op0{7&<1`Dq+a!sx;cs?t}< zZd0$5-U|oz?ZEiPQ}Q;wHoH2yO=!@~Z0|1C>+5!Vo@iq)TiLICKb4)32*1Ek9+tnW zN5F<{vn+Yy@oP_QTaSmAT92^J6Ip1~1kBoL$UsWrE;h-AivNUkQfCzzntIMr3T~| zM;nlyAID~W>xebSg=GxLg*0m!kR#hQ15!w8uR79shY=wXA`q-Yy3RHRB+@v-fJ7d= zTx-UMQLsSQ0ff8vIufuUM*y?fhP*|nXst6YG9pLTFl0owyTveVSRasPHX4!ZgAw_o zEhBPd7d~G9g){RJv3T?KH2G=(vIcCbS{OCrc72eAr z)EJRgR1Db|k=#oe%fo^|wvEU`!$#ytxZQ|6G%z9`SZYMxiu4SuNP+YHT9HqJpUsMF z6CNw_ffhdpJ_h4L&JrtfR`Ur=_G4O+r!KJ~Ei84B6-h@%Sdj}NxM2L8NNKjy#J`FwgeCX279yknRU(MG6nX*r8}e3avh% z1DzS!W<@T-M6eq`|mPzvFLZ z%RE>~HqGE7yN>~>vmH_b5&udMoTQ`e$8@#>R;4WrHlrbD8ZC$stW}?`3M;hJ zhhdbht-WMMva1}49@MRp(o*tn;uXZgE#j=ZP>AdNJrakX7>Gj+Hln#DRQY}V3Cs7i zn6FuRf9!RXk86e_j=mUlMKA>e-3(=+&d|94kFlzk4b0|-n6iNzYMNNx9xRdtvq)r( zn5AKuz<_5r`W^vvlgznn6HJRwL1^iZpQ|yKgmLWmYV6;b?*{gz1t>orjC;eWC6z}4 zchEiwYTzTU7p~UV59vAx$U0!~AGBX-)7k97&=(t&R5TvGAu;gE!U-I$?vV~S&cq&_ zK|vC+i6SVAN((zAHGB^THus`plm}5U-rr0=2D1iPYxQA~Hdt(7)?i|9@Zd2c54j%I ztU+BBLHJd#nps2B?Ko>7PtznFh_eQ6cL%g0e-Wm`ty#mzMZS7f!)HqlQxU{!yEQ?O z)@e-;_OvGmWF0j@_@@b+fKcdsXzW(ZaXV=FB)mVQA|tn9k28_@`UIOc(`$;j3t;aE zi=2b`%Bapv0VtuF6x#+FMMa5M4{`nxUrRMVb)+h zBfqeoV(62Fgp18wt4u4A#AjB2+Q9P0zoFw97)Acv)N-Q)FYXb=Il6Ck{%}rF}%Vxm}?oHwNC)nF)HYO;CYB zjidj-2d<&KKp;fs_0%OGpPiKEXlF4$r2_k8K{zPS09bTPo`H)@;9jfI)SYSox%^6G+-dPHv4B`ZVyzI$^6lo0Ff?hLr+_Ohz6JUTDZqhy;+20eZ@lJ_gQsJ6Z0yrbIllAzVK%|LE5 zti4=KA4{Vm!#XB=T#H|(pAXu|r0N@#9L($_Rp9>J#%nPWwh0zd2Eb*Ra$V>mj^?inx4{|(Dw$o`E>e3C&aaG=5I)@LkBmDV9PYIQlXd#AKr%Vqh;cH~@hdy8ab|cG z^?uUgk{I_IAGATMnR!?Ub-o`QTC^#(5GTD%AMg`dlh^?YMR+dXjY02trHNXi;=Tgs z8kM)7NzFmkor~6}*+?m6DRJxEslWaG?u~`@$16o{;^R=j4nL6mxW`OwT7x~^TguYSZ!>h9G`4~H)ZDx4M3xD zg?0O}zF@AQ%_mfd19myjVU+AL(a^qzc505atsA;1$<8>U{PIhE?)rLmRCkN z0jCK_Fzjd*gVntw2M^3cCjEw}@7!2l8cs74s@r2EI3v4%xbF6cB}3g#B>%MJ$eP{5 z0ckAwen1;@Gz3nJ+|y>6gRqRLBOJ+M2Vo&{hG-7jI|jDV-Q%N4*9Y57Sz_kd8nw2O zFupswsY94_*HPfLs^?}YC=}lkr{~YKO9(DJDCQMX7K|kv~5z= z9sp11)t{Nm>PO<7NQ7U9f%lYU;@|cDew_q8)@yjz*QqT@EFEPhvNVo>ClWNDn_trz z5PJ@?Np-s2LF4<)05PrMeX<-7QtYyXkex+@yiY^$40so7M8X9^b|PU#NR;FHd|`-? z2uoW5Vy-VGr2EW#4b4fYPkKh;1QOb(KSiZLRY+)uKZGRCe=rhyAU}8p0~J-;8BeV~ z`|gwhF_(3?O~`BL9z*q94DAzKJH8KHK*!jqt9J%-1Fl|h78^)($cJ9Q`Vw|Z3{S}_ z)*AIf&A2uyunClrqqZ7Q-@=&xlt-mDYx*{W}uMwYaWdaXp;E#v@LCGZM@&@ ztvJ%iN!65_$CoADMgJTyZ=soMYXR6yu{hU8=rubN&oteO{zE`({D*WqlpOdE^*#c_ zd%uUL-I%aXlA1;%7_(PiYv#FGS9>6dD$AHT8LwHcFw9aZ^QU)&+@n`d8|_Ighodph z!paeOW$GV`LjUiFRy4D9;B6iaMPRzrlkT(^!|%$u&9?J5tM7dmQ#d zX6~+SZ1)jJSiItR-4eTfC~R$H4gY8>j^91zuEvq@*``KuNVL5`?QyO+K5kZ4Cpyq` z@o5NKQ-$|RCNanqxHKEd@TF*K`U)friZoRtRvj0Gu8oBKctY29XEr+9kmM00i&h`qFSHL zZAjjb)n8%9h>JsL$IvVeXCInP7+JFn(?46ijDb}egqpxM^RZbJ*-!)=sIzst(NS}n zyBKaTK^AX~TtIb6w>_DK%x{W|jCxDM;hH5q_CD_U+yU~P8V3mV{0ABi7Z);z!r=@! znLGcd7cz&jw5(laT&kr=EhuWFd_=tKG#XmSd<3Fdo$fJcEo3sVHkN@%8(sa4gh%tk zYNwUZ+E5Uj3dZHjfhY{j5514(2k#e~A1X2?_dSb}zvc=>k?1q{@n_O}6J07aCrZ>e ztw_2z-?S4;8)kr*KvMHfp?K3_u)!cWVufa5V2!XOg2R#lkfYIm8@4O|a8L_rcMsC~ zn0b7Q!7b{>Q1YVp4zk(c?x_#7Qadz*I*!3aW?ab>x45DdH~)+YSTn|bP+-XGx!7E) zEFVaHa?3<-JmLF3^g)JhLU+va9_i6k_uXb*=A?&5Qgycp-+uyUJ(#l;d(+%wVu~eE z>(Qav7}0J8DPG0%D`5R7Cq3M2d#hvEzU#!}*#SQXwViC^=Ja6A2dTjSXP-KQdSmz~XfnDbmvocB2wGJz zzRj`2?hNI zFIhTM3y#g_nQ2iQrwCFKHt(B9B}G;Z$0Eois3y#rppUZHih9erw42o#yb}HF3Rdqr zRkmHoR^Gz%nWn%!~+QZ2oQ@MILt z%pHh-b%~=YGG=rNDIz*C)@Hv@OB;c{Jp*p}cI99>^d7_!zKz_VL z8;{`6@Mzu%N}|xfV~P`ngO0#I`|3yG(YXonx!cUAel(vN|JTsL3Zsu(X!1U6N-%~t zAHMFu{L%v^#_)d&n$F2?j%t}yVK}Ltg$7Z^O%Zo14i05duZf)!=RA=>e37$>n>v_; zL57{s-SXz(icpSdZZHfrxi!m7Y0*RZ!KZG?Fz{!T?+R6@Sge8`MEil;7~#QGbREK= zQwQk3_0vaV>viie0Su@4<8Uy2DQzF@);f>TB%%BZxiw5@%fH%3j$Xrl_RfoKO++bd zM1PIM>zq4Z!`tx}bI);ewzz~(Lgz4ahR&-S)DTATp&D3beldh>9a!h*z3QYh9at9+ zj>465=da!~pVa@fVYNjE)?Jqld^>F1PaSEPRb87ZTH~3yBEh2Va?)1!Q$rk&zBfV6 z%{PE){CemF%{^6E&LF-S;4YxG+=6G$Y?VFhE+Bo##vALsyLB+!5%zQ@o*vJ(vPJx8 z_%eO9)$4YQ%Xx}zLAHSq_8X2fc#uTt5W1i^7;+pEM?IvxFx(?t^)Zygdfts+XwMDE zk$`7!-Ln(%<7TmuzM*`f7rDwWms@41^uV46ZE&@i5;19cb1+gLQu=JB2DD+szoTas zsD=Y$V&fZEqgt0Qw##v<2pff0WFV6kftnllQ2H7_I!J5$yzp9rV$(cBkWxFpBi8vF zNPL~&ayG(*uPsW@k!Dw^&btPKH5#t`jyl(SB`ZMitM9ZdcHezaKC7jcs~30#_shK_+;@kTadjL@vrU8H zb#%kFV?bz%z7EFMu;rB0!Isn8HJAZ$bl~wdkH(bE#DEyEwrJwri^e+uFjTS_ocP@* z91o0pqrh40!TaRVJ$R$57;@pYdj|Av-~`yYao51VGq=lzYW&O8wLgq?ZdXM{6P>dF{muq)v({2zvS^bk5;s_P|O*p_fE5VtqC(jO$f ze2e%-95G^dtA?uPn6odLLHeW7N>K0V%MWg20w^>){dQkwG!}N~hW&YqkO6nfDsPZ+ zANt$3XdD$8zRJ4H{?dk8KN{vSkn21*UN^d3ZF4EyfVL)|uG?7`?_ z3+19|GvL8@xVWo+9T^~}o^*PxO5>WMOM+73P6Fgad88#3(XQXST2b#Bc^_h zME)`hgmTo^K&V<9%Y^>jkjI=U`nljzKAw*!?zY1s3RWqy#I$kRL1sf#=Pb3s7i1NcFNjn)TKO zh2$i^dp-f2T%R(9r1vsu9!jcbIx=e)^^`8H8p?A>RYYacnVI!=P+dx-bD>s zm87~`f2V2pG(w+thnbo!xZ1Zf!92T9lFc2CrTfZmz@sRW1!_67&v$Lw>FkQ;Xj*&E zIH!V>%D3j~K8F>Zv)v>2tmtgj+x##bSsu0;CzP$*pL`7&Ctj@W7nBcGOudF#=%nUf zoa^;soz2Dk3$lqfn5#`*-JfP(bzew87DA!1YU=8$V`q$y>5Oreky7Hr_2MY4_9GJF zGsnWi11waEs(ggu~R`6%)E6%u}2e; zs!<~Bg7C&38#JcV)zp={QcXL5Je|5)y*x+rOVtCNoZzBo<5$>iG>smFyRJJhpVTw; z-BxQ%jgdL`4y7Kpyld+R+Nm+xyMFk$Rnuv4FlpMmshykfa2U(QsO2Y@qHJxa*x#O- zBd?>jQ~Yh&DVU7p{7>UniTM%J5gpzWClkz?Xq%MfCKHF!8K7e~jRwyIH%WUgF&k!u zOeNNUV5rhMvVeIL1@LEmb{+z|&Kmxe?V(tGk!(ZqSKLtmIb=#nIer9bbcs*)JlnU^ zkuwX+|2T-bdnm+L-pLKg?4pxw#Iei|W~tHbcmjM!Hfl~gx)AMK3fUT#yJj?LCiY_{ z-<&jah?YB?nZ&>qJ_;Kn`;S^02};`;Za8S|L0;qyA6b6L8Q$s=I5u<-W_y=UcOBL4 zIp2_MZ%rmf*4=i5KYC0@_%c;E6cN*mJ?lt`(6#;Gm%AJMDu!D~cr_#Ip5K+AoiLb7 z@G0qkV~%h-dau}zfB-3{SY7#*Ye`gbt89IK)l7G@)>GS)hLLc(Gh91M@P><>tKvl# z_sUU;^1jRel7)kGxy>8c{x^H?18wD7%d85UKPF*+f6kRlWqpn#x-L@YE?r4or6?NU)6bcrPt zTDDOO%t#?Y${}j0QA-KQe7<|1^ZRq}eMtr5%&aw&T6y>0^EwlPlFay`!9^l?5feVthR z^U^&HtG`%a1SMiHsw`SJ%LM1tR`=Xa2`1N)c7gL+OAw&3gD}JP!wpa6w8arw#neRt zr`H{w6JZe?Zj9AYjt8LpVziiu_&bSnYCF3gcKm1k zOvN|Pv5rIjXRx!M0ZYOGOOkB%imaM8c}WEO8LBHjI{)!-DIL}g z;WJ(vKGO7F;Z0b`S(us?t#2Sc{U$LC_U-1`0m5JMVyTG#nv)CMKC~Lm)7TWs2ENQm zG}FY#d}2ZFEunsdm1o{gA1+5+jX)Aqdix z350`B2^svNHU9E=Je)~7qqgr5&eSlJQXlA|4Bb2^FgT<10UBS|a6DBPhh!XXCwqDK z)~w&S@MVhF0fAOxhnaFIsHBd2#0u+Z-npScJusPrCD{}@&hp4?(MTPq`K}3;8QZi_ zJ~6HH=M>o8Q1FPnWus5g=hi5fTpGoaTfABRYA8`Ixm09A{mZ6`C4fQwGsw}88mYyz zdc__{_?a%4aAjUYGMV1*Wn!lqW!y1g!XfgA(y_=Rc2j9)0z4W%QO5KY&Qd;%3e@Ej zhG3Q)3q*o>&a+$=97o79^TUk4rvK@0#IMG2DvKh+XDYksG^l$PI8tL>?|yc|Hagcl z*`MCbMa`4_CK4FnIB>TtUg$IQeZe;R{S9$udh=W4QZ9MnyaJLoY9jy==Z874ZKwjV z8IN?!;spXyXT2k6SSQ}dHNWz~kF6zTWg|`W02{OproEL`KoSGx0ZP?)Jkk{VXoyGB zW#q^kF%rS#4H@>B`Q6g*8r@Wm1c2(nI(_Y(Yw2(iWGz4{^SayI{0OFF#AAt$O6zA` zV@oj#h764x05@Mo6M;ylQ22%jq@agRf-?uBul)^fF+CXKg)a^(pwu|dQ)+yo%|jU= zvmO+pQDSb{X5_CGVN7+n)W4Y5ku8S-L}%1QLji>lcETnmByp$&v^wmm2ND%K#Y*z) zHtOlBuG_dpySmv#-ed9xapF2x%&=n$=z7u^zh)dhd|bHD#uFsBIB&ie_jDP9w&_SV zvDoe0494CLmEsU$B@d{Y;7F1@;4J6Ekt`Onxfppb#8VkZIutmNPmIS?3Cp)Ec0sGq z9pb2tn_S$CqncB84gjg*sMz_L?GQ)h$Yru?*9mVoQM;m1{3bwPIjvzcejae*(V0R` zM}hd&uHE<1XcJgzkf^jNkXnOI&EA|JR`UH+q;;pXSk4nh;H2lFSpr&NTF^dpTBZbK zxj=sFP-h87G#}E&Z!)>EL#O>qYB{Ve)qvQCvSE*^6=Ar-VMSAAH=7K)qGv(Sh3th% z+puKjG_ll7n~4*L2FHfrf@#VxuqfLQ94m}%M5vYj2G<(jsSq=C&~`{iO~gn^f(+Fm zK#b*(l=oU4$7!sigw?kew)?|wL>kk=!;l5?>f(lYj-yyFgz$Xu16p_%N~pVJf-u~$ zdA9`G0-=O_vW^>HfVRNx!jew7umm)D+|`o=VEJ(nE3Ju2_TLsNUC52745)K50hIx@ zhrr8{V^tVK@D;WKf@4sYBiLDCg*@`tk0Vd%{L{iivRY`H7GD)`=Nv@}&2$8|DY2)+ zk2=0e6w{KG&)GENNzu4zLzRL6?HPWkOfN z3bzNcDp1!wI4o4_p1M?2sH~78F%Agt=Id781BkFyz%s7R&!yUT3>sUOe0PE-4@PVA zxkYQ5r_KOIIJZX{X%R|{oLDVBmzW@3OIaNqQ?F_}NRa#M92NQyh-w{4n&!0gBX zK7QL~-9{MYv7On%K`rxm|7WKj_d(a~< z{Ku(!q1WHvA#-NSUVQ~zO@1cR^}?eWZB`cR4Lat$#m5{K55%y$kmbD;+lb_Ph~P~4 zJQ6<7>GQ*xdw6S3f_8W$x368EVq`cE1@WNGYK3(T=wKcd#P@lI8cb7D!S5k?M|A5` zFaK~33LDn$oHPfGoBcLuXIoQ66fhAT49!tdTfEoP#Y?@fkNFYr_T=MfLrdJCi_02n z;$7itW|NJ8ck*_>4I2s2MEIB*>G2{af6}yl1L;;lsx&pDRG%j{QWVdC^QxKsc_VX$ zhRc&Pl*P;yd>0#>lDXncUP|YX3|OS7K2hfgx+2GF(iNqkIKb+u(iN>IxM|SKj;9S} z5u>Bpi+V_Zo$l#Zl zb4lAUWvDL2mC&-cj$Kr#ZTFxzc|2&c_q1CLK>%tEq$g@u8Rvo`yHUFm;6!PX;A)}^ zGbvyzMK(4nU`>_Xut^r1F98}{t}+9tO^WFZ4*-FFN?aed1hcMp+XD7|3XU)Ew3Zt5 z#N!uK0FTea)-3peBO~`pAP#1I59vK=1D|y#G&-Gz`*Sl(ri%2 z5gzNvm+%rn z$py>?k=T+AMXDtf~wVW_D zaR~fP3(9)a&qzp}ZbAv@)+Au)hLu^^uI!Q9k&Pw0G}o zv}t8+{m@VR)enB(t)r!4(<`-sN`XEeK81Qk{hZ=chD4nei&Lnj{otP{_Rt>X6=!k8 zH8FZaU?9;O5DqQ<+h0N#H|CZKdmZWJos>3-2|j;;0aQ_XELL%i>uLq*M$G; z^ZUH6nq2}_(WLC_lK8?)sjtYaIZ59 zWo+vRRRs!qa&_{6I(UA<_EOHQs^FJnL84nj*QhHwKu8vN(2~$6+KUlrJOF#zKn(y$ zs{+Hx3aD3Da>ddL_tFNSPQ{^9_juzw3pu8z*l3ZitR4E|FMa%74A_?HQ3Hi$_D{gH zADE5`DfHme>YNG+t+?Ge7RYf8ZgSn)S~Ub%3jqnn7!46-INoU8V#gLb=$zpb8Xz!y z-7@rP>o(h^S!u7_GkWU`_3M=jN~@JCPNk>etdn0n)e4SFJ5&e{Fsa9-&4V~;MsPqj zZDlBx^;514cjeM*)m|D~Iv+9z6XA{H_fC>IkItXS2dm|UO(NgoN81A@@>6QwiJZGc zljY<~D!3*Q)nn9#>QBcSqZ;<`b_+30)bZ{gnjD+6E^7kT13`mmr%3PDZh$^Y}b>p>V#y!U6nfn+J zWsx~y%KtfAYJr~}G?=BSipObE(V&b8v5hkI9%ahbug5;jBh6P(2A8uJp|H?BV`KfS zi?~4E_yRB^H0@)jKSW1VvUOx+cEXsJyf7uVmPoXEPGcuhAGmD;4~v7#c)&9!rxATw zhDD$Y>ELO!ngnCeqCU;lF}2Rq>711Zp;bQ-`w{gegbP-?`=N@2{QKx)}I$z zFQXBR7P69MyY!+A2&lym=%Jk6(!nq2t5yW^QgtqLptD+?B0TmXP1%4NGJ!vESieqb z8VBK+t~_d!dPSVmvi-*To7Z_`-&^<_-}s+6Y;q|8sE`55;9H3){bk5K894xd$B>K4 z!X}#+l)2hA1jC|utfl(s@BuCfn2(P9928y1$y%_a}3LmrVt`vIslqCNnwc zVKGgBuJQo7YO}hMQO^1Vy=GBj94EA6kMxu%5RIdL$6RK!T~)Vj$;kX^r?lv|v=7dh zgaq5p>fz@b4gYAG<}r|h;pcJq)r@(gQf#3P<_l8L#p)V{=@q3V&mSDsq-bSu(F0@Y zQCU?23c9w~@$O~Lj07y{`$)xJzfoCPc=HwRgVqY$Rf z?Q`)6S%XOZEoYa$)_7F}1#oJnGcx3@e^})H4{A!&-?z9wzRZo3j6^5@e9n1x>&)ef z(ToKj&VDDHmQYULPyg#u?xJK*;jyH$!ehI-di^1{GWWo$*I+_D2#2(F|Y2 znXV)VEZf3p-LupR@Ac-%-ZVb}lfHLoJ^LU4wy~9n#fbN#)uuqq7wJte} zl#7RVDL6y!aKTC3q2OE?yv?e@fx}~vpsFElb+am^ZT$U!y^4u^0=2QR!Ch8`ooS}L z%FwBAmscoud}!>3LQt%}4L4epsmwP5bF61WY``4P3~x9H^apRZ?qI$XuMFN{k06-I zNAJ`l;yJZ8@b_iKI`6VIXihR`+iQ>%>8y0tV4<9Zwg&ms8l-*Al&>oMZ+$ra(?)=j{J;<6k0f(A=(%RM!x_bi5yO}nFvDTtW1p$PUBPsSQ6V{U`f=2`OBBD z$%CxHrTK22q}@Eva&rvq#D);~aV~LV_jnEC8G2VJN(hqTxsumok#wv{=UW|$ z6YpBZLxCw0Wt87!+|>{)phxzNAz~07yjAjyXqGpFl4!&4gyDC>;7`V?y?={1;&`&D zG(1V9S6ARE5eeJo#n&CxSG{3v+BWSK*Q++)*W9G14IYV?=|Llwl=@^^xyPySLkKGKCuqlk*((cO|nW-VzNC+UZK2XNF~Xmvy`ijb?@J~ zqZVklk>5uj)lOS&OXEAOXk9lERDrf4`Pd$N&pyc>G<_)g$HP78-MVcg{!r5M7pUs7Uvz5l2PdZ(nLWYQ$&yUi9A2|c=s|53_^@m(I{9RAoX;64k%Ajfh zYQY8**YDH$j2F1DR6-s^VV#91ISesopWNC)hf%gb4)>Ccgo~F5#^vk=JJURpt;z_a zM%Lg#mYzux4NB%A@gp#4*#M!wgW^dHhrjIb^$zu_#Vp&Uo$%iqEQk(5iR$oIsED53 zm-W2fcX2o|DLZ(54mipOTC#(pegl{`E7@U#j&W&rnBz7pZYwTl zrEpum%RaO}d>+&%kVi4%UYxs;aLsy8MuXaw+l2Z0+Cfe~yvZ6loXO1lsDIL(_z)_l zLOE|il94zxL)5R?g+%HA`MTx(n@*#t<;}J*E5h25??9J}2P+!=kVX&SnZkAhlp*Ewqu5@39oyRXE~| z`Ae8k`ClxGDS0z%oRJ-K{-Kq+NSYmU9f|JS`|Z4{m?CcM&zWcwH&PH9BSR}^YdXR= zUqmszBSjQ*epbmfewH?^ql4a&seHIlZh$UsleDpoxmj}tXr{ak53)s2dh=jD3fUO^ zh|a-lN?9-#j`#8-1`aRb7#Up67-8+14H7j=$K79cLHuYPPixI4K1$PoDNo08M?xjn z@v2VS&x+54-cM(cR<4-Lh;jGc)9TPLKAPHvij2XTDp$2=nkqtwwJ#K_(ZoduX`47Z z++uYMwS+_(F8SGAix)BkT<><<)sgj_Rv!6`dy`$9Hmt@BsPZ1I?^=v7yO@Z7KWhoA zL=(W~BgvyvI2$WVetY+44B@FbnF{ zxlaot_OviYD7K<%N-?GumLaRw7EUC^uzVPguZ~!*&W=K&+7R@evu;S1YAF6-0z+oK z5}*c=)=cmvhEfdxItrvpSn&HkxxUu87Oi~L+}xiN4{J3>5?vC&Q27qHfayGc|$+R!K2U@~%qf3rd~Pey=Ke2OIr*go&lzg7%uKHgx+0%56-s;epGQ5u%8 z2<4RTHEkSQB5Pannd+D`@i^aNcl;<_N$e0Kj6$!0IwM)fy@w@*bgF3AsLciM;m+WI zIKIt;yg{DIdpHN|LBRQ0oRMmrI}eWZTLzq;4)NfQbLYpg zj=~!a=Rq=YoSTUfYzrmAHs*irwD454j{JGbjlU_raR>Z#0rR$wVSPmEgBaF9;%B)=86F}^2EaM zAm332ls<&ofhi~gU;Bgs6jd2VyUs@|)Qi1vsB~I=_{@#iw3?4!<@=+hLXQmrZ!~iT zd0Zv$3u+S7rd_x?0u{i_zw@oY|5^};fMPrrPDgJTpzf_Dqy9?vN*3G#$5TB{P5OtI zuukKWk(h%DJyP?Rf@UbL+1Vp30LU+g!gZ5|AIQzD%xplUz#`uyj$E{(s5VMvQ~!{6 z-b&Cv*7+`CG~!(PHe(2u`qI1k6^&PnfhEU+Q;Kml$uzj0N|1;-KAZW>01I@Zdh*

F88zNfQr_Ff?HZgbt#Tb5qJT0>H;OvEhQTL05 zS2DE>m!BFg^ZQCovJJP-%3UJ52kyi$)>4f_m;xhabQp1jmHd)V>{*@?~x`bKl_ZFcr`+mP>H03?LmoG%q&q=7%OtI(qMH>cRKE z(Ol(>e-mZ|G5nNrlvuQM{z?r#CJ1j=~G;pPul>DrPhZ*k?*!YB`Qx` z5CGlC8V9ue#Y*RI@(*hwaIajUAogNYJ!!O?{t}6V$9=nP`p_Z>$Dff@x>G z+~ZqpZ`_`|pkdpZ+Bgg?F_Siyt*5@*V}m9F7;y$<*Ak&c_?p@4cKXd8yR@AzXa8!1 zMtdC6E*GLj%N(3M6Pm_)%y?e9CNTaY8^MPe^C&0XK`aoZXBt)SEg}+YDRvmDNt)(0EBrV z*DP}fjZE!HLXrU^B+;YOU5Lgy0=;Mt;U*9z=@m3?UNI0S75>g(glxkS)XAgao+1Op|KS2HMJZ8e&aNpEaxbe#c1G#DqCr z=KC|TIt6sI6qIB_!#RP><0q76-ZV7&_`DV*s@%-srW2?&8eUp@ZnaJ#4Kr)8;=`8P zG^WZw{U)vb%ga`2g~X}T?{T_YL+DMOm%KN7VRD_})_Bc%;+A0t+-mQsacip4G~7Pyn(d;JxTouXZokp%4O%5^J4NibdbC=Jy&OMA30N%z=c1bT zMx}deIH042t>p7@eWUt!4CI!*nwWWO4 zj{OuGw07usj-NjMg}2?l5^uwR6j8uNrf$)aqNw)Q55y#})uIFEEE>@G$`=1ar`VFZsVgfZz97z4Q&`LHW8z zJ%#E=-MlL--d|gKkNDRGwQ$HY*D=B-ffQ(#hLqpZa^vj^Ri(?URp^jduU)SbLx&I^ zW8{#qAE}PwsCKQ7oqsa{!C+=f2*ItgeX-XZY}&r48f;$IL!_&s?ozZx^wl zW1W%uz)$=>R5tk2@Eg9%bJVFF`m=NJMK52@kWZJhmxLRF^d>dKSky}OmA3vYv{id> zCcW>j^%TL=3Gi4bkM^&ij-WQhZ?cGBl*a`HdKcIjv-AVK4k4-NSb1=y@6_I+z2}*G zVjY-;i)0G)%!yW82+ES9L5RtEN6Ph`X>=8+gIZQXdIpv~;Ssi4C2Z#MvmH!drwK4e z6=iGn4OL7Mn$A~b&c*3T-|TV)7PcY?D67=b-j@dW8`k;arf5+3Z&Vr-)>w#(++hC9+-h*^4T~yWMg>^ zEf`}Hw9!w%BuuJ(Hl6AyVD;D7%I|LJPM(Li7;_U~nMuqm=(y6HrgmyOKEsG&J1?C` zd0Ft0x`?mk7EkfEhK3X`@y=FoFl!FhbfjrGnTi3Fq^ZEn_PkBKWLRjp0gT;QGWC68 z5wc22Y77c2+kk5SgxB~v;P&LZgO0>HsLubVw#_kCEoV;y=CLD^0YxI%J zDT&ZE^R~T4o`cI=M8KcD?bBSlxO*l0H;Y|wEhhoW+%h7`>r87SObadrMW zlSyl*!l}^uB@Yj=LI~(zLFvG=DSP=g6J5bFF8O{ON4J0p_}3iX@LTSG<^jHP6cQoOrClEI)&vhxvHF>fkT&eTR7 zzeK#V#}4r7Np4)>(T1~w+{dQ%Bo}=HSv)|2u3(0hjKc0xe}|7pDY;_oCM8#?b+t&M zaOty(c;Ra&h-kvm)%j~yQe-r~&xAt-%tLmuuZcTh0%gNscwsIZGpuQy56wnlO1*Kb z8R05(gD9Z^JhgZ-E}@-al-dw0w?q&SCA8*IeA3v8t8;(-xg1f$cSoyw5^`pO3a=#6P$&o2_qYzJH3KaS)KA^C8wBI-z7E zLF1sA1Qa^|HCb!-$M&CG+^BcY{gqwvt-k+Hx7fZs(J6)f%+&^1V* z#cQ`&%X52~Y{?8VU;4dicd={`C)6N)s=La@nqaw=NG9uAw*oeb8RC_0pNmygcdErr zTYWGY1zef9F+!CB6VV#P@b^U1nwfu~$rp3FhVpVVz;$#7R0m+qx|a(k0%-p=2*nO3 zW{sr>j^rYTHrpwSC&(PWU6SMSEHb-I0W{4FsXc#y(qK1hxbra__(Lp1r zP$&#bQUKd3MkQ@bRUFI)R?GmY?e1eZ1$*a@Q;~(7ZiQ83LlfJZSS9=vOgHJK;S$ys zS)PUB{V?Spoz{A8BO(44R)L2s~;lCQd{T93t^bkjM!+(4%Hv<>f(Ju>y#8k@&-}^q#zQO zY``5%I=>ezc_bh?nEDQBv;6@HVe$e{T_!H3Lpo@#b{SoGBYeT8gc#_cBC$Jo5!tL} zF_<_8N3^v#W-+YhZi>aQIgJgAA?ILM0lqTqln;q!%i34rXa^6A?6xfCX*oM3o|dIo zE!V9Yj|yzL3RkkGA$MbFD@DyM6V-T;Ja_o` z#Yg|W@y0$ADo?kw@|}W$xnf56x`i!2Bp%Ya+4NjP!p*I=qwC&Ey~%P=Z{XHffHp~f z@RuQst2vs8WoD*QbE?;<&#^|-ZO&Gq&YzL#u`-1on4%E~Q&A(Zb)bHK|Cnax>qGxP z9Cetvp#k7G7Vd95Zyey!3iwhq(i-1o%wT|8D`9{>rt?t-vR#_tX*S5M-iQx3I&chn z{=x<}NCrfGIA*!8r4A^rlStz6!)6gGqRD}jMk_Pq)P60{S@?^#F8L3LIzvgdO;Y4;Y5{ZR@6`wrcoSDgLpM`^84q+GzdShz!nS0HN1EC~E6}+)tcsmf zYQfeR=zM9gL|%pzX{tUd+tkLJfzFRSr6qEMCIW&Yxm~nnm%;f9_VabCOF4yN~2K81XU9>*N_RC_D<^w#Jd(`G@$8; z#zuDTTN=hjus+S$_`6r-7a&@sQ7B!T5|VwAR^#mIyu*UAqEu>zT-JP)I_-o-gLw^} zMdWb(YuR#?!nDAqAwoaf;AVe~{5g*f^ZZG!qdPRrx8 ze^jyz1o)EY=L!*{7Fve;sVk*Dzdwpp^tOHK=OUNkDdSp!VX9^E^#5r9+>=aCbZg1( z*99Bi5ao|rFER{@DE`z$`Anj`J^k_ODN#@pPY>HuS){a4kH33gcsCtkfBEhrdoi}Vtjx$)CE$qp%3n9a7Y@P1)(iHK?7BT{ z0sU{|e3`SeeDPb=n3yMluugy48PxB;(&@``wrjXxEp7Ww+-(w~Dz0MhpymH8$347T zU%GABr(9Pd)2T_VJMp9-B4eq%Y?UYra;Xh|)2tPX?8+koa;_sJg_d7L$~r!F4mSe= zCrAreY6w*t9Cy?B`3vx$+K_b*|+a*K2C+O>v3(>CRhS%!}Io9LR z#AECaW%pX73_ZSl;xUJ~<;?X66+AvXy0EYTiAw9M3K zDTJ1*YP6Jd*W;ut0LBob)Uu>aT(W1Ah?(c{!u7;V>(xobEbzE@Eso53Jc$_jFZ8cp z+-#305ks_6xp*!2Y3uDt#4Pf7>3VMU=J8a-EKy<8wPXXBiWmh@AvcI#`ZZ#Z!x2Oq zh#6eZon8W93^4;5-+V1Mf$7;KVm9;mg6kJAvB#5$ffCCLujRHjy*-JT3wgZddaj|< z<4MG9;qgV+E?#DjClPZIk1xJ{aho1bMa;!ixa8W!%c(GhVlDwO825yj3u?sJGThQY z%+~7{pJf1yA!aL$UwZB074~crF_-fAvg;SGw8xW(xs1o#u3aqb@g!ol@%ZxV7l-zE z5;2$a_*vI3j_mOyVxGn0E3RLBwjLiI4JMb;6;!xVi4t=LKe3dqEX16Ml-yL_CdLNo zCd8LPMTp68yes*)b_$*{cu?C(60JJ+aB2qWa{a$k9cSRR2lZNX5r&7B2dpGCgj;r6 z9%_}qkjnd8C3%^b>#Y(T{4eC7a95 z<)K!|1?2_h{jHJu`Y_miRiyO={DN8s# z+{mUn^U}pjT=2-X!)L|Pb!_jmIL$3(q`Vc|%~y$a%&xO&4YZ4lpv-y??jbghHW$6? z7q=vi=nVy&t4TO zb@r+&}ZBp2#wil|zioa}OocX`oxmy6?F!f)g`CNM7+GBuBMeu;O!Naui?2XLpN z)uC~iwM8P%GqAnoizZ-(NHS5uCgebZBba!7=i^4Cve`0!y+p@FB(Gi&>ts0qCkPFi z0CxY?@>>;UkVASVb)p~`<{`I1xi0xD@=C_Ph^zT^7WE{-7eX8So%pDz3e^AsP}j|! zlsZB(gA@8(z-N=wXsi2a)fI`B$K$CBgbo;Hvp=N=O~F~^lE06e{5@C6-;|qtE_t(- zzkAIif>txW&h*m33?cgq$x9J|GaKx}b$H`*j0>PyneHtQ{8tWVR-c!kiGIeGtI8iv zUN`Z~ieEd-NAmLSI+T* zbD8<9><`tvQD3Uwhh!Y#yA-?lU22?v$9p?GU!yzwp6ybLcZJvw9IR?6upv~39OMML zidXHxEN;MuY~PL>a4fyQRjO@yy}7^h8%SFv+Ne)Yl$>pqXzN~UvH*T(<$-32_)vL& ztAzDeuD43WN)9#GP$f>>Z>3>0;w*z7bcv*V;P;pV&Sy^RbMSsIg+N{D&K_n?w8~EF zlU1f^)haucm3O~IZ}yoF&E-iuSv#b%m^68VgDZ{XbPH~cNwG_MyArKKwy{(@9W3E`gg8D12g3;YHTay@Wkl4w(PP2$LdLuV zb=4Z^6uBBeC3`6i=t~|dvKgr&M;&;+R83JacJU3gK*PB<0yMseaqDfYk=`fLu{eXw z36dp_jgwbW*M`-iQYFv9PRj=^)Act{M+e)6jk7k3hegY<1*#@jC-4la#EAAHU)gyl zf0plD5y`Kutv`|6v5$hSq2Tnl-@&gr|8@4tJND_}+ic7}_R=!nAJ0{~ zbN{}5`+6^|BRL3`NWvhnn29bta$vjP#BjftKxl&>*k|B=v+yNE`Moo?Xhm(z2>3sS>0pN3}xZK0mVaBJ(Qz@zNMe-`zr%OdZfhw2_j){@Hb8gzme8A zn9y48@Bmc zoW%c+266@*G7ziOoc+ zoQn$lU8KwxB+D!sTY$v)$WR1P6krMlqn#AG(8r)PUuM$75Foflc;ThC!iV-T7|OnO z`>I*>@KZz%>^Ag|>5*v~3>WA{M^&?qJRTdymhv>oAjZmV)_Fw6kgFxiAjMn|BmBa>32z*{NVvP*+Xj zu_pc;!Q)e@_5fm(-&mwVIFkVXZ6F+|oL*4a6&0PI&7)Wp0x`9Da-Q~>#CUsk@Vmk#>>;bzVv+V9&eLw3^mXDp17EjJ zS=Pp8#akJw7|e3EwS1Fq;wn=*y^CSH0jpKJnKKLOo*bt-FKoDdUc9;dR}=wYp4itFBsRSIcx) zA=gc zNZi5bgmeCIAp3{HwzeuFa?8I7K=I?7>Hz>b$M%d;hr{+}>aY0)^sr`@%fd1nL%HW9 z(G9hsNOwkP1+K(rm`#l%$sOe%>V-|ana+jlwiO-ezN``~2`YyGG|x9fNu6>NN;mDm zAQV*hMph5_MHBn!ztJq~2+Gbl#UPU#2d9i`-Bojgu5}^WKVQ$nC7?!JN~hp=r7<*r zylFO_39_A5!8gDWk1+`06!PD#M0H%tQ*>8{bDDBUo^QUkX3FjCXvSZ;ZwmB-VF_kd z!rb$7-hR@1zI(L5?#>2b+v+f7Cb%Hzxk*y~`t9GrWky1$1c3z+4prIHaG$0xZw`Rw zY>}n~hDPw65B}b$mETYmdQ_L`8C%?&>|I~FJawUhRxzuy?al38lqi|1pBqODTJ55g z0*7w4bb=`I-Aj3%X6BzV-YuKZlXOe7Go(B;9==efH`};4mggJ63Sp!H+~Ii9Y5 z*5O>X3)HyhpLSqw6Dt;wLc-3?9I^Z?8!&*|Wa&6zW1O^BnQBttU2e6dnySAH9;a;R zpaq~^_SR&eqK|iOpvhYZne93sp@FX>@Eu~ELLuT(s@KK3iZS3s78TBOpPZ7qc`--#-CDgEqK2RL?=QAR_#<>jq@^6$qmztjbeL(lNM~;Hb*8`=rBD`65@zG zh~~tFjnDsM+|(u@wq;>;96B5~?h*wJ?~wqZ-k0;Ni@SM{__X9 z+GzObN~YFqC8Ih0nRgCFwSwPUOW$+b5H>G{MU2ULi z0_%TTHeA{nZ_^D4qbztyR6u4w<}FwaSQ@CWMT&SJNlTj|Rd_zOgzVU#H$_YGf|W|vpnR@;wJC-=+^ULR=S8^}75VnW&fsSD>Z_?#{k?niJx9IT zLmNWL1$)^m&nCO~ge{XZ4Ok!21;PaC5Q4^RWrMJjC}2wjfgnSe{SJfd)w12@WTgGwd$Ae-mgiJ6a7YuSutz!Q5X~g4NZa_h!^RKpKK};v{f=oNm|UVN>u%--iMx9pQf{~G zyp#{VkVvQOs0dTQ?#d{FyrM`!u>?xZjv;8u+h4z0%2dq|0N<|=?9#NkQd^0Lz-Hbg zK+u}n5G4-sBWwQ1s~u=r7 zvmk@Q64}L>^@0YU%Y>R-szN(!w8AVD>iX{NW>h`qVpSHXB8RaONh!^7U6+5ar`K&8 zasIn|*e^Jn-8)<~Lhs=yxqGxkfs`ZR213VN12HQkbPic3S8G951^CyOvo|w{84jY~ z_@;exyLn~`?r8e6V40ito_4`$FU_s;pCN3ZbKfpvAjl%6vCzj5Z)BV}Xxv;r@y5qy zcWXWAbG3ZqTIVKwSg@tBclAN3UeeI?Uf;a|@w5wWfh=!yCk$G5LAi?n;p z&Dz?n@HC-v<6+l}sj*6)YN|!BHc$z{&%{9IG*CvMW>FKhm}yy5z#v&)5rcF_#tl)? zoRKKAKo$;kIcj57EoQiGJEk-!O$IDRv!F4ma#5i`-0|t6Eot{^Qs0O$4>*mQ8Lo}e z%uLg%;MTGS>%9^nS_x@&brQ2beqsA z%>oztgH_sigH;PXT0;~VyhUP~SziAjtqr7{Ky|KiTPY?Q5ixv+6>obF<}b~N%0Spj>WYs-dtHLi{=PjLJa?cW+C zvJ52U-#R1hj*Lh4M=A{-7KB^HX7mT4`^InEH|YTeZ#Rsy=jx zNXN_GqAPy5P6#vJv_~$$+VVvT4O!(j@S@?#c|2G_y08u#b zu&L5k6fwuNy=E%?IO>cDs0`xH?}#Ii%_Ew{A+uKTG}K6;h6%YWzrBwPHl$nq?o*8q zl1*uT0W}?bQs0chFD5GweB`H&fAL4(@@s#Y^!_Z%v*v{d^>K0eb&|WXU4%j(`0eDo z)RQq?m9y36D`$W9_S=f&*2Bnc3hgK#PF^cHuH|Wl>W;TEJKjCF z--MRp700U}YU|K8S$X1PfB3vtvXgg*yeB~uh`NXA_6v!uvJQs4pCM_=8~x5aSqC&j zLo?X%#~Z<_+Xh!VSLg=GiEd`1*PGNIPvsf`SuMY==tO(IPSSU*2IkS}{Rd{JUNdXj z?UNGTuBnm^Txr138Ys;zGj$n7y(2wL6{WjXRilg$_wj!aktFfgKl-mXr!_e;zi}m- z-B0E}u|vq}^3_rto^Q`3Pl1e1_De~``V>C;=(&b zgpc3*x4bj>bPK4*TED*fOoDh!-91eZA8dm7pKCn$RFnk8#S>_^HT0Dwu4PuMmCrAETNnk?X0Y2uYlcm@c4r@%Ew4*H5^Z;toqbhsvqTy zAEu6@Z)H5L}lnN4p;1`N2(-tw51_v$wz_jSR)*%~^Ub`RfVCZnB3ragi; zX=R0DhnAg&sPy4{ZmffbitcU2{H>$;Z?grD6oJ|ui&u*M)f4Qyw1s} zEg!Vd<&dX@iv4<<^gXgT1z0o`NM`XbiA*VffHJl>B@M!7#DgP5{uL& z@iCn>&f)7}yL;leP3bn`Ru#`1m0e9mW%3d#<$1!!0?t;}KK_T#yRGQnI_i#LGd?kd zhKChGr#-B2I{C0GY{*HYjaFpXqFTz+ymuuI>fru=Zl`29k=LQ%PhmkWYv^uhzh7(I^)pBKT9CZEl+uxDi7H}x!fvv?1AFx~l za2WJCJ~4CUbL2#hodyamb9tLtWjC7v3xOP*I&T{i`C=9?J;$|vtQ~%jl~Apka!2Wc z=Acq9@iEl+Srdibpwyb9fEZ^&pv)z5<|)N4d5_H#s|Zx01NuBIinZ803CA{1Owa=V zFEUAXv@TmCHZu%>IXa5w$nAET98DFxL1dv!lGVf*&e^Ay%4Me&b|gPz6v3F){)Uag}05PnpF(debj_ zIb#~d2I;$BnsLvkPa|Al!ykX=FXr3xKEu4@X6y4V;?$Il&(2c$Y|Z-uhXi)jT-lXZ ziIy9O5We3+s}EJBj#J?2t%EnUvjTVBms<8 z&`zL(Upw-Z-fhKFO$Q5@m6?P7lsSF)vtRhDnVJsZINpa?iRgeJ)d@QI^N)Ps_ZOS* z=oH2#E55_o%ox2r`ZrJf)>88wIq~w29gJE(TPEJQ;{%^hCMj+LU2a&;ImJ=G-=a9sKS^=8bdEQ8-W0dyceJ%Q%%Y1wk;7Q*X|A0hC4Tz2QQT6S z;w&(7g2TjZpl{p2*FbS#O03_(fvGIFiHvC2JWEq?Bq%LV0nBPn%X_g&X%IxDw8tKN zG;30ty&I^(obY(J&%QlQ4R8Iq$FG<|3>?l`cl~mb7{2;f51tb>1ctRx&N>0jR_|<` z=;kBGfA9SbCI?URcjT$3VfC>)jDz;bmw){OE#jW{cjl{ib0+W8$6P?$C)zZN9^KV0nthel4O`kvx0TCk1yj+J?faMdYW$|K8aMfB zgu%2{V^abM%zx=Tmf~WI`PX~>S|;YtGQr5y6w2zD5);kxa$92y7?f*&EYWORdqHj% zt=NLp2Cgk%+x=$PzscRRgy)$!K1@|aMg&+?!6_?8Zur~D63041^pSiv%c|#tLu!d> zLL7{{k7Pi^cmjHLBFoZTyicQSmK+4uYT9Lx~=ufs_b| zK#q3!J6kSGfwBWvvoYeLBloUgua`M!#2@$@vLoWYB~8+STZdok30tn#2Ca>j8Q1Un}BdfNlyZpH9BP337JIVbrZo?R~2IU;tVLhhhm6%R#Ihq+9KX0v7 z)|D+NGZ>g-iLX{Tj?`CNz~pzA-YjcLYSpc#3@0!aYDGT?xT)z9*k;FQ;ML1UDdg-XakVzGox{Z+;HG$NYTV(SZOHgbhjdn^MSYH?6-2cmtH*ejM3_31FBuQ06CuK|D1Ry1 z0fOtzLlB@fkZT(n`QZ~Cv;z5P()K8(yb9z4ryF(re6`;WA$;cg#fqaHbLv46j2Aes zV)I#p-S!xo4kOD0XEjG!qGJyDRgL#s4P@bo8sC^sbq3S2X&hne;CFDq+4ZaHHyY=o zN-5y$B3mKBFr-=D|5>(75nvWir4^z|iTfJp_*qe@X=K3PSJO+Q;jx2PHH@4Id7J!u zz8*NJV)o*6*R4y%W34^?(YJUQ{P*2--lcF)0K^lKmnahQl0O#bIN7eE3lkDE>XeV@ z6uYE9oip1^=|QRZJv-ZoasN7qrB@ki8cSlfoMV%vLD}?hEtYjjjsdfrG}snkN46MO z`8SJNt7RcI2OZh?Jz{Q`M_4;CXd~N5lhE0PJk1FM604+Gp2ny}#1na88VixuVH94N z#X=-@9R0m8kA+C>gb8>dv9#VMk~_%&y|5b#k=}9T_CijUx%=88?s<6dvrbcp3z$6HFs=&*{H$5Wi<3*fukGufz8&TS4~6*N7HMfAE9;bhG9|o#lfc@{%7| zK=69DEfrLb4LY-t;Tda=%WIkWGAGYX)+{`O_4S0DnJIX}f;cF6JQO@03%*K0a95TC zGcXUJ)o%Gm|Hy*HEC-@(K-ELeXx%qV^I>kzm-B%w9ETnM$0*X5j=CTlw-9j7%rGwd zqOYubE3q^b3|Z45_KwCNI`F`rTrpaP(4xTFDLo(zhxWgXC2>Mru{zTxGlp zK((r%DKx6k^Z!nP(nlhhnt&X@ zkylzD(rOg0_diRFhRLAZ?7@2C2vrQ&HQct5x&t>^+V|>R1#s;d+QgI=Rwg77J;r-r zDc16Mu5KO6MP4R%?>8EP?ycb>xX!{eWj#`c5o9&EziM|d=NKrgnPp8etN3<X?c|q#%2~vkoL7EPqJlFz!XVq2>pHR#_w1)1`H@Fud0gYpj)<0Kr z2X5c_0p}nII0s2+3?SXp0ts+pUbo<9O11?Htfe4`SgRi5 zAKWFTsb%1z9Abz$q-hyM16h@s3_(l6Sf6M6B>|fH!5nAok}e6+kXd&_yHdxpvhqvI zdvEDrg$%rzeIWCFAb_Ke@r(Jo2n&HRqi*o6qv6ctBv|&~hXpeY_q9D@6ITBcpyXhE_JF>q!&3>~&lb8Hk5vB&F)t2sE&V& zbZL2RCj6J?Gc#HI(fsV_M>pY8IVJ(Rc?cP023e?lR1?JKU+a^J`U`y;HNr?agi6a1 z1+des42M!*$8QNoan1z@PyO&XEqi+{yps4Krm=9lc}^87VH>#F9p7<{JEOb@qDJ1p zTt)yabE+_932m8ruoEYy4E6p-5pO|stS2ptPdeq5+JR(VqqG0UErawzp$>y)%15dm zF2a5@ctjeNHQ>QHFJXU^#EB%>cyQ6ptU7{iA+&;hkDZ^^{+s_n zC(!z0*Vlnd1`(R;4D5kAXMR9qWew`Yp(~JO*+b0GK{a}UoZt9u4j*X9d;UvFZsOV3 z-?t*+>}0YJQ8~xl5bykD{Ejh zqe;Xm`m69Gtc3d>*XNfTpyyrF(J9IW>H zvM7)52fWHZZkCcWtrAUpd8%1drl8ZL8#ju$Q5eq0{g{|X{vsm@57UWyF zx8N#V=_B*}7IRzhWQeHGyFEA=(@8EmmJrqY z#k^(-!Ch{T9BU%~o5G_Mi%ur16-xj6g*u>8;;`x~I6kV!`79Id+qgo)BVYdyc%*j277p8I2(W z2mszV!WQ}xDuKG!BX@NR9pH=QR$J`7qONGeQoY^1JF=EW6LvD5u`7Z~|HtS(6pGJ( za<({@92pvf024_iAXbUm^h_D%p6T3gg>SRS36{14#AVn@g7%j7p82S_hm;MAPNG0z zJyrrl+LO8ma}}XGNWHgBp9s|&s-^!g&Bs4WF1@FklJ`y|)XAMdv<8&WM2^*(HKJP~ zUW@znUwX_mjm+_KHfGmhoy!X8*>xV5`K#zCuMQicq65Zkk}w<$Arkyz7>4yg)0k=b zYi&JdMl|huV{ZeQK!PnPDV=$MB7Ui;$UQqw-pY<6cW0g`1D;e)?9e4n{Y^>dKKq6Ki(#KjrTTh zk(e0Xt?tyG(P(tA*755K5S}eyUJFG&$($1zx;oa-%!Un7&APCtP6*px7A@0|+L+cq z)=SmYF?*w?-)r!{*1JCHbYOH;_A>-+jxpR%MbiV^v}QGqYL8QI)gG5|tP0V5)PCUHFm;KmWx~ZX32armnMVmla%2v#NBX&aLePXtQ(QKtwTcs2> zD9KC~D`p5DCQmlZ*!*vFfWSB}2@$~NgY8V_Kqgpu7wx8d^A0cOgEdW;c3@50#0zFm z!$(R6v!y*a;>}C;Qd&n+y->z0ZbVzM%4S4cqPmP|s+^Bic3aw}hAnLobwR!nrr(4Tl`&CEGFVs@8|W?#{*V8On^jZfHDbkMRf{EN9xwS;4) z5>k>m86Yx!uMDsvv0#9ehaCquOlSW_sXkI7aAB5iq*ml^;Uruo4kl&K9u&f4NLN~Iaw`80Kg&zSr=sgx0=k;X%>k^CAfcsu!ZNM6nHl++pN zTJ}y;ow0W+btciOQnRs&QduXhRMxFdDi~sYE*%;sEKo*7$V=k9({1!JJA&uxEIS6< z4{iJvTGQSe)0+9$SrN2@n)FqmX&|)8Y-)ZUc`Ir@mr0l-@bXM_EXt#0`zjLzJ!&42 zQ08Vyh6N+NA%_=}r(PMh_F8$vB%6z7XFCaiyqo&6r*(={ZX&(ef>@w*UWW zjpNzwrX;AEZX@qqAR75q(b7fRn95PAKI(1EdrPAU&xqwUX0HU5*j8s z`Oa}@EE}lW3XKOd#*~I|Wb%qq8y0So0oviQlVh{toA6_!ad$KBC)cnTpuXu7bA&(Q zOB#On-jUS-@3n~^;?g=R?~?Jd+)VFdnwV4>>SzgN!l0xI7L<;;q`~u{m0LdcR@u!y zDAS*%m7SC2NqQ6ag_!-)wnRV!2a=z70&!C%7vA~3J(*V(Q%QwcOFC_}1>U}pS$ra$ zhL|C`>elj|pVt61+OYwQvkQ~HNu&AR#?>1&J{n7vW?{SnE@oBKTqt!ueNN@&PX4x|#M5uZ2Gr}W!o^~H` zL21$x1GCJv3zRd<1qOTB5|ySI`V^h{B)O@K*(+gzaxlfrO8sBWGRdp=MOu=F>|g`!)o57YVfvfbyOYo$}=*_a$zJ%W~Fv;AgU@%_6!9Q z@yo2t`TDRuQmX{vU{8=tD|<%ZPp2$$?&kNb``_S^3DWq$e;*)E_sNATSkBV>JUJulUmvytp3_ z%UguOaqD#eAc?@cn`}{!$nd6mYHHRqMB_m#wFwMS+A!U9d!Lsl(z9iV$9cXwiPPK& zR9{WJh8@5NgXsWAQ)ojIR1vB%E!Wc^>XD8R`tX*DsGKaxP!24pN0Qa2(}Tf5s^1P~ z-H(}1jMCp}m!iA5@=;T-*OMaIY$I@&C`2zp57TlNaW$Aiu*-un3h-C78RyZryRqKh zuY@gdADS#!9kqO}_;JZ|I!+25Lfw^6Rp5IGg!*Gy{GwQ|!=)ewLg5)CfhuK=I9e+# z^<86EQ0+2Bokj?$OeXYL&J~ywm%=Z`s7oj0H^p%L)(IA|E}s`h@;|*)ISIvy zq096?f}8YL*=m*5g8ydk7|pDR-1u*9AJN+BohzIo>Ay{P@Kg5)Kf#&q?6%R|N_qzh zG)``6u;i?zgihki=eXW%)VpES-&XV*WiRKt0IE?sbHg@}kD8Y!DTA6VKmEPB(sv$v z+Uti4E9r0vN{DY3<}}V9hiq-`LDL!Ue2DZ>57RNuK7i>51 zR`FK?t=NZ`Q2KJkevuLQnrwZM&-c1J^GEd^f99in7K3ZDyEzmpHeHh)&}XMSx`=pu zQ0l`%pG983{_dy!`a-YV%a*bjT)i=Ryab)`CIJ2Qufj!0_IZQ0&qxPPT=`05HXI0V z9&Uyo;Yq*Ds(0)cpp5`E*zlz5+(TC%Zz_cq=owM%hfC_$s{-ex7S&0CGA=WbOYMyy>7Y@s|J0a_&-ABFI~ z(LCuc`o<(#vVGY;bu&}HR3a3zO_y^ehl}Of-CuqvziyOm8*Z^DUQqB`VRqRrsvtK6 z8KN)#>vbO%FOJn%%ZlW~s(|j^MVmQ5 z;nsp@LW9Lb6c=MoxR|Wbm%=`Vm$9(nKd@ybMU?>xDf+deSv;Av8!65=yXnSZzqm{R zv0ZxQ!+5&PB^hI6yXJ#SUOin&dG^a<373}pTF(3C)|$~b|0D2iVH8^w{b)e+i><(- zSsHRZ4sb|*nT3V9eA6wq?Z1IZLzuiK+dtRGtiluvnl5S%a@CBqonB#M=5jO{(U|RO z2-dfqEYrk(MrlL6xVTh!f!Hp>U+QfVa*+(g<9O~Y1!V!PsXWeozNY5@zzfr3#&QB1 z3Q-keLmRUnHT!Aa6AW+v;U*`Po(Cu;vyFe`a8hd*|vbKA<=2S0u2flNH( za9kKebFqya-W>!CI*N1xFu2ncO7^wTD>rioju;-=|8N9;&jWbc#!_$&N09)Jw}{`I+-k$!d;_&K{Pe_s-X6 zg$D7Iy{xzx0pU_#@3dg)>6MBm80{5{#YpW$MU!Qa6zJ26i(Zim$k2T;Ar!KP7vvzL zbm|%G0VT>R!AjWn2x5l5*ueS(*X+{{CdRrpV$u;cHOY_M{o}VP0hKB#K6<=TqY6uW zL9qy8IC2t}-_RC$kto%TtgH(6ZF{^#y2Z!rlw}+alu~=-rj?%^JbXep>LtFHk6~kf+mV?n2H0WMYfCa5?O&i5XHX?rf z)?^{#!`Xoq8W_5~zI=Oxv3?r?}hUkqZ(;&}wX{OCb|bYMifqUSXNDj2&O>MUxKzC1Ml4RhgiOS^B!gvk<8{L+i&I75ZWj zD%GUff@V{$^2-@VAVU=E+=^XRGlFFrn6jx)P}`Q)!$V0#zHm2E2`UPHjU z;6{`279m2dCTaD!Vv2J26chW&87)3NOnoC8j)b!Hd0UhRv;mC21ZYyRNZMPFaS}2~F|!U-0$+qV7Eaqo}&}@ogz&6WGv8fY}Wtfdr5a;%qh) zX$mM0Nqnp@qbUxpS|k2TJ3X6(Kc3yESWVMXLG-Lz)UGhRq1mg&=zwUPlMp%ksKB z#2$stORD|>Z6td!^&Y4%EVivw(JSGJvIh1Am-9aoQq_nQDAhp>A>v2~i=J|X5ig2A z$ZHs@vH-0wlvhnibt=EKyrKuul-MS)MZ*vXAOj$+F!~UtYE)dhAx{`JYH_||7O6Dg zju4A+#ptN%P#o~7>QFJG3x<}X8s*L^x*D~M-ip_Gp*RXOz*a6^O`2D-QdP;GDuh;FMnqqu96t?Ld&dFrCqIIeNO3KS_M$XAHt9$jtv^d44(X4YeZ0Y=s~-xkqBk4bMLWq~(!$Lv^azO8Q;jb+#< zF6QYFM({|fO1)u(I^*y)k(sc2y@;PqK4&syc>X%wsN-cps0rh5R}3c9mBtF zU>71C$>5ZgLXaXa9Sf0;g-AzuR^Tv#;fRTC5Y!WXP)~3c@FOGdY)rKbGflw$$!HI3 zbIGk(1qiD=2<(*?OEN-09kiOC+oTCORCfhH@J)Q0_Trfc%DEP2Vm4te@pLRmH1>;x zoh*zrSPZJS7t>&0KQ8moz6A^cv~Y0~ZP0h}!N!MT4$KsFCm-(hEB5lCPldb$Gc5B? zKHR|v6w50tHEiM&D0c3_q#d@KxFtMlLH68Zzlm9m?$XAbh6_m17aCviK+`2HHenQY zAq+wlS86;;n-HmGumd;BaoxR`L)gBe^9?k9E=B|k6siz&8Los-*EhnX)jYuH0e2%} zIQ5^qL{a2F^&EpMT~laOa#W$s3k%b>fL##~oyys<1Os}o-Ld8uXwp4_8(@(=6Vx;f z$Ss1K#XSMdAkWfdU2#Z8Pe9Y62eJ^*)Wc5uK-eswH*uZZc>U5QX8e$Rw5%_5Y^BM0!Hk-FCM_o2E-bgi4g+QjeRMl0Gzj>LyjFP=?3OMgfY3M zBY-ibplW6TOz^8lSm#jX3|$5zGiiXpqKPMwB6Mlx4wpkE?6XtEp_89sMe!b?OK>$q zmspVGeJ?_nA_GE~%z)74Ga2+25V~Xr%X1mjHt@=%y$XzdHgpL9@f9EN89M-*u{!*Q zVevxHplap|2$o3}hHUXMqv#&`taaBS1*kdTReuMIBoMSUX|9&%BB55Fm}jUS!$bub znw*0ixwVjIp8k%!7&0A*b3x$xJH(3ueG$9MtEB=RTHsT!*eCF5 zFBFT_8wiV8eIuVD?&&wwQ5e+2be%d8AOx|^(Eg6x-im|tmV?yLDnf+)kxvE3x0xaU zGqgXpb!8>cLAiO!jaIz@V9kR97R!%t527w=te3$ZM_7Lc;t>)q#rRm9y;ei!=yhO! zhs0ESU#XZEv_KUi>3LurQr}o(U$~(C5W^9lz0mgb*CV_BnIgM*QX{)i4i4YQE}nUQ z1Hk2{HK+kv3v1IvWLM->BfDBQD77HGWMmgBOBmU8P^U1m>#s(3MHxM^D@s9aFtQ5> zL}XWF@I-c*171t15J_E3$~(wzk?B>lB|hXVz)p72Y|WzI`I7#k6Jzk>a+P8A(Q;0u?2Fzrz)7;I6vIWAh0TD`CU zEPeYS^j%oW+s_VUp)PwK)ksCZV2DFUNqKp2P#&17sNK>R2hc%f`qLpq;edT3poOpz zl^Pg%TZZIB^M(7-sSE<}1q{%fpp3sO)HPg0XLU0^!WF6yvwEkwtPqY%T)KcQO2JCC zdcxqR7!KDR&8}&Daz(p#`=+9sutBKzT^IcMIWrOT!Ma( z`btIn+5=rjG;mCw1j(|vuDvc0%8y4MA?T$P)8B= z5ds3X5EVgiiZsUyLi0HVolvZODLuO*Y|c0(?wH6CA5Rp>$_! zmXsJ{X>5WKTnKw1>@MLxDs#}?tjE{4;Nv9M7MTCf1mFc5-QZvvBAf28FE_A5^mCae zA{O>+qF(hxEOOIB_qJ?9_f|FJVGkF4hw}=!>!%vJX9r=Th-kJJqA09FizT#bC|`xk z^GMQ}T?7gXU-YQGno}5fQn(t~7pOBx;aV1lNsHloY9A~j{hr#@M^Ek06Jj}mnv5nR z5QU6HZU{VsCZc+T{mb}-{moJ&HH2=UWq*}WQH1G+$x#+}^jt?VGHVd%iGnUP*rRC2 z8tkR*TYuU?~Z)NoOkN9z;<+;Uf1$QABhL2nQbf;A*` z5gZ!WpcojTxdD&1+AiFsyamevbc~3^sU5R$6{{H2Mdw}z@K(fc#W@4CRIt2>A-_lw zcfxa|AZ%nXJbRH)Wtp5j*rlkOorOG39*gt}^a^)L)7^AD8cd{;tYXW025Dh2SQw#Y z)C;65rMc-WP#2yzaQ0;L2F{)=->^6ugK0r?!E@4@KlErg@gB~Y513XTW1n}7p{(aE z`s=wTVxa1>?E{+A8dvQAuoZOcY;}Q0r0O6NN+VMD4~Z|dA_-L_xd9>wWf)=FVsw-g zP9d~dQlP#hoS)-AnlHHqsi2AHgV=MVzLTpJLv5*j;Nb|f2 z%$6i(OA@mss{*M~Sskfm#efBy=!S`iE&DQvEuSS~k^27{V$1$#hy~B-JX=;*VN`u( zGoiLDQCpU%ElVs?$*jS8T`{_FfWz=&$~3%`hS|sMESO7Q1yGU9KG7mn6bw_A&Rhs* zwqW8ctX9t|fJ#1vV8>=zh+YI5xh_4NUpe~$O@G5`B?pEj#Pm2xMR%CW}FtU|AV1AQX8t#=9lu{httiO}tI7##30sCH%?qgoA^y*(6=jc9 zsRbs@EKnHcxvT`2ZuTf#o)f4V|7X+!XTe|lvCJi zJbIRsSlwPz7XxRq*MLM>D$AcvNq%CJH3|R2$t1KdrjnQXSyuC?=Vd*;4=SOen>=kAHtUSdON(CJ@whuwx-3bXY*`bhMZA$YnJ3 zq3Ruq78r{r#-d+3EqQyKfmN*L$ z8X;ETES5NneF4rejms8i|Cdv|{}5-f#91!jj1#!nOgM`r&SHtPSWe)eOMRw1`0fYl z*T=}B{Jtqx$3mXpgd~cYjW&;i*OOBxIIM&pO9Vo6#S-#&isj!N$Z2M2P14!I2i4ld4d!-7;|CF!V?ZSsvxdc~S^b2c_ec@YQ z2z^2j3`e+9Px-)*MZ2IAHMnmvVx0R+VfBI(0o)LM7`e2iG+C@sfU{DpDg>WdL_yaS z&VQ*jSr(IFZS4wur>BBCmf*Sp_!n_XO_q~{x+Z*)-&ev;6CgD|GBcDl8@Tf}lf>pz z1_=QOfM;~&!j@D`R0ILv(|^AOw)XyM6YM|SLU;hJ@dUvT-M)n|5hvFX)@h?6R|nDpHdNA)YHd*T2jgW9Ut z02+_~yF21w`v|OvGra!n?l@K%duf5(z+E8df{QrZ8sOP}!WW)`uz}<>q=^1vCmWC& z#w<5M#y%GYYd&C`FKzn-uVG&pzNqcpqYK-bm^DTeyJ(3DP{j6Bw7@jmd`4k`R;mvz zuhF{RXf*3OqJgViR$0)Lxrn*_9Bwz({YW0gU8q6F^d=D-ZtS9o37|=in zVvsJ_d&l;>$_1#N;)+g~UFH>q&+M)`TMkZ{!zK$6H6JDTF!X%^$l)^W7KHQRVTa&ijdmU`Ci%z-LZ0wokPNmB zY+5}`!VJU-2|%(yEqh1K5ZzaIx6xD(51;sF7-*1{pbCPz{u-zDNY#vhfkTR~>}3|c zep%JTZuwv-OOe0gi+j<4&g$St*JDDVs+UZSXD|4dsL8EU{9qlJ`iBb}!nGJ1bLnav z8jzcx8F&f}WrAk|r;bM}G(;dGH4Ujy<*_W7YN=-a1hxWR^~Nh)x~i8BxF94lU!|J~ znI*0wF~i*=8DkBxx0f7VJ9X;H?c)c;8f?c010cME!<+B+o}PR3>g=tb-!u5U!!gT} zDZ7Gew3k_y#7l4zEECa!=N6|NiBt#n=8H5-eK9^-nlHcxD140J;t)SPLaxo?h-bA1 z=*>uTQ|uyvSKbn_vWUpyf+dKip@R`g!=Pb|%`*%jM-LqwyK=_BA4blzq}tH~eIHTk z44~!I;$`12n{w9>J3vQ6q}e9H#4@{vU?OOC%{O+m%^I8b{fw2Y1@;Yo@|t{hUl%9zhiIAHieZQA@Q2 zTm~yN5cSV?;suYNnKH?i$#*yf+Vt}wOoS|$kK9*PeZieosm{E|JaAW2?6u~zv#L1s z!Mn$)8KxdIjBgoklxobhQEH|#o+`bSSWt;DPK>tS*b6@R)`*EEYRq)l1jkTy%R&_o zDBu~|t@~a|2@jn`l@;T~m##nsI9cn5ks|`F0G>GFHHdr% z6Q*lJs>ltFwW!0FgU{F)k;>bfiMyYs6Z#{Nl3_00=W{!eAhU zUq=LD^H5y4SE36mDoxP)<`|fqMsp11hm&$1U}S=rqc1#j(|`#%(y{i2dybkoxkg4T z#xz-x%gA?N5>7i!V)lWZk$3+>0*AS-?8j9%6FsSqeN!c%kcI?Wp<>4Y&{}WdPB8fx z<_4`#v{hVrF@mRQ+6ZHHpaUilknbr=Oc@N;U(H^^Rq&21u>V~K+f2$dv;&0EhMq&C z8mgJOu$D$MO?y|gD%n&aIIn>!1=KsFHcPy5NAH4KWEZ!E941!R>r1CMe| zn-8-Y;X7$GVzb_)1$6C8UnF-7Af{LiiH_IwD3n)&A1hN_U7fu20Ukdc` zXd=)cFNX^eg-5UPp1h^bUId*55`{i>8Oh$jjyj-M(CL27Xr{x!s2c^|Ss5Ew{}ZMU z_meZ3F}EO3(5Jvr5_SQ|Cs}Hk`N4$|yLt^Qh9&(e^dPkPM}Bxn#uL))XW9BY4=R3}hB7 zrzNhuwl6p)Su>k|7EKg<#CsQ6NXWI_D5-KTNTbS@k5J`hW2&@(JJi~((~Mp@dFG@8 zWLio5sc1)8FnS;b1bgd3(V2M?rA_or;*+hTO>he7Zd5r6H$(=z&ruglrHwMEBFLeQ zo`4y-jN}!;5-33|=?5iPr<=S-8-gFSp%vMwsDuW922rKWRgPz*smZ_ur4CzEmQyzy z*vNBjp=8dA^KD6JRYCx)g@vF5p}kc>QS0^7>NV;$`iUC-d_<30i@OX{IkI~agk6&< zo=fLx0}LvJPtA?FqI!&{Z*D;3=aP~EAGTyiJ@8K1jtKQ24y;2<-UQ!)7pLqE_itO`UoAqUtj477HM~>>}a727}d(O6Yq_ zTf82u%R(< zdZa0@Hn6o~iq8$HV-VW>OiqOLMjPzvd z!;<%eRWzE4PkA(p!lYUh?6hW45DW+v)w_wx5J#)BNfWFJm+sNz1At(767Ou6#8d

^Xo2qKFB% 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 literal 217749 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 Building stub contract" - -rustup target add wasm32-unknown-unknown -cargo build -p defer-stub --target wasm32-unknown-unknown --profile=contract - -cp ./target/wasm32-unknown-unknown/contract/defer_stub.wasm res/defer_stub.wasm diff --git a/scripts/build.sh b/scripts/build.sh deleted file mode 100755 index 937a1f5..0000000 --- a/scripts/build.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -set -eox pipefail - -echo ">> Building contract" - -rustup target add wasm32-unknown-unknown -cargo build -p sweat --target wasm32-unknown-unknown --profile=contract - -cp ./target/wasm32-unknown-unknown/contract/sweat.wasm res/sweat.wasm diff --git a/scripts/deploy.sh b/scripts/deploy.sh deleted file mode 100755 index cc952a3..0000000 --- a/scripts/deploy.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -source dev.env - -make build - -if [ $? -ne 0 ]; then - echo ">> Error building contract" - exit 1 -fi - -echo ">> Deploying contract" - -near dev-deploy --wasmFile "res/sweat_claim.wasm" --initFunction "init" --initArgs "{\"token_account_id\": \"$TOKEN_ACCOUNT_ID\", \"manager\": \"$ADMIN_ACCOUNT_ID\", \"fee_account_id\": \"$FEE_ACCOUNT_ID\"}" diff --git a/scripts/lint.sh b/scripts/lint.sh deleted file mode 100755 index d6e3e78..0000000 --- a/scripts/lint.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -set -eox pipefail - -rustup component add clippy - -cargo clippy --all \ - -- \ - \ - -W clippy::all \ - -W clippy::pedantic \ - \ - -A clippy::module_name_repetitions \ - -A clippy::needless-pass-by-value \ - -A clippy::must-use-candidate \ - \ - -D warnings diff --git a/sweat-integration/Cargo.toml b/sweat-integration/Cargo.toml deleted file mode 100644 index 3c75393..0000000 --- a/sweat-integration/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "sweat-integration" -version = "0.1.0" -edition = "2021" - -[dependencies] -anyhow = { workspace = true } -async-trait = { workspace = true } -integration-utils = { workspace = true } - -sweat-model = { workspace = true } - -near-units = "0.2.0" -near-sdk = { workspace = true } -near-contract-standards = { workspace = true } -near-workspaces = "0.9.0" diff --git a/sweat-integration/src/lib.rs b/sweat-integration/src/lib.rs deleted file mode 100644 index cd2cd11..0000000 --- a/sweat-integration/src/lib.rs +++ /dev/null @@ -1,270 +0,0 @@ -use anyhow::Result; -use async_trait::async_trait; -use integration_utils::integration_contract::IntegrationContract; -use near_sdk::{ - json_types::{U128, U64}, - serde_json::json, - AccountId, -}; -use near_workspaces::{types::NearToken, Account, Contract}; -use sweat_model::{ - FungibleTokenCoreIntegration, StorageManagementIntegration, SweatApiIntegration, SweatDeferIntegration, -}; - -pub const FT_CONTRACT: &str = "sweat"; - -pub struct SweatFt<'a> { - contract: &'a Contract, - account: Option, -} - -#[async_trait] -impl FungibleTokenCoreIntegration for SweatFt<'_> { - async fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option) -> Result<()> { - println!("▶️ Transfer {:?} fungible tokens to {}", amount, receiver_id); - - let args = json!({ - "receiver_id": receiver_id, - "amount": amount, - "memo": memo, - }); - - let result = self - .user_account() - .call(self.contract.id(), "ft_transfer") - .args_json(args) - .max_gas() - .deposit(NearToken::from_yoctonear(1)) - .transact() - .await? - .into_result()?; - - for log in result.logs() { - println!(" 📖 {:?}", log); - } - - Ok(()) - } - - async fn ft_transfer_call( - &mut self, - receiver_id: AccountId, - amount: U128, - memo: Option, - msg: String, - ) -> Result { - println!( - "▶️ Transfer {:?} fungible tokens to {} with message: {}", - amount, receiver_id, msg - ); - - let args = json!({ - "receiver_id": receiver_id, - "amount": amount, - "memo": memo, - "msg": msg.to_string(), - }); - - let result = self - .user_account() - .call(self.contract.id(), "ft_transfer_call") - .args_json(args) - .max_gas() - .deposit(NearToken::from_yoctonear(1)) - .transact() - .await? - .into_result()?; - - for log in result.logs() { - println!(" 📖 {:?}", log); - } - - Ok(result.json()?) - } - - async fn ft_total_supply(&self) -> Result { - self.call_contract("ft_total_supply", ()).await - } - - async fn ft_balance_of(&self, account_id: AccountId) -> Result { - println!(">> Run ft_balance_of for {account_id}"); - - self.call_contract( - "ft_balance_of", - json!({ - "account_id": account_id, - }), - ) - .await - } -} - -#[async_trait] -impl StorageManagementIntegration for SweatFt<'_> { - async fn storage_deposit( - &mut self, - account_id: Option, - registration_only: Option, - ) -> Result { - let args = json!({ "account_id": account_id, "registration_only": registration_only }); - - let result = self - .contract - .call("storage_deposit") - .args_json(args) - .deposit(NearToken::from_yoctonear(near_sdk::env::storage_byte_cost() * 125)) - .transact() - .await? - .into_result()?; - - Ok(result.json()?) - } - - async fn storage_withdraw( - &mut self, - _amount: Option, - ) -> Result { - todo!() - } - - async fn storage_unregister(&mut self, _force: Option) -> Result { - todo!() - } - - async fn storage_balance_bounds( - &self, - ) -> Result { - todo!() - } - - async fn storage_balance_of( - &self, - _account_id: AccountId, - ) -> Result> { - todo!() - } -} - -#[async_trait] -impl SweatDeferIntegration for SweatFt<'_> { - async fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> Result<()> { - self.call_user( - "defer_batch", - json!({ - "steps_batch": steps_batch, - "holding_account_id": holding_account_id, - }), - ) - .await - } -} - -#[async_trait] -impl SweatApiIntegration for SweatFt<'_> { - async fn new(&self, postfix: Option) -> Result<()> { - self.call_contract( - "new", - json!({ - "postfix": postfix, - }), - ) - .await - } - - async fn add_oracle(&mut self, account_id: &AccountId) -> Result<()> { - self.call_contract( - "add_oracle", - json!({ - "account_id": account_id, - }), - ) - .await - } - - async fn remove_oracle(&mut self, _account_id: &AccountId) -> anyhow::Result<()> { - todo!() - } - - async fn get_oracles(&self) -> anyhow::Result> { - todo!() - } - - async fn tge_mint(&mut self, account_id: &AccountId, amount: U128) -> anyhow::Result<()> { - self.call_contract( - "tge_mint", - json!({ - "account_id": account_id, - "amount": amount, - }), - ) - .await - } - - async fn tge_mint_batch(&mut self, _batch: Vec<(AccountId, U128)>) -> anyhow::Result<()> { - todo!() - } - - async fn burn(&mut self, _amount: &U128) -> anyhow::Result<()> { - todo!() - } - - async fn get_steps_since_tge(&self) -> Result { - self.call_contract("get_steps_since_tge", ()).await - } - - async fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> anyhow::Result<()> { - self.call_user( - "record_batch", - json!({ - "steps_batch": steps_batch, - }), - ) - .await - } - - async fn formula(&self, steps_since_tge: U64, steps: u32) -> anyhow::Result { - self.call_contract( - "formula", - json!({ - "steps_since_tge": steps_since_tge, - "steps": steps, - }), - ) - .await - } -} - -impl SweatFt<'_> { - pub async fn formula_detailed(&self, steps_since_tge: U64, steps: u32) -> anyhow::Result<(U128, U128, U128)> { - let token_amount = self.formula(steps_since_tge, steps).await?.0; - let fee = token_amount * 5 / 100; - let effective_amount = token_amount - fee; - - Ok((U128(fee), U128(effective_amount), U128(token_amount))) - } -} - -impl<'a> IntegrationContract<'a> for SweatFt<'a> { - fn with_contract(contract: &'a Contract) -> Self { - Self { - contract, - account: None, - } - } - - fn with_user(&mut self, account: &Account) -> &mut Self { - self.account = account.clone().into(); - self - } - - fn user_account(&self) -> Account { - self.account - .as_ref() - .expect("Set account with `user` method first") - .clone() - } - - fn contract(&self) -> &'a Contract { - self.contract - } -} diff --git a/sweat/Cargo.toml b/sweat/Cargo.toml index c786410..4b452b2 100644 --- a/sweat/Cargo.toml +++ b/sweat/Cargo.toml @@ -9,8 +9,6 @@ publish = false crate-type = ["cdylib"] [dependencies] -sweat-model = { workspace = true } - static_assertions = "1.1.0" -near-sdk = { workspace = true } -near-contract-standards = { workspace = true } +near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" } +near-contract-standards = { git = "https://github.com/sweatco/near-sdk-rs", rev = "af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" } diff --git a/sweat/build.sh b/sweat/build.sh new file mode 100755 index 0000000..36600fb --- /dev/null +++ b/sweat/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -e + +RUSTFLAGS='-C link-arg=-s' cargo +stable build --target wasm32-unknown-unknown --release + +mkdir -p res +cp target/wasm32-unknown-unknown/release/sweat.wasm res/sweat.wasm diff --git a/sweat/rustfmt.toml b/sweat/rustfmt.toml new file mode 100644 index 0000000..866c756 --- /dev/null +++ b/sweat/rustfmt.toml @@ -0,0 +1 @@ +max_width = 120 \ No newline at end of file diff --git a/sweat/src/defer.rs b/sweat/src/defer.rs deleted file mode 100644 index 3be1297..0000000 --- a/sweat/src/defer.rs +++ /dev/null @@ -1,80 +0,0 @@ -use near_sdk::{serde_json::json, Gas, Promise}; -use sweat_model::SweatDefer; - -use crate::*; - -#[near_bindgen] -impl SweatDefer for Contract { - fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()> { - require!( - self.oracles.contains(&env::predecessor_account_id()), - "Unauthorized access! Only oracle can call that!" - ); - - let mut accounts_tokens: Vec<(AccountId, U128)> = Vec::new(); - let mut total_effective: U128 = U128(0); - let mut total_fee: U128 = U128(0); - - for (account_id, step_count) in steps_batch { - let (amount, fee) = self.calculate_tokens_amount(step_count); - self.steps_since_tge.0 += step_count as u64; - - accounts_tokens.push((account_id, U128(amount))); - total_effective.0 += amount; - total_fee.0 += fee; - } - - let hold_arguments = json!({ - "amounts": accounts_tokens, - }); - - Promise::new(holding_account_id.clone()) - .function_call( - "record_batch_for_hold".to_string(), - hold_arguments.to_string().into_bytes(), - 0, - Gas(20 * 1_000_000_000_000), - ) - .then( - ext_ft_transfer_callback::ext(env::current_account_id()) - .with_static_gas(Gas(5 * 1_000_000_000_000)) - .on_record( - holding_account_id, - total_effective, - env::predecessor_account_id(), - total_fee, - ), - ) - .into() - } -} - -#[ext_contract(ext_ft_transfer_callback)] -pub trait FungibleTokenTransferCallback { - fn on_record(&mut self, receiver_id: AccountId, amount: U128, fee_account_id: AccountId, fee: U128); -} - -#[near_bindgen] -impl FungibleTokenTransferCallback for Contract { - fn on_record(&mut self, receiver_id: AccountId, amount: U128, fee_account_id: AccountId, fee: U128) { - if is_promise_success() { - let mut events: Vec = Vec::with_capacity(2); - - internal_deposit(&mut self.token, &fee_account_id, fee.0); - events.push(FtMint { - owner_id: &fee_account_id, - amount: &fee, - memo: None, - }); - - internal_deposit(&mut self.token, &receiver_id, amount.0); - events.push(FtMint { - owner_id: &receiver_id, - amount: &amount, - memo: None, - }); - - FtMint::emit_many(&events); - } - } -} diff --git a/sweat/src/lib.rs b/sweat/src/lib.rs index bfdca06..779017f 100644 --- a/sweat/src/lib.rs +++ b/sweat/src/lib.rs @@ -1,23 +1,19 @@ -#[macro_use] -extern crate static_assertions; - -use near_contract_standards::fungible_token::{ - events::{FtBurn, FtMint}, - metadata::{FungibleTokenMetadata, FungibleTokenMetadataProvider}, - FungibleToken, +use near_contract_standards::fungible_token::events::{FtBurn, FtMint}; +use near_contract_standards::fungible_token::metadata::{ + FungibleTokenMetadata, FungibleTokenMetadataProvider, }; -use near_sdk::{ - borsh::{self, BorshDeserialize, BorshSerialize}, - collections::UnorderedSet, - env, ext_contract, is_promise_success, - json_types::{U128, U64}, - near_bindgen, require, AccountId, Balance, PanicOnDefault, PromiseOrValue, -}; -use sweat_model::SweatApi; - -mod defer; +use near_contract_standards::fungible_token::FungibleToken; +use near_sdk::borsh::{self, BorshDeserialize, BorshSerialize}; +use near_sdk::collections::UnorderedSet; +use near_sdk::json_types::{U128, U64}; +use near_sdk::require; mod math; +use near_sdk::{env, near_bindgen, AccountId, Balance, PanicOnDefault, PromiseOrValue}; + +#[macro_use] +extern crate static_assertions; + #[near_bindgen] #[derive(BorshSerialize, BorshDeserialize, PanicOnDefault)] pub struct Contract { @@ -27,16 +23,16 @@ pub struct Contract { } #[near_bindgen] -impl SweatApi for Contract { +impl Contract { #[init] - fn new(postfix: Option) -> Self { + pub fn new(postfix: Option) -> Self { Self { oracles: UnorderedSet::new(b"s"), token: FungibleToken::new(b"t", postfix), steps_since_tge: U64::from(0), } } - fn add_oracle(&mut self, account_id: &AccountId) { + pub fn add_oracle(&mut self, account_id: &AccountId) { require!( env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can add oracles!" @@ -45,20 +41,23 @@ impl SweatApi for Contract { env::log_str(&format!("Oracle {} was added", account_id)); } - fn remove_oracle(&mut self, account_id: &AccountId) { + pub fn remove_oracle(&mut self, account_id: &AccountId) { require!( env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can remove oracles!" ); - require!(self.oracles.remove(account_id) == true, "No such oracle was found!"); + require!( + self.oracles.remove(account_id) == true, + "No such oracle was found!" + ); env::log_str(&format!("Oracle {} was removed", account_id)); } - fn get_oracles(&self) -> Vec { + pub fn get_oracles(&self) -> Vec { self.oracles.to_vec() } - fn tge_mint(&mut self, account_id: &AccountId, amount: U128) { + pub fn tge_mint(&mut self, account_id: &AccountId, amount: U128) { require!( env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can do TGE!" @@ -72,7 +71,7 @@ impl SweatApi for Contract { .emit() } - fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>) { + pub fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>) { require!( env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can do TGE!" @@ -91,21 +90,22 @@ impl SweatApi for Contract { } } - fn burn(&mut self, amount: &U128) { - self.token.internal_withdraw(&env::predecessor_account_id(), amount.0); + pub fn burn(&mut self, amount: &U128) { + self.token + .internal_withdraw(&env::predecessor_account_id(), amount.0); FtBurn { - amount, owner_id: &env::predecessor_account_id(), + amount: amount, memo: None, } .emit() } - fn get_steps_since_tge(&self) -> U64 { + pub fn get_steps_since_tge(&self) -> U64 { self.steps_since_tge } - fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) { + pub fn record_batch(&mut self, steps_batch: Vec<(AccountId, u16)>) { require!( self.oracles.contains(&env::predecessor_account_id()), "Unauthorized access! Only oracle can call that!" @@ -114,7 +114,9 @@ impl SweatApi for Contract { let mut sweats: Vec = Vec::with_capacity(steps_batch.len() + 1); let mut events = Vec::with_capacity(steps_batch.len() + 1); for i in 0..steps_batch.len() { - let (minted_to_user, trx_oracle_fee) = self.calculate_tokens_amount(steps_batch[i].1); + let sweat_to_mint: u128 = self.formula(self.steps_since_tge, steps_batch[i].1).0; + let trx_oracle_fee: u128 = sweat_to_mint * 5 / 100; + let minted_to_user: u128 = sweat_to_mint - trx_oracle_fee; oracle_fee.0 = oracle_fee.0 + trx_oracle_fee; internal_deposit(&mut self.token, &steps_batch[i].0, minted_to_user); sweats.push(U128(minted_to_user)); @@ -127,7 +129,11 @@ impl SweatApi for Contract { memo: None, }); } - internal_deposit(&mut self.token, &env::predecessor_account_id(), oracle_fee.0); + internal_deposit( + &mut self.token, + &env::predecessor_account_id(), + oracle_fee.0, + ); let oracle_event = FtMint { owner_id: &env::predecessor_account_id(), amount: &oracle_fee, @@ -137,21 +143,11 @@ impl SweatApi for Contract { FtMint::emit_many(events.as_slice()); } - fn formula(&self, steps_since_tge: U64, steps: u32) -> U128 { + pub fn formula(&self, steps_since_tge: U64, steps: u16) -> U128 { U128(math::formula(steps_since_tge.0 as f64, steps as f64)) } } -impl Contract { - pub(crate) fn calculate_tokens_amount(&self, steps: u32) -> (u128, u128) { - let sweat_to_mint: u128 = self.formula(self.steps_since_tge, steps).0; - let trx_oracle_fee: u128 = sweat_to_mint * 5 / 100; - let minted_to_user: u128 = sweat_to_mint - trx_oracle_fee; - - (minted_to_user, trx_oracle_fee) - } -} - near_contract_standards::impl_fungible_token_core!(Contract, token); near_contract_standards::impl_fungible_token_storage!(Contract, token); @@ -189,16 +185,9 @@ impl FungibleTokenMetadataProvider for Contract { #[cfg(test)] mod tests { - use near_contract_standards::fungible_token::core::FungibleTokenCore; - use near_sdk::{ - json_types::{U128, U64}, - test_utils::VMContextBuilder, - testing_env, AccountId, - }; - use sweat_model::SweatApi; - - use crate::Contract; - + use super::*; + use near_sdk::test_utils::VMContextBuilder; + use near_sdk::{testing_env, AccountId}; const EPS: f64 = 0.00001; fn sweat_the_token() -> AccountId { @@ -313,15 +302,19 @@ mod tests { token.record_batch(vec![(user1(), 10_000), (user2(), 10_000)]); assert_eq!( true, - (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS + (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() + < EPS ); assert_eq!( true, - (9.499999975169081549 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS + (9.499999975169081549 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() + < EPS ); assert_eq!( true, - (0.999999998257479475 - token.token.ft_balance_of(sweat_oracle()).0 as f64 / 1e+18).abs() < EPS + (0.999999998257479475 - token.token.ft_balance_of(sweat_oracle()).0 as f64 / 1e+18) + .abs() + < EPS ); assert_eq!(U64(2 * 10_000), token.get_steps_since_tge()); } @@ -359,7 +352,8 @@ mod tests { token.tge_mint(&user1(), U128(9499999991723028480)); assert_eq!( true, - (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS + (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() + < EPS ); } @@ -375,11 +369,13 @@ mod tests { ]); assert_eq!( true, - (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS + (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() + < EPS ); assert_eq!( true, - (9.499999975169081549 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS + (9.499999975169081549 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() + < EPS ); } @@ -408,7 +404,9 @@ mod tests { token.tge_mint(&user1(), U128(9499999991723028480)); testing_env!(get_context(sweat_the_token(), user1()).build()); - token.token.ft_transfer(user2(), U128(9499999991723028480), None); + token + .token + .ft_transfer(user2(), U128(9499999991723028480), None); assert_eq!( true, @@ -417,7 +415,8 @@ mod tests { assert_eq!( true, - (9.499999991723028480 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS + (9.499999991723028480 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() + < EPS ); } @@ -433,7 +432,9 @@ mod tests { ]); testing_env!(get_context(sweat_the_token(), user1()).build()); - token.token.ft_transfer(user2(), U128(9499999991723028480), None); + token + .token + .ft_transfer(user2(), U128(9499999991723028480), None); assert_eq!( true, @@ -442,7 +443,9 @@ mod tests { assert_eq!( true, - (9.499999991723028480 * 2.0 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS + (9.499999991723028480 * 2.0 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18) + .abs() + < EPS ); } } diff --git a/sweat/src/math.rs b/sweat/src/math.rs index b5db648..de3d4ba 100644 --- a/sweat/src/math.rs +++ b/sweat/src/math.rs @@ -835,8 +835,8 @@ mod tests { #[test] fn formula_test() { - let steps_to_convert = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000]; - let steps_from_tge = [ + let steps_to_convert = vec![1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000]; + let steps_from_tge = vec![ 1, 10, 100,