From fbd1bd5a1b9afbc65b8ab682625b0486ed2c6fc9 Mon Sep 17 00:00:00 2001 From: Chris Tian Date: Mon, 5 Aug 2024 20:58:40 -0700 Subject: [PATCH 1/4] add fibonacci-lib crate --- Cargo.lock | 6029 +++++++++++++++++++++++ Cargo.toml | 10 + elf/riscv32im-succinct-zkvm-elf | Bin 0 -> 119888 bytes lib/Cargo.toml | 7 + lib/src/lib.rs | 22 + program/Cargo.toml | 4 +- program/elf/riscv32im-succinct-zkvm-elf | Bin 131048 -> 0 bytes program/src/main.rs | 31 +- script/Cargo.toml | 4 +- script/build.rs | 4 +- script/src/bin/evm.rs | 14 +- script/src/bin/main.rs | 18 +- script/src/bin/vkey.rs | 4 +- 13 files changed, 6105 insertions(+), 42 deletions(-) create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100755 elf/riscv32im-succinct-zkvm-elf create mode 100644 lib/Cargo.toml create mode 100644 lib/src/lib.rs delete mode 100755 program/elf/riscv32im-succinct-zkvm-elf diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..3f95286 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,6029 @@ +# 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" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "alloy-primitives" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "hex-literal", + "itoa", + "k256", + "keccak-asm", + "proptest", + "rand", + "ruint", + "serde", + "tiny-keccak", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +dependencies = [ + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" +dependencies = [ + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap 2.3.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.72", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" +dependencies = [ + "const-hex", + "dunce", + "heck", + "proc-macro2", + "quote", + "syn 2.0.72", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-types" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" +dependencies = [ + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] + +[[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 = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anstream" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + +[[package]] +name = "anstyle-parse" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint 0.4.6", + "num-traits", + "paste", + "rustc_version 0.4.0", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint 0.4.6", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-trait" +version = "0.1.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.0", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto_impl" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "axum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 0.1.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backtrace" +version = "0.3.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "serde", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[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.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.72", + "which", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780" +dependencies = [ + "arrayref", + "arrayvec", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "rayon-core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "bls12_381" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" +dependencies = [ + "ff 0.12.1", + "group 0.12.1", + "pairing", + "rand_core", + "subtle", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "sha2", + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "bytemuck" +version = "1.16.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +dependencies = [ + "serde", +] + +[[package]] +name = "camino" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.23", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[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.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets 0.52.6", +] + +[[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 = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "clap_lex" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2", + "thiserror", +] + +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand", + "sha2", + "thiserror", +] + +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array 0.14.7", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2", + "sha3", + "thiserror", +] + +[[package]] +name = "colorchoice" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + +[[package]] +name = "const-hex" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +dependencies = [ + "cfg-if", + "cpufeatures", + "hex", + "proptest", + "serde", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array 0.14.7", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.7", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "rustc_version 0.4.0", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.72", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 2.0.72", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elf" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff 0.13.0", + "generic-array 0.14.7", + "group 0.13.0", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand", + "rlp", + "serde", + "sha3", + "zeroize", +] + +[[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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2 0.11.0", + "rand", + "scrypt", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", + "uuid", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-middleware", + "ethers-providers", + "ethers-signers", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "serde", + "serde_json", + "syn 2.0.72", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.72", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array 0.14.7", + "k256", + "num_enum 0.7.3", + "once_cell", + "open-fastrlp", + "rand", + "rlp", + "serde", + "serde_json", + "strum", + "syn 2.0.72", + "tempfile", + "thiserror", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http 0.2.12", + "instant", + "jsonwebtoken", + "once_cell", + "pin-project", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand", + "sha2", + "thiserror", + "tracing", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "bitvec", + "rand_core", + "subtle", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "bitvec", + "byteorder", + "ff_derive", + "rand_core", + "subtle", +] + +[[package]] +name = "ff_derive" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f54704be45ed286151c5e11531316eaef5b8f5af7d597b806fdb8af108d84a" +dependencies = [ + "addchain", + "cfg-if", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "fibonacci-lib" +version = "0.1.0" +dependencies = [ + "alloy-sol-types", +] + +[[package]] +name = "fibonacci-program" +version = "0.1.0" +dependencies = [ + "alloy-sol-types", + "fibonacci-lib", + "sp1-zkvm", +] + +[[package]] +name = "fibonacci-script" +version = "0.1.0" +dependencies = [ + "alloy-sol-types", + "clap", + "fibonacci-lib", + "hex", + "serde", + "serde_json", + "sp1-helper", + "sp1-sdk", + "tracing", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[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.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "generic-array" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96512db27971c2c3eece70a1e106fbe6c87760234e31e8f7e5634912fe52794a" +dependencies = [ + "serde", + "typenum", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + +[[package]] +name = "git2" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +dependencies = [ + "bitflags 2.6.0", + "libc", + "libgit2-sys", + "log", + "url", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff 0.12.1", + "memuse", + "rand_core", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.0", + "rand_core", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.3.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.3.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "halo2" +version = "0.1.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a23c779b38253fe1538102da44ad5bd5378495a61d2c4ee18d64eaa61ae5995" +dependencies = [ + "halo2_proofs", +] + +[[package]] +name = "halo2_proofs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "pasta_curves 0.4.1", + "rand_core", + "rayon", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", + "serde", +] + +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[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.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.4.1", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +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.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[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 = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[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", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[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.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "jubjub" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" +dependencies = [ + "bitvec", + "bls12_381", + "ff 0.12.1", + "group 0.12.1", + "rand_core", + "subtle", +] + +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2", + "signature", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "422fbc7ff2f2f5bdffeb07718e5a5324dca72b0c9293d50df4026652385e3314" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] + +[[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.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "libgit2-sys" +version = "0.17.0+1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "libz-sys" +version = "1.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[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 = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memuse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2145869435ace5ea6ea3d35f59be559317ec9a0d04e1812d5f185a87b6d36f1a" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +dependencies = [ + "hermit-abi", + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[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 = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[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" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint 0.4.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[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-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[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 = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive 0.7.3", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.36.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "oneshot" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e296cf87e61c9cfc1a61c3c63a0f7f286ed4554e0e22be84e8a38e1d264a2a29" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl" +version = "0.10.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "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.72", +] + +[[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.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "p3-air" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e909ef66fa5d77ff0fd3cb5af4b33b27fa6fb68d02b9b1e70edbc29383e565" +dependencies = [ + "p3-field", + "p3-matrix", +] + +[[package]] +name = "p3-baby-bear" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46965470aac1cddfe52f535424b59d52f2fffef0fdeb9dbed19da39b1d8f048a" +dependencies = [ + "num-bigint 0.4.6", + "p3-field", + "p3-mds", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-blake3" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36ef32d6ea21dd5cf9fec8a31bf0c64e6ceee8901dbf50966b83a443093c2aba" +dependencies = [ + "blake3", + "p3-symmetric", +] + +[[package]] +name = "p3-bn254-fr" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3edfca6be3b3109adf8e3330baec30c3fc5f9f4d63d27aaec1b471ca51ed67" +dependencies = [ + "ff 0.13.0", + "num-bigint 0.4.6", + "p3-field", + "p3-poseidon2", + "p3-symmetric", + "rand", + "serde", +] + +[[package]] +name = "p3-challenger" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6662ea899a5d848b60c699944491d72757873b5e1fd46798e4712f90a03a4e9" +dependencies = [ + "p3-field", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-commit" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc3563918b5cc44ef5280bf9b51753e70dc78802de25e3fb81ed6c94617ccb6e" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-field", + "p3-matrix", + "p3-util", + "serde", +] + +[[package]] +name = "p3-dft" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510095701819d83c9509fe825bbf1ebfe50426ae75149df5fe1dcfd18261323a" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", +] + +[[package]] +name = "p3-field" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1977a0a65789f719aa824119c332c4676b000bdbfe94d312fb6244a70d601" +dependencies = [ + "itertools 0.12.1", + "num-bigint 0.4.6", + "num-traits", + "p3-util", + "rand", + "serde", +] + +[[package]] +name = "p3-fri" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22ddb958f200d9289cc73ff68847b0167ca0c14557b791dd9e318f98c2d1b28" +dependencies = [ + "itertools 0.12.1", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-interpolation", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-interpolation" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d032cda212f6b408d7d5b0b9a8270a9455acb93742fe55a0880d82be8e90e500" +dependencies = [ + "p3-field", + "p3-matrix", + "p3-util", +] + +[[package]] +name = "p3-keccak" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c56abdd5a8a780049d2f8e92cea1df57b55a2ef50a40d1103f2732f7a00e4b1" +dependencies = [ + "p3-symmetric", + "tiny-keccak", +] + +[[package]] +name = "p3-keccak-air" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8398f1694ccc38513df0b8cab5f9ef7325423f27cd9e4fa20bdc77d5079cf1b" +dependencies = [ + "p3-air", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "tracing", + "tracing-forest", + "tracing-subscriber", +] + +[[package]] +name = "p3-matrix" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d548ee0b834f8e2ebc5037073acd101a3b0ca41a2d1d28a15ba0ccd9059495b0" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "p3-maybe-rayon", + "p3-util", + "rand", + "serde", + "tracing", +] + +[[package]] +name = "p3-maybe-rayon" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55f5575d3d61bedb3e05681abb0f36b8bb339d65aa395d50756bfa64e9cd3f46" +dependencies = [ + "rayon", +] + +[[package]] +name = "p3-mds" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6e57ed310d59245f93e24ee805ea7aa16fc9c505551b76a15f5e50f29d177e" +dependencies = [ + "itertools 0.12.1", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-symmetric", + "p3-util", + "rand", +] + +[[package]] +name = "p3-merkle-tree" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af46b41cba75d483ec8a553cbab1d2d794935ae3403d75394acfa4fb2c977cce" +dependencies = [ + "itertools 0.12.1", + "p3-commit", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-symmetric", + "p3-util", + "serde", + "tracing", +] + +[[package]] +name = "p3-poseidon2" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adaba6f14c197203530e233badce0ca1126ba3bf3c9ff766505b497bdad0bee1" +dependencies = [ + "gcd", + "p3-field", + "p3-mds", + "p3-symmetric", + "rand", +] + +[[package]] +name = "p3-symmetric" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ecc4282566eb14f48be7707f6745c4dff6be664984d59ec0fb1849cd82b5c2" +dependencies = [ + "itertools 0.12.1", + "p3-field", + "serde", +] + +[[package]] +name = "p3-uni-stark" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1af5c038b22b058bf1d49fb1ea3dd6c240a3e46c3278fde5c444e0034f7ffe37" +dependencies = [ + "itertools 0.12.1", + "p3-air", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-matrix", + "p3-maybe-rayon", + "p3-util", + "postcard", + "serde", + "tracing", + "tracing-forest", + "tracing-subscriber", +] + +[[package]] +name = "p3-util" +version = "0.1.3-succinct" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79f3fef0e00d9d7246385e758c4cd39b4efcbbcea31752471491ab502631385e" +dependencies = [ + "serde", +] + +[[package]] +name = "pairing" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" +dependencies = [ + "group 0.12.1", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pasta_curves" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "lazy_static", + "rand", + "static_assertions", + "subtle", +] + +[[package]] +name = "pasta_curves" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" +dependencies = [ + "blake2b_simd", + "ff 0.13.0", + "group 0.13.0", + "lazy_static", + "rand", + "static_assertions", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.0", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "portable-atomic" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" + +[[package]] +name = "postcard" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" +dependencies = [ + "cobs", + "embedded-io", + "serde", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +dependencies = [ + "proc-macro2", + "syn 2.0.72", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint", +] + +[[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 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.6.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax 0.8.4", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "prost" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "psm" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +dependencies = [ + "cc", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quinn" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.0.0", + "rustls", + "socket2", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" +dependencies = [ + "bytes", + "rand", + "ring 0.17.8", + "rustc-hash 2.0.0", + "rustls", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +dependencies = [ + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[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", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rayon-scan" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f87cc11a0140b4b0da0ffc889885760c61b13672d80a908920b2c0df078fa14" +dependencies = [ + "rayon", +] + +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", +] + +[[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.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.4", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.30", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration", + "tokio", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.50.0", +] + +[[package]] +name = "reqwest" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", + "winreg 0.52.0", +] + +[[package]] +name = "reqwest-middleware" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39346a33ddfe6be00cbc17a34ce996818b97b230b87229f10114693becca1268" +dependencies = [ + "anyhow", + "async-trait", + "http 1.1.0", + "reqwest 0.12.5", + "serde", + "thiserror", + "tower-service", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[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 = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rrs-succinct" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3372685893a9f67d18e98e792d690017287fd17379a83d798d958e517d380fa9" +dependencies = [ + "downcast-rs", + "num_enum 0.5.11", + "paste", +] + +[[package]] +name = "ruint" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint 0.4.6", + "num-traits", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + +[[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.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.23", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.23.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +dependencies = [ + "once_cell", + "ring 0.17.8", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + +[[package]] +name = "rustls-webpki" +version = "0.102.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +dependencies = [ + "ring 0.17.8", + "rustls-pki-types", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scc" +version = "2.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d777f59627453628a9a5be1ee8d948745b94b1dfc2d0c3099cbd9e08ab89e7c" +dependencies = [ + "sdd", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2 0.11.0", + "salsa20", + "sha2", +] + +[[package]] +name = "sdd" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "177258b64c0faaa9ffd3c65cd3262c2bc7e2588dbbd9c1641d0346145c1bbda8" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array 0.14.7", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "serde_json" +version = "1.0.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + +[[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 = "serde_with" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.3.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "serial_test" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b4b487fe2acf240a021cf57c6b2b4903b1e78ca0ecd862a71b71d2a51fed77d" +dependencies = [ + "futures", + "log", + "once_cell", + "parking_lot", + "scc", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "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 = "sha3-asm" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d79b758b7cb2085612b11a235055e485605a5103faccdd633f35bd7aee69dd" +dependencies = [ + "cc", + "cfg-if", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint 0.4.6", + "num-traits", + "thiserror", + "time", +] + +[[package]] +name = "size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" + +[[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.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "snowbridge-amcl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "sp1-build" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "260c285956e8205d332c9a5acbd828462399b04caf72d0620718a20447bac91d" +dependencies = [ + "anyhow", + "cargo_metadata", + "clap", + "dirs", +] + +[[package]] +name = "sp1-core" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e916b2084e5de5e45c1dc3244dc212af9c8334dda3246acde7fc6e5ab4a7fc1" +dependencies = [ + "anyhow", + "arrayref", + "bincode", + "blake3", + "bytemuck", + "cfg-if", + "curve25519-dalek", + "elf", + "elliptic-curve", + "generic-array 1.1.0", + "hashbrown 0.14.5", + "hex", + "itertools 0.13.0", + "k256", + "log", + "nohash-hasher", + "num", + "num-bigint 0.4.6", + "num_cpus", + "p3-air", + "p3-baby-bear", + "p3-blake3", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-keccak", + "p3-keccak-air", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rand", + "rayon-scan", + "rrs-succinct", + "serde", + "serde_with", + "size", + "snowbridge-amcl", + "sp1-derive", + "sp1-primitives", + "static_assertions", + "strum", + "strum_macros", + "tempfile", + "thiserror", + "tracing", + "tracing-forest", + "tracing-subscriber", + "typenum", + "web-time", +] + +[[package]] +name = "sp1-derive" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dbc1d9a05a0e83f548907d50539e5e59873bbf6a82793ce87a195345ca7ddf9" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-helper" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71dce2545791b5c0c2e65f81eb76d74d51804cbbe758643978dc0bbcdbbaa127" +dependencies = [ + "cargo_metadata", + "chrono", + "sp1-build", +] + +[[package]] +name = "sp1-lib" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de4c2cc40e1019faac8cdbe61172c7be09960cfe240c712be46df3795c53fce8" +dependencies = [ + "anyhow", + "bincode", + "cfg-if", + "serde", +] + +[[package]] +name = "sp1-primitives" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb04c7a047b000dbab6b6e143f10e79a2cc5294d98fed74dc5dc11d374cef297" +dependencies = [ + "itertools 0.13.0", + "lazy_static", + "p3-baby-bear", + "p3-field", + "p3-poseidon2", + "p3-symmetric", +] + +[[package]] +name = "sp1-prover" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "906ed35cdb4d24050b1d00aa51abfdb986883c5280ca6b34b1cd50e673cfad02" +dependencies = [ + "anyhow", + "bincode", + "clap", + "dirs", + "hex", + "itertools 0.13.0", + "num-bigint 0.4.6", + "oneshot", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-field", + "p3-matrix", + "rayon", + "serde", + "serde_json", + "serial_test", + "sp1-core", + "sp1-primitives", + "sp1-recursion-circuit", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-gnark-ffi", + "sp1-recursion-program", + "subtle-encoding", + "tempfile", + "thiserror", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "sp1-recursion-circuit" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a620b1c84ea7776deebf9eed2a5310c040f1b5b1db0709a2b36b86516f743d" +dependencies = [ + "bincode", + "itertools 0.13.0", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-util", + "serde", + "sp1-core", + "sp1-recursion-compiler", + "sp1-recursion-core", + "sp1-recursion-derive", + "sp1-recursion-program", +] + +[[package]] +name = "sp1-recursion-compiler" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5ef5565d25bf41f00280f0e09ab27cd39b8c8986af12c083e85a4061a49621" +dependencies = [ + "backtrace", + "itertools 0.13.0", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "serde", + "sp1-core", + "sp1-primitives", + "sp1-recursion-core", + "sp1-recursion-derive", + "tracing", +] + +[[package]] +name = "sp1-recursion-core" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5785177a892714601fd2f3e5e79af43d222bdedc415fb7cbdd52c9b1ee4dc3e2" +dependencies = [ + "arrayref", + "backtrace", + "ff 0.13.0", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num_cpus", + "p3-air", + "p3-baby-bear", + "p3-bn254-fr", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "serde", + "serde_with", + "sp1-core", + "sp1-derive", + "sp1-primitives", + "static_assertions", + "tracing", + "zkhash", +] + +[[package]] +name = "sp1-recursion-derive" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5970fa689c5b3e41d2ea4a81f9207594b9befc2ba5ad9d8727b6bdbc7ba054e" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp1-recursion-gnark-ffi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aacdfec9e2895f0166125b89f3f058a25cdbbdce300839a46b240d3bafbac13" +dependencies = [ + "anyhow", + "bincode", + "bindgen", + "cc", + "cfg-if", + "hex", + "log", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-field", + "p3-symmetric", + "rand", + "serde", + "serde_json", + "sha2", + "sp1-core", + "sp1-recursion-compiler", + "tempfile", +] + +[[package]] +name = "sp1-recursion-program" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b570d8e40b8faad877e7c8604de8bc51f61dbee8ee7e0efe3ae7610585e69c" +dependencies = [ + "itertools 0.13.0", + "p3-air", + "p3-baby-bear", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-util", + "rand", + "serde", + "sp1-core", + "sp1-primitives", + "sp1-recursion-compiler", + "sp1-recursion-core", + "stacker", + "tracing", +] + +[[package]] +name = "sp1-sdk" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6924c2ba6d0a522b17f29368f6db8ebd1bf2a424eb4d6e67308f1be4df9d860c" +dependencies = [ + "alloy-sol-types", + "anyhow", + "async-trait", + "axum", + "bincode", + "cfg-if", + "dirs", + "ethers", + "futures", + "hashbrown 0.14.5", + "hex", + "indicatif", + "log", + "num-bigint 0.4.6", + "p3-baby-bear", + "p3-commit", + "p3-field", + "p3-fri", + "p3-matrix", + "prost", + "reqwest 0.12.5", + "reqwest-middleware", + "serde", + "serde_json", + "sha2", + "sp1-core", + "sp1-prover", + "strum", + "strum_macros", + "sysinfo", + "tempfile", + "thiserror", + "tokio", + "tracing", + "twirp-rs", + "vergen", +] + +[[package]] +name = "sp1-zkvm" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b4490136e03f6fe931dc49559574bb6dbf5e6a86cae1f60dc3842d2b79905ed" +dependencies = [ + "bincode", + "cfg-if", + "getrandom", + "lazy_static", + "libm", + "once_cell", + "rand", + "serde", + "sha2", + "sp1-lib", +] + +[[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 = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stacker" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "winapi", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.72", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "subtle-encoding" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +dependencies = [ + "zeroize", +] + +[[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.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-solidity" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + +[[package]] +name = "sysinfo" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows", +] + +[[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", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "thiserror" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "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.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +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.39.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[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-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.20", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.3.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.3.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +dependencies = [ + "indexmap 2.3.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.18", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-forest" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee40835db14ddd1e3ba414292272eddde9dad04d3d4b65509656414d1c42592f" +dependencies = [ + "ansi_term", + "smallvec", + "thiserror", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "twirp-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa3161d8eee0abcad4e762f4215381a430cc1281870d575b0f1e4fbfc74b8ce" +dependencies = [ + "async-trait", + "axum", + "bytes", + "futures", + "http 1.1.0", + "http-body-util", + "hyper 1.4.1", + "prost", + "reqwest 0.12.5", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower", + "url", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[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.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + +[[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 = "vergen" +version = "8.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2990d9ea5967266ea0ccf413a4aa5c42a93dbcfda9cb49a97de6931726b12566" +dependencies = [ + "anyhow", + "cfg-if", + "git2", + "rustversion", + "time", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[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.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.72", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[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-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[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.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[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_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[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_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[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_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[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_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "ws_stream_wasm" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.0", + "send_wrapper 0.6.0", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +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.72", +] + +[[package]] +name = "zkhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4352d1081da6922701401cdd4cbf29a2723feb4cfabb5771f6fee8e9276da1c7" +dependencies = [ + "ark-ff 0.4.2", + "ark-std 0.4.0", + "bitvec", + "blake2", + "bls12_381", + "byteorder", + "cfg-if", + "group 0.12.1", + "group 0.13.0", + "halo2", + "hex", + "jubjub", + "lazy_static", + "pasta_curves 0.5.1", + "rand", + "serde", + "sha2", + "sha3", + "subtle", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..3915b20 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,10 @@ +[workspace] +members = [ + "lib", + "program", + "script", +] +resolver = "2" + +[workspace.dependencies] +alloy-sol-types = "0.7.7" \ No newline at end of file diff --git a/elf/riscv32im-succinct-zkvm-elf b/elf/riscv32im-succinct-zkvm-elf new file mode 100755 index 0000000000000000000000000000000000000000..c55acc1452a8ccfa352e672370f280bfd688cfbd GIT binary patch literal 119888 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 (u32, u32) { + let mut a = 0u32; + let mut b = 1u32; + for _ in 0..n { + let c = a.wrapping_add(b); + a = b; + b = c; + } + (a, b) +} diff --git a/program/Cargo.toml b/program/Cargo.toml index b57f10d..1ca3335 100644 --- a/program/Cargo.toml +++ b/program/Cargo.toml @@ -1,9 +1,9 @@ -[workspace] [package] version = "0.1.0" name = "fibonacci-program" edition = "2021" [dependencies] -alloy-sol-types = "0.7.2" +alloy-sol-types = { workspace = true } sp1-zkvm = "1.1.0" +fibonacci-lib = { path = "../lib" } \ No newline at end of file diff --git a/program/elf/riscv32im-succinct-zkvm-elf b/program/elf/riscv32im-succinct-zkvm-elf deleted file mode 100755 index 6491c30b7308e945e5b2d254192e7017cd1b716e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131048 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%0DuP1Eu9b(>x0Vi;D-8 zViL*T(11UeA?ze{>X+l%Vk@z7+Z_BNb{OJUSYBEdt(CzK+7n+aH_Up;v@E$7Wxc|( z4ES6~M8Op`1FF*~fsx@RxNw89!m78<+xN1UB;qVo*9l=6da_)nDidPya2LQ2y-B=fdbU&qRKf< z6H?r3fJ|##&-SOhVAkZBL3-8pXJMPtFZKgcwyE@|&ZrzvQZ<92=0KM7$0GdL&!o=A z%quN*U}}15M(Uu{%+##Z?9{<&scC6x1JlyeGSUX6Wu|4NWv2}um^v_R;J|_D12YB= z8kjjSYhd=k!Re{#Y3T#g)6+B32c>7GXQgMS56(!%mYPj9Z$v?J=zP{F~pF z$I&O^C*{^Ff6IIS)9a2F{9K89EtZSu^|bMbw`?D-?O4lt)zA*V4jZYUxFU#h`urDB zZc|Y?J1TfGFz3rna{_awB&ML~_R86Ja1v@*W}#r%fpNZyE^jKWL#!tm=nIY-=6Ew6 zSNi$-LD5f1EHs3Frr+o_E72ffaALM=0&O*P+e7yST-n}a;~7)N25fIUMn2b+tj2Rz z_MqSA^2Gq_I=K+m3hVF*_|5)dEPlL7JPCg@Y|V-FMad_ZvCAIoG>-o5X!2=SX9-P{_ zVB{}do*tc(Q84z%txsPwru3p~pV;~Iwb};-me?uXu`(@il$qN4OfoCv2o zb$4IqP+y-!-N=H1%ZDvj-e|{#`VgwSd=QCtbkrS=!Me-gayYOfql?3-#}KWBSS{Ay5Z#XUAZ~Plj@#K2pbKF{iHk z^lNm7H`X^rcSOZ_M>#sdKV8p?(-EROMo)^;r()M6BIUTi;c_OpTH#NR9T98Mi3>U4o#EB; ztB+{Lokl-nh+*6r-7oqs2o{wn&eOD?(S5=<%s)3Kh^ zY+WtdKu0&Va)=Qv?hi4vr>y>M1avtT-hwN-Q>{r9e@mI4EZJ&HM#{n)R2|{AfWz{T zmXb20>E0W-M_yiUN=Zq%c?wp*OSr1eMZ)C#uOUO*W#u=*W_r;I>nBT>7LV-4k!TpN zus*TATP`N~Scbcpi`k%xN-By9gGO(5>-k#3NyE(BPPq1j|3_e>`*0lw?7>y~Pt9hl z2130_zYOy1SEc+}<%&g>0oFLS7P6fni`V4M`Sw||vQsa^%8WTrv}_^h^?)A7woLrq zvoK6*tuKBWYC77t!|nAtd^j^F+8yJFb0wgvwsHGgx7FJ@Iyf$9)!BWaudAM<-|D)} z@uKr3$4rq^VrJIF>+X5(g%@8Nw7<>brT0DQY8BVIP4Bdf zA$h|`{pRX1g~3U$Z12?B>x+(Q+aYuCkj>A2{@19il@Dz8MqhmC)S~+zY+X9}^&fw_ zamvxg@VN1hJ)Sb4SMr1>);_&%{ie;o{r%3}o|xEn7Y?~B@0yL9-uug1?*$#Z^|u;QNOMW0Y^|p%HcippW{c|sF-Sy!MFP4=4 zF?36}JKauKf9F)EJ|Lxf{)Nu8_|C4Rs4nil?p#+~pX%p4NvMQ1DMYWIi zC0?92*omVJQro*Pa&~g-IoYl&-2+_F-Y9R5(aRMZmFXPf?&x*JddH5+N^h0!P4Pv~ z>v`>!eSLk}ckJ1@ZHK6<5kPLM3%t>uk-lD0RWX-e+Q)OTJKA%NN5{*f?&{@Jx{UNi zS8u$fTV71GrBju@5YjPpf% z279CDWnSRD*x7la9zU>E&Er$6Vybs98y#r1AT^=={m;!G@${?n2YdUtCV6^B506fE z`{!@HDR`x8u(x#%tHdJ>z6GE5iF)R{dFk=`g`PNZZWxMcd`AR6VZez!+7Ua#T1{P+^C*W>d> zwT|u_b3ts!Rta&j@va1Cn>PNa_Id|bqJDw1qqmdZ+0nJV;q2?|ACsb|y3!m2^-Ydv z9nZO*_nmZ{a-VjbafYLQJA2OZd!I?Y?)v2`R(AeJT>O=zPc^0txNOqRlfPMT?|lzE z`0Pu+|HGcW@BI180|&#J%dF5@LoU8#)NgKHa39ERzyHJDKfnLMfrDC8b-$SP{g%Su zf(IUd;+^+DXw|y+kc;z1U3b%@TP7CZr|ai zNykr|30Kd!{mZZ7x|Wo7zHstgcfauBJ%8BQzC)L;!$({_hV}pMdtTnN?~^Z%)E_Ia zxWBUM;hrf2Hodt0^|wCw?5oGLoJUrt-rx1V_Prmzdd!VCd42H-y$1aFQ%PyoC6`^E zxAK8;)2iNn=fjUa|Lb>W!kRI;+x)Lw^K*TjT%OkRw!~FG@9r8kuaolvpY9sq%5Zs| zy4T}v9X&R_jdz0A>FOLE<@7ndP8eU#SeM%wz*HOo#-3Ty1(1DJSGeXsazRYHC9B*6 zFrqu+5~HgB*sU_Q`qPf{65Q2a#r*uFGb?J|q_)*NeAVx|qZ2Q7Mtib-!+o)y%9t+B z8(lXmu$ZVNCOw+)1|KR+Da!NET_Eml#M zKE=P$kSz{`!(&CdC!M5WPm?}d;#BLouNOekULs}GREI_f5?vopHvzSA8vs+aIXyf5%9TIIQBY1 zKVY+K3AcyC*)8}%ejE7YbMOXumPZcw%|idIcEt2HKxQ{&)>twvwGoD8xKPi^!{H3d zjclH8#TBR zI3Gf$^Q>@qJpOK}JdS`L3*I;fpMc2&dG_Tk>8FC93%=Uo?fuGF@Lzy8^9$|F&X<87 zJv$s8DfFB5TL$i}1YZfBV*$c%F^$_824px!wG_vF;P-()SDid+>2I;ZQ2PP{_u6_< zUUQH~qK&57+bCtSAyatAxyPy`$V`IFhme_Mm1#?DjB+@ZS99I<@8z~YF8iMI%drmZ zgIw{vrZP%Z(?|X&`1j7kxAkGHpMP%s4Dc(!pQ{fX4}K^3bM;@9;P-)VsZAP)-zxA8 z;LkV4?|{tE1^>SP+7G#{kULjgxG3;8_?FVbxESCYz#qZi=>N{DkCe%U%pkziXYrc_e^y)>#u3PDg&#wOOtW#& zz`X=a%HIQTjbCT^L75E5tXdKd&lc@tti63Ooa-TTXsMO&`OU`-`Z1f6|793gtTtxP zGy1UxG6~CDPA~bL|Azm<;?Gs~jo_2vKii-^Kk0vGEMD~kzks}BY_mj=9}0dY_>tt% zSJ~UyB=9@VG$%k8Tl)bhda2VX4uz_HV%9T{@3^3Z;MBx-fEWmBd?ekJ5P zhr;3OMVL92Ey+I`^H}WTtxPSJ-EQdQJRA;h!QYH$OZ{vzsKb!k4Y@`Um(;?u{cf_4 z6Y+p!)uZ8XKjG(Dd6Nx(E%?TOIvqj2Wf@`4x~q@>rA2 zeO7)mty>|J^El>ZR=a5_t*kqrL(W)(u>ybF>o)Vb0sJKJi7t~b`*-4sXNX zh*OJgl5M0Ka@o%|*);j*>mL}`t&lH#-s%&Jo7Pu_}oh4BBZy32>c3&3ZHvOO#Q2Kd##!`#Md({}%Jz#H4n zJ#Wtkp97W{PZqecAI+Sh1U2D>4%@|AFS$vM(^0DJ@ZbIliA z*mQLSe7+cS&dS3i@TtEKhjT<8oRx-L@MHgg@Xx^)g5R;z8Y^0uLoWc|0G{o}-hO$D zZr?IPT$hULcwlY}3UI3u_n#YSDOrP4Qu`MMXKLJm7c3uQj2@kfHzM$IMV6*bn1cPi zRYsr~JJ=&S87ZkLnf?3r#RiapshRioaxivWm))3w&XeD@_EH^|>$VaeYD zy#8y$T=V4PQue0=K;g? zGVwa#v5Nfr!1;>&ufTk-hkYgEPrHa%I99{xJ(n{wZL-yTfsme3VOI$;Scj z0-uj`kuSBdiKT^_saDJ=Ht)W`MCxKa>!lBk6V(S&` z0cLp$=Rn&R^+n<~z^pG4CjzrPB<=#t{FgWhnB^~VA7JLc#Hql{e~B}J*(f?B5m70`yYLyDl@KymgD&ai}oOmG8-gW~g11H0G z=I>9yV->z5)*R$Jd*t&hETZJlxGA0fNjwgi{z-fzF#VIb09Z}Wbl`|XdKAp~-*3ZD z0Q=e)mWr-D1FZVD$tM3Yu|FdJd*J?-HuLj!;Mfik{#_gX5V)r(nttw8>{HJpI2^!IZzrCSRcNl%J+x$}h0VFI9NT-=|>8KW~%Y zs_>M5S;3V5FPr>l3Qzej6ioSFZSrRnp7Kttg-Azv16a+^o(fO-ehQ}iD4YD%3Qzg* z3a0$+Hu;$fPx(6)O!-HE4W<38vFSgp$Wwo#f~o(8P5v!~r~G>gru+}Ud!jk8D%mVa3=qABBw7&s2D*F3@6TXe~zxd3gHdnzJz*}!L zgm>^^2r&H<&S9>v+^^u_;OU>_M+3|Eni>8~3rl`3FvF90KCoKeOMoK|^;N;lpWgz% zr^K(;rvIuU&-{H|!PNi8CVxobDgUE_DIbrCks7~toG3N9`fw)&Q+}vT{&Iz<|05Ml z`9fg6&uqX?mNy--aJsh6;w9b;%=eusA?4-!&n)pn7BA)h1zZOCTt%K(@W%a8sS0ACOLfSRqzN-Zcdc!3l0Dh@+l#qRbwaNfWC?!0p4Z{f45Cv z#cx1f#cvZU`o94C4n^{(O9$BN|BRIXDB#fwUkSVdSgjwcOPj}E#ZN(A#T$U%Q~djo z{vm&bb7-FeHz@Y%7r^p72IfCLrD0+z9}CR(B5@mFwik&LS#U_N#9e^pc@p$*l!YZf z23VdmLH-U4OTHRdooYY?NKF+fI&l9j7 z>9Y9gz>H6_g`Wjx__92|2bO1>(7#8O@R?sP+v4{Jg=cyE$riu26kfJBHUH|stC(r! z87acS9tE#r-sjmW!m-qv<9|Wk&hxw#;e@=3e}=q@8-R`PjV616dOXKPI9==3xj9Y- z_9^n$0`tt5%}|i`9kJB^i^WUKE8npfPQ*{eA46Wnl;asI!U=g5{}u8orrc4RJm2vb zPS?JIJmW8%Lpun}^h^8$uv#DMfg`Ryd;(alkE!Sn%rliB#QvansVKk07M=vm^5GsD z^7jKX|FbQA7clc%;(=u%{c9|KBQVpKVd2wCd}RGn({}+5m{2j)G@f-M9OeVyRm}Sf z6uvun6_ekk@X6p+OrGcJ2q(%%#VL%Bjn7eV26z?IAD-(YobXS@Ll{3Bzh1#P;8je2 zb}2kD&+idV_^;yO&{r|#c!rR0LSDtAA+KV}CEj5OaSh`qcomaaH8;ZB@%50m^E}%~ zI1#>zZ-Kmu3xQYv%h1+Cf%eBgfrtJW!MAt8_@vbLS-^9Z=Qno|D|`*`3I#6(UZddq zf!8beA>eHaejIqGf}aL{Pr;jj|4YHY1^!&YwZJ@kNjQi0DsY2>Uk7&m5aIU#cUJJb zz)1@J2$<(BN&h|r9@mV7ZV&k2(G^N58d|0FQa5R&=(j)f)vAu!JuGVKeL?78W;AQ?kU}4Fx2Ig5tvV7jOu;l*?JWJ6( zW?{)U0`m+c>3^^80!uyxnCByPzzxR#1`A6*ADCw+$@nj~u;d>E=DA9ef6c;@-wn(& zmt_9_WMRo42j*E!GJh{h5?J!dz&xi(`ajOXlD`p{XE@3Bwa~(nUjcjqJeJMO^li7W z~T3P;IWnsyW2j+QFQvV(cOMVeB&zf>u z`Y%~n@;iWe4wdx3&cc%a9++o-Nn8)SQo#+t?EfVn24?>+v8QKq`=%9e#MOt}0;~4T zO*f12=rDw6zqFqs`d1$??d2PQ*}v)*UIWbjRNB|=0>YjcYU#gPDB>&i8-Y1que5l4 zTE*=jyoy! zkM?X9FwZ4pcyc~LES#>*w0Mc{1m>A#qj5vZ6HERFie@o4&JFqWx7H=2eEL z;#(lE;zHm;$ZvrL^XoO>p}=PQ0;VGtPS-94q2gTNoe1BoZ}5SR{t1Wuci>fA1^gc5 z+d_cj&06673Z`DdJcAcFU3(XNe$#r0TlB-44}BYvKL*VFmHMZEnZFY2y+wK@_5w3K61M_odL;G(A64)Lz(bqTsiYB$Sm}? zOuz8Yp)CuF{AS5>{pi1dlTe8-%>d_?vigOvPWe{hX0zphhwuD{%D%dddK%lWZdzwQCA zVnjnrop100r)vwq^DIN*kUzkQ3SJ4!GYTdDFmS$t*8r>K`wVcz)rU6&tL6K1zKD;3 z0$}<5jQn7DGXFB}5&p~kn+Yt>T4a9h0G4Ma62G8?$MpXhnCUa?1JXyQruWi5%`y4W zN`4UUIuE`A`gXqaLW62>B0Lq3g1m|;HG8qa3!IQw@fgUfm{R+e8oa;>c@aV!>TsWbx;zf{GG3EBzJ^7 z?*Oay=L6t~s}Fwytk$15ZV~yBzKCtiaaGJKW49EG7`>LuN0@B)YZ zCE#;qf2g_4yDGm1yo#RzX8MJ5Xq$m&H;oT&?M2H!!Mn6qfbqZOyxMCKfP3}f-N0&n z_z3no!^;NC@_u!?$bX5y2WEMVwfJ`x|5(1?0Y`3mwI3tE4DT4Q8eXHq%lg4H<%QF= z#Qu2RreNORqTma`tC;*Yg(qHfzrhQfC_fcRkqUL1y0DTxEJJAOsU)l3|`=L ztv~oklJKp0;E1aa4+d7#|Jo$s-#!R2zjfq4<0J9RB9VTX-(Qr7^d7O~FH`(y{@r8? zzd+$x-qUR1&ro=o|7v=cf>-f4`P82E4U4Cqkjxh6cl!c}LV}RxP!{qOL z?|Ga4OA62aW4lfNHHD{solXCr3Qzr?Z2HF(p8B2An#aEzaKs`1fYtb?Dm?YCvgwag zc!qz2O@Fe&Q-7{af4;&~e~C^1K82_L^T0eO+d!mc`O0&%S$@uef){DhH6L&_b53>fyp?w6r z6F9-bjlhQ#Os#xHzgN15AMY~<`UBHH;T&2zF#VHwFz|c87vKiNE3~lWZv|#}5|;t1 z^?N38#G(9v)%r1C;aNVERpa{(?1+I;;`QzSWW+RH6nc@A;kXf zSzvjlI{T|@6@8gMYWz#VtC(Sxtu}ap6aABlt01ppO0|8|-~~>|tN2dHtC&*TZ1O6e z2YD4!p681Tr)!JB^Bj2L9NN9WlN1~RE>`fPz$FTP3RunG4ZsnH_6@A&@At@0>c0&k z=4ZbJB0RIc0RIJ;;j!kB-?UJ~uakveQv8?sucqgH@GAZoxDx5*nIy7*Ar?;8dJPi1 z#QlJ?e~~=aM}W5}@|OVbQ*a*eg2$yi_ICmEe0Sk=Z6fe`1y2U%x$}~r4$L#+CFXU_ z6NZ2&|J%W<@v-wW!K?D*_bK{!f>$y5oV5loaH4*xxEk^*UIe^)ozb*@NiAaGguaUZ zV#%v~?)v8PD*hPqDyCk}rsnc0{ww2W7VwZVP0hT zD!vZ#DyCqDB7ZY@6_Y=@)!+qAq({X8$g7xA#!Ch-aM&*iUd5%r^7{qs-ygNGkauWL z(LbgAZ2*o%`Xv86@TzYj_$6TGhvc^dGe0DL4Os1;-UN=g`tUozYX9_4^f%+tz6}Vm z|DUs1#7Ek*Z!HnwoAV*`Pf<%n{M?Xdf3**o`N1%$KXsW%Kf5jB50vnm`Y$EF4uj|U z=E8~mUa#PK@G3q5oPqSlLV@|&Eeq`fn3}{_0S{9!{oPq>@B%0NSMhAftN3odF7oG;8lDY_VAfsXyxIZah{O9|z-oJ`T`ubDSO~Fx|E$Q%`aSYx!}3Dc;)mdQvVz+IzlZRp z{Y=3!h0g)6V)FdPfN;7t+|m~q??VHhP||ZPuyIVvJGAS8Qx$v*aE^k5z`GS(46Noy z1#raGhwlJZ^W)+b!atZXW`D2+nEri+rojH8&AlRgvwZ+h0A~CoUJcCnCtLdSl<;JJ zs_B0cyown&eltcmyq^VL#k|k&$p|Ofzlt|QUd5Cf{d+@*qsG#y__vT(G5O6q4PM}c zyozffuVPB=v&oNs&ERb~D?A0i%J39SDc|b`FK|L$#jitN#gyW=bc7S~D&7Nm6~7C- zwIQ;8ejIp>GX69IKMr0vhvv9g)1FkY4|uJDv$H;*0cL!elf=U? zJ~DiX7XUMSiRYugVE&@pH2aIcqrS8L8Wv8wPvoEUzXF)~1@qnX|7Bq2r{qrnGyfzW ze7`6UDSsz0^GEW31ZMup_)JvN%l1`a%a1t<&-ILZZ27TJ;i>3)^VG2+ETWtD; z3Qzr8ZTe*jPyKs=!^(IU0_OK&goC{Zd_ciZ0UuTH2H*w-KM$H!uY|qF@Fdn(iuiU!AZ!n>Dd91Fe*;e1Wz~1H778rlq-zr{ zX^we67xKdC+Ku2)03I9>Y_con|| zd@1D3_Jx0c1|F*53opff2;f9h+o6pF&H?sXxB_?uuwh|bv^8%K(dp*DDt;33Dqat~ z75ZlWBm575nIFPAv`>JuzmMR*11ExS0|DAYp34N5^0B~7zr<~TnI4G~ftg;3y8tsi z5+?yarPSX(z$3tSfB?grU|}hL6R`Y#5cx$Gmi!7}=AXn50?Y3XQT{axOa4t@=BLE( z0B-@7<#W`+l0ON|{F7MAY2IGEz!6s;jssTPOFLlcSikvq;+uwbOV0*+`?mnRbj**tfp;nSPi~D8{x=0@_a?6cQdg3o)!7e zp)Z}R4`qKgtXsNvEC=?yf=Mh<@JaA04g-II@Xh%(YH{yjI3EqzfFA4rc;F=`t@r`o z1H2PB!Q!6-9tmvP(`G9`{{4m8bh`Pkia&w8ivJFLRPoPqIqd0E5&!8y@&|_LkMvK) zX^>Yj1-E_}k5Sy=KjfLDGKk*@%LQR#2y0LyQ4QGdOKrT%lk z%s+{@0?TiMQU321mi*Vi@|$7gW3Lcc@@;_mEis7`f#o;FD1U{8B|i$7cV{zqVzuf#`zS-ujV1a7Nf zZk#Drum?D`F(Mxe{PXDuZUcPznFvk5o)+hJTe!|5}Bo{#`cx`3g_{#WwvF3Qv8;Rqa2vgI6*69UmIJz@ZS~ z52FbZ>c3>ue?{S`|Fup3TZO0o4>tWH z3Qzq`Bbuk*0FF4EUk0p}M<0c!{sf!;jSA23C)@N36`uO{+w@l{JoO*7=|8FP)PKjO z|GvUg|6`l}=L%1K=g8*i_W?&-eYh2{n*KHlPyI`5`j;y_!yjSOAFc4zpJmgZtMJsH zXVYJ#@YH|FrvHkZ2G$tp89)i`hQk< z>L0V|pHz72hi&?{Q;yoBr<3^f})c?+=e^}wE-(hs~^mhi1xccx#z-sz?Dm?YCvFT4#c!qzI zO+R1ZslVK&zf$3;|By}pF@>l89-IE36`uMZ*!1@)JoWkEu6|7k_G+%HngITQy#%bL zKThGPKNwimzf|F=e}zqdq{36b!lpl4;i-R@O@F?^Q~$R%{og4(^|#yfcPc#fzq9Ed zR(R^y+w_ksJoTAds(p3Q)y;8FU^RdG0!LhZI2BmU-!(AI>0c6rXm1Tt>OW@Fe@fx0zuu<*EHKX#&v9s2Gt;#ffO+2Sdc=?T72t%9hWY*s@m^q_ z_v*9wkAU|>KH0*52j+RNl0OJ+faiRj`p1D&fnzP~8-x8f9Sp4)rY!mPz&yW=WZLP(RyH@PClK5p{?l<9iB-C#N=6RRfEcxVdcpnb?i)pF1*4)~I zz{yDO3X6A)M}D?3v<3@D0rULJ&K4d5%=0D-E&NYlu8+>OaOVkPy?CgFuL9=&JDFee zfHgnz+e-fuV4jC9%V!HP&%>7S+Xu|&x3WCF6OkUsOZ{qKo=3X#GLhbwfVuuW(hC1e z;MfiZ5b6zlJqVo9?;;Dkv=hMGA2SJem|r>9iS=f_Z$dm5*wsVId$f7L+&|Q4)z7WK z+~1O6={Ep#f2T}u>h)qj6u&P;|E>e(euqR$ejTt{zMdOU{@Wt_C}6H9%JggjR?9#3 z#^&W;46O3++4z1pAw1NNd@KAQFrTOL{UFBg8DKsyU2pOGfq5Pzzd=jBEi#Jd;l+Y) zt$DO%H;eaMK%4bx@GatesY6!&oeALi?mdzEWlY8Te^I1=r-%TQZd^-FuHMD9=epo!1LZ1{@;MPzPH4}9p<4wc?a0iUpc>d|M4$i zu7Aq_F3uDqIFGPwN2LQhGZuK>zk~qGMiRu&NGCZQ(*b* zHJEaK(`TwdBE+9tDDRHI4$_zuWt2^4|f-T={K;vOI%l! zNnKY-mM2-MTUV^dxVgWzMR&WpSzcT(Z!YWB3muJ6lujDow^iEP7PM@`=5Ndr2+ll$ zP+wlI+Qp(-ef8a9@pAQ5z&01x?W%(y{q61QcCmOZzka&7?qtI9!*Jf_S>5}}an!D? zy-v842^UUjd@tmW-@W?og+iG}{B==vg~^(xb$Q*IT1TlkrGNMF$7-4I=H<(3IiF0V z$2@{E5%zpUbF*O!p3A)FW2VePddx>qX(>JC&&mu-o==8$_LAj@WIA$o^A12-N)Pjd zGaC>>moje{Gk*;xJ^QX(Fdqca6GpJIuk$8j=TFAYM@%~(Yiy~Dv--+%S!kwL_-m?tQ|+5--*i3_ zhv8ElCY_ILVWyeRD0{+r>7p{7e5R8pdx<4v`CP3?SFek7XZE%~zrMn~I1m&UN1gh`>y=q^^14QcW*xc z(lklhRGq2O0;|@xuR(ywJn}9py{)P?OLEh=s;I5&edg1G<4+R5SaY)JreNt;AzH#I22r7Kj}NVez9L zhnogm5rnZy4~)G)H2BW=EUCQ7dK+Md3%uTVxJ%^eqq{`7#7DjVvi`Pu;5z?Cf9nk* z-W<4QW~T4@0;(~k32ak=7nR-|CgIGxJ2c#X>NeRD(gU(0(2f=rdE+F6fK>`%N8cK*Znn;NkZ+k5 zKF={MM5Yv%#93#G7cj`%`np@T=QaO}-KNb~K;AAk7i$e#M4eWN zPm0XdW!kM9kNVJOe=p!ySBo}HlB!5@v=olN9`zI^qH94q+}+EpGM{u^-nkOhq)r0N zU{V+`K5Yv18 ztroOly02I{H}{Lx_HA7TjRTjB!P1qQ7Q<0exNuWfEhR5EZ|Xa<-cMwIaeHyEb_Rpu;Cf!spC+8y9Jk&pBjPX6vh;K$!e;Ncliw@((Y_h|s{!X?OMu=Lf zv*S`3S?P2)<;L7SW_K7B-)Y$M&v|{torXGp_vCWTp3EnXc>~z~4H~52sUMVUD20ikz>qA@h;h9n-9BIu` zVc9wrdC{Fl>PFt+ZC3fjn%dPORl36Wd7U7kZHMe_%LT(ApGP{KY`^XFC?9Kkvg4}n zs4lWt1QkJjhcCMN=HB0mf)rJ;Up?N9KliPAOUgkj8dS0*Z98id!|f@_2H~s-7!0Ao zP#H}Z;RJNQMuIV;Y6nbce8#QDjVa z(5j{>>he@!X{_;h^%z}VFxTTFyGl@L52ZjZz4Lp76I|a$r`Hiqa2=>I*(2~)gH)Tl zjxx|7*UZ^Hg66aKvrf+{oZ#BsI^83jAaZ&3tilPdb=c`K!U?Y3GSfZ639cQy(>=lo zVv(M^j-VkT*_7P(d*{MZ(T0U1Z20O9YWf-|l8xrL$4cG|lis#j5G%`Wbc`xTqv3`i z7yns;XT*}TJjX71>4|Omesz0Q-v>+GyZYPZs@5nMF*jj1ZacK`wB+_t20J2%gN_DU z;#IXXvF&s77%3a$F{%NS-cvdKduOpz(3V79cy zmw-(=DcB5~xI(RjYtzT{hJ?)?Mb31GCp1;c;5H5pM;%f12d=(+vvr@Hvr-yUua_~?_2mK&wSK!|}3uYY3RiC@MZ91%$xN{O;Va+XYzPp7)n{Y)9uj7eNchghDgv6ml zyO3_*xci4UE0Dg7x)#u-snQzPku6MFW+wG{mgb4+YY3kpP40o48~nH7JwTrT)-n@PF;!Ut)FJHa=^z%ozT*6f@?(^mHr`P`x z?qWca+$X*GZEC!D!Dpj1Hz=!7pA7OUm=H}c42p_!_`H<|Jhr$ggun$EH&M*)@p9oQYgVhvXaMPP9pe^Bv(je7Ltbx*)2=C{UIxct(-a`I^)YJ=4yV)et7%#Ck_TbEa0(fwPooW z4hGBCRzsT&P8IF9RBMJhSm<4Lo$VTi&s|frN$?lL+@b8|f)~kpS zY>7LZmIFhK%$}rjp|y2(di)@$RK9Rcnmvx9{;pAXdNkGkHih7p__Jq$RO@DSdyj`G z%N@4A+*)E2iYj`BIdKz7TH9$rm9-L9wIo_=sb3Phb$3^P_ME#*^ArY(lO9iSR|ow| zMT0I~XQayqO>ZCW?%QSOuj=d17{~}^FYx@@Hgi?#(%{I}qZ%!Day;p*e#$_CQD>AD zbH)q2=8?i243mVp^+jUa+_wo9)OPJX-*G7%X|5C7l=Xzi9ci9!F^ALRH*${F;ZBy& ziK2^cSmocpLHx%0V&50m_L$V0yi4!{ly%YA%43M`op+ctV*rOD%=-E{*=xM0PPSZg z$LXeudofs6DR6xOo9?XV9PVE`!UH6R=N>t8l?tO}!)1h4q>0H$CFrs?k(?5jG)V~p z5^Y$(#Ya9e(Ng8x+5$2OIS_*qu2{a&iGvJQHF+m~SYsZ*E@U|3rtl6divcWv;o=p} zG>BOJCIHw{ft53afZiP$dIY>mvGu(&li&t-4$n+}!&9;w!T>nEZP(q8f)>PP!Php_>r* zSapHuo=|}om2AZ;@$@0|MdfXY^Xr)8$(A~nTws8& z@5KkhO=mQ2O+rwF8>5^+xY6?~?-luW@PhB*y+^P^(Jt)BcsFV4G^@&lfNEnin~_ZA zeS+D5^e22KX|{3QpKdx5>U7h9{A-q;-(6m`J|{=Vf3=l&xA&YrUo9{F^|G%o zE|<50o@JTl))R4EWeMUjB%7@*Rg=RDU7_Bt)y=KpT^QaIShja?^7tAqa8>R53^GwQ zeQm;;9$e1>20GyU*5Kho9C&rx`P+?kH%aS@qBf@C{%HCp3_Yrn(?cuk+OY^kmO0ru z+{bY|&F-K)Y)8=oOYu?71reObxU*(=Q2r7;U!_vX<6F-W5()BVjmK?Pr?w?j-C7bA z+M@M|t3^f=u1b)Wdh7=mH!emN=Tst$!2*2qcmn#RD$L^UJ~AC8Rz(+OCCW*H*$##Z z25&lH5wLNS@QI>ObS`hRvX@H>k#k*FT4RK&xT zRiO!XesKA4bL5~bFDzI`!e4l#xxy8BF>b$p6XQ`8o5wAn4T%9qfUVVllyK)gaR}OX z5e=T<{&R8N6NmXujGsU1TM@mt*Y)MHU0oBz_|V=^kso5poS?#{sZF@CNAW!Jn8{wEhHc95$qs8qJ>7J) zjZHRP8^tG^t~KY$rV_Km;?{&cwTFS2;|*-oYbM7D8f~yK1t;fYE(RMP*vr%`f|8Ht zY;K2;NjDPI>~2cyW30pMZpzJqa2U+o3TY$u=m=fWbTBXJ+sK2JK}+xpT9~q|F=pck ztWmCc2&i|J&k^sow`hlL*<%aDO;R{4e455M3>&~J104+^47(E$b!1pJAi^36jW8LX zWqC)8TG^0dXLBOcO41vu+E}a@Yu$IU<;JaQ3h3HNItg{{>zr&F1Cd58W3t0qbDVCf zdl#}@)~sZ*o8pDI+Q?E-K>&?Je4XqYGA+hz)7jk=P1b?I)8i;z1bffgA2{7jS2ZdV zv!|z9GU^?3yTzOGAR}jYQvxS5mID~mJLJ7?Qm}s>)Ni!!NYvCAxw*jgx@;aUF7Gd{ z?-n)Jkqm<&=A@?W+GsBfX8AC#44WgY=k)~DX@62r#jR6%#$(t0dD?74VChL?1{649 zObHp)NKVK}b*#|>Gk1@JdV9*OL)5C`jS@^T`&@&%e9D-4&Id488cW!PU?9w77{RjBAo`^;FQ@0CGC`+Ar|eVo+o2paJZZ_=E8I-}3dY+6!Av)=lF+*JMNj;S`PwE+D{nPnSjP*ZZObHu3k;+0w!3lgw0#8pH zQ-VWJ>=}#&r|i(lnua-9)4*7K>N>Hyp14Ek+o$$C8E-{f*FcDq6fzV2T{7>8hciVX z^~ZJ>dsSatpDlw`{A^u?;|oUOJN-;FiNF3;->NxB->J()-bob?s)StMi!FWoi(6lJ z<2Rv$IEa@aM(^SJ3ubUe*6-9=H+<;))<@t-IW945$8Z~o4tbp0`zY#8lV5goJKCBI zoVs()rgc$T3W5y=^Pyr{O0BZoXb$k+s$~~CeJ<_s)_BeS z5%7s_2evw$*K~Qpu1Txb6WT|J3sDEy?lvd6cEwq21L7aNf4I5y%l^V&c7|Wq7kB4k z0dz@{_O9u3n^8q(RVk(&e5OTF4!buGoYG&ArRVjR6NyZrmD&_GgzR*;CiDkDJ z+zs@9y^7U;?#?f+mKS%+2MoiK)g}9C+@oTenN$Y?V2|Iv?Hj@g^FHnUkg1hXLId)k zXhlg7S6)@PHvm*dG#=_iEzW&?LqP%|bN@n^%wzOc-m_SIzFal+>`?;c2JP^(}u&TJ8CzdwMdIn*-McUcEaXI;nIC7H> z-d2Qa3?_xK-_|$kUZh$IVQ#L+uhn&wLa<2}SExk1E*}uyEg@<;Bn1vJBIv5RCPcIi zTM{tDF0a)%D}0lITeps-(0O6KhQ*g~vs&vh(`#-q=xk$|rX&r3b_T zONc<-6a^Js1!IMdBo-`$g(dGky?pcItL2}+c=PG?hvg41KK$_dy(}L`oJ9V%RgvX= z6-imD+Z6JW7X*P~CgOBq;b`B+1aW6B=y(wHpbs8KjwX$J# zqO);AZDhO!tZLIFG`3L-OcB zA@^wBt~C^hHC5M}9HN)8QBoAyB4;QgqHZ7{|Q0CoX@h0uIw{Iy}-8q4ZgYbc*}9-Dijd_tXWaxRWP2ilDPT zs8HKY(|f6sc#hKyZLq4llmK(;Tk10QwuvMZq5E^N(? zysh5XUt+z0k3+HI^7HNL%W`!sQOPCcgm83bE}?LMlR`%$BOGP+J{S&> z>ySZF{@I(iFSk=D7&S9lnx>wx{1WX|qIp@*F))V{F=TgA%0LiF+7i;x*AnR;>Iq~- z7*+%U=2BR|rbNfBQw4(Xt+;(J$3hvblDf)SEqR{ca7t1tz6}dbQB#Z!V3%mf^<}xb3vZ15$$t~g z^P>uZkjzGvZe*1Q8C;R3HRP>DekXI%Y!)`<$W-LSIrxi}sosA2`0mrk<*OI(K7M-t zdim*t)(RoG-gG`^W6%LjCm9t1sN*;bQy4azB&4b!kSd<%8fLZ)^HCm6Pf&19xqTu- z%QA23xOIm?KXvDrbx}&#G1$@=6E60LF+Cyt-w;aMQ2-ouag%JbyKmR6DPG)afsc`3 zL*mQb6uSM>%&^>6MCS^&+RoI^c466zjM7@-+L6dGhz+NnPG6>fu zp6wA9JXS$^Y=l6zjmu}5d3Y5Hy)pj zGSS<6*IxSi`r*dCdh`0l&!5D8B=t8-%5aj;PTo$H96wWmvma4x5e-=q-i^_KYwCE= z3{#UyLJezFcbCEzgHBC}D!nNyim14kN{UZN$bWRZRv?el%**@w7r(^fBQt3U+ilVg zf!`!aG~oPZGl>cB9d=U_w)tjHFseQw2GgEcH1s0;U^=?K`_1dg_7xpq*dw=pG3TO{yF_MZ-NY#;ky zFKMuRg_H_@C4NSNIv)gXC>hM90VrK0voA)+;_ZMr;SFH&Here~eh zMoHdVe{+kW{|1RDkJ)+8#|_~oPmpR1nxLy%hrM#HaLepbxx8cKG-V*}hIIN41>oGb zzkr}r9pniDMa6A4lc?D^_@o9}9XTD9tkXHgQ8tq-Tva^GDnrw7*a1Ukk4T_n_lmUh z*h^O5mcQ1Q4{}rFQ9(EiJBPWT?Y&r)bsE?cohOf&BzLT*jFW)>Eu@J|psGZ^uyGg5 zf+$4G*`v!AWU^7qOo)tWMDuX=;fJ@M-u&rs6=O)x#3{1f^*r?oCEkv=usyKmO(u`* z>~sKmIG57_#H+>W0HVUQ2f!xB-7tT_*hbGNyPBqs{8Y}T?5mzfYizI=Xm@SEO4R!G zQT(Z+@yiuS$s;0M+Zu2n-?6Ih?Ym+7>bRg8tWKnIq0VpGxJT2D36`>@ScI5sgRujz zAk_eE(^F4*;90`M#HEYJIsS z>$E!|lAb*NCc|mfmpmITT#g3+g3kaj^EG^pxa= z>!kn4W0KErcp4yH0kRCSFNTeJx^%UUTV!Kv3^|yW>bT)ghr<@&EKcwjm10=fIJhkb z!_%SzE_OZZoNNVK&3U*`qXnHdv0P2)PmB)O9l>IEp^6qIe|+z$xw*!_VHro_5B575 zcGiGq)w9#^8g!X9Dp#XssA~w`^nGp;(HWb zN<6A(COX<)r*`-4TBi{7aaC91L;Lu;`7V5YRp0(11`GIPsTD}uU zqjOlJ`;oEjQ?obc{oJxfGq(p-ZEv-=4V_C>%i*Dg!m1m%YQysh$Vn}6yU#s|>Of&R z8R{t8QY8?B$buX};wkibT?@XHjvwxE;HVB5_q#J0mjA}sp5GR~@bQf}p&C=bR8Cju zhW#J`y2R;Kg7PFC;+;A&;yhD{iJH{j>cKNX95cnu1QE^a&zVJ3qMifdnAvFNLIxx6 zKAM{e;@ItY9tfU5peR!e5weaL=owF17V-tHDsq@N}^yp?=~1AHQJUuCF@8 zJJD4Q@fTGzl_7Sc!?^sYe&Zjz^xA)MT1Zd>%Tjq{IZqhEpDytX6Fv_y3+w|}`LE|S zq2C%0h)_*!N?m=-3RtynWPt=O;tdty;3}%di^6+&w$AxR-mX}1V-x5;GgAwC9y}9klGkD}1CfK(o;7A^$ z*GM^?jhpcP0wwUMKh}d%0?*!KxmDVjHvL9Mb~=Da04Q>nI~>KOW6QVZY%HcL)HnJ7q@jcVURi;VDJ<28r)=Xde8BC1~V(L@Sq6 z-^{?+lz4bNh%q!}62f?0*aLyn-8Rh}cFVlkmtb_UnZMM!9Is>UOP(u5`5ks$_h@p0 z16$p<#3xK}zjbPJf*m1Tt|8rnU`4cv7+4~BEtmKW6Z&?YKMJjr*aSOjsq&c-!!?NC z$(4|pOFAg$rn94{d z*25swnxMi46eH_|=S$)s_zf~EIWg3BnF%4DCy%>5 z6+%?2_CXMSwE0|H-)O{{3r&>h>{=8HAp9-*a*+9!P%g%tadh-xk%_w@Ilb8lE%;Fg!27T%oAO>aTAc)D`98|J{yEzGA zn8QH`(+D4pItP#~3*lH&y7Ulo?Kr=A0$7e0t45h>NiK_A=II`X%Cw{d;6CpwBDLxe zvc1KvB_Gj2080Yp<&wZt{CY!qPf0yZ)Od|-vdLZ_8AS%KA@%7DUFPYHvo@QyWH zU&-YnaV3VY#L$5$j;^5nsTrN4d3c6y=FTollg$9C*nyKn%>}86XC>x(~## zT@v0%{_?J|NLfsD7ZI~6(fxSPpzMOj3dh);lSRg$V;$txlR{_MoYNr;dviL3;fzm* zFxZPvhhUz+m1c4l(^6}=^6gQwz%v)6mS*9tZg86MQT0D|U)AQhpDXWr zx3I+Un4vrs1>f@QnAz+quJjnY!d7u>VvS{Wwr*4ywspZn^ok;-ge>t~N396?5Q9Z> zK<`_!1bAY7npC4JuH@Q=Er|>d9w~zc?5Gu{%w@8uoE_}sr-K+mr_D1!3~Jx$ASg;7 zILR|W3`F=05Q86W9|*A5xJPA4QgTm=kbf%Tqo{a*aYOoS)n;TJzCN4%?{~D6pMNMl z{_*emIXlb#r+f(i{v`hXNBov{|D2!f|Nj0g`#)!A|LI@zA^scM{Zl?myT8ZJU!VQq z?63dk?CgL1i`a-?L%V;)dujLg`N_Wf!&&wxzdQSvydVAz?S9V}OiA0lqum?YB}1e5 zH~IK);(LMjSFzoHlRw0N0z>}&TYhBR0fxZ)ukwfZPyQx989%_fiC>@nFWUWK_`q*z zBmchVN7g$0`y1N*l|MWCCw%e${y|vpKjZz+{K(vfe>eZ-cW3{3_`vT0-hbfzX1o7Q MJNMt$4TpCBA0fE(TmS$7 diff --git a/program/src/main.rs b/program/src/main.rs index bf6e8bb..fc35d4a 100644 --- a/program/src/main.rs +++ b/program/src/main.rs @@ -8,12 +8,8 @@ #![no_main] sp1_zkvm::entrypoint!(main); -use alloy_sol_types::{sol, SolType}; - -/// The public values encoded as a tuple that can be easily deserialized inside Solidity. -type PublicValuesTuple = sol! { - tuple(uint32, uint32, uint32) -}; +use alloy_sol_types::SolType; +use fibonacci_lib::{fibonacci, PublicValuesStruct}; pub fn main() { // Read an input to the program. @@ -22,24 +18,13 @@ pub fn main() { // from the prover. let n = sp1_zkvm::io::read::(); - if n > 186 { - panic!( - "This fibonacci program doesn't support n > 186, as it would overflow a 32-bit integer." - ); - } - - // Compute the n'th fibonacci number, using normal Rust code. - let mut a = 0u32; - let mut b = 1u32; - for _ in 0..n { - let c = a + b; - a = b; - b = c; - } + // Compute the n'th fibonacci number using a function from the workspace lib crate. + let (a, b) = fibonacci(n); - // Encocde the public values of the program. - let bytes = PublicValuesTuple::abi_encode(&(n, a, b)); + // Encode the public values of the program. + let bytes = PublicValuesStruct::abi_encode(&PublicValuesStruct { n, a, b }); - // Commit to the public values of the program. + // Commit to the public values of the program. The final proof will have a commitment to all the + // bytes that were committed to. sp1_zkvm::io::commit_slice(&bytes); } diff --git a/script/Cargo.toml b/script/Cargo.toml index 5967c88..dcc126b 100644 --- a/script/Cargo.toml +++ b/script/Cargo.toml @@ -1,4 +1,3 @@ -[workspace] [package] version = "0.1.0" name = "fibonacci-script" @@ -23,8 +22,9 @@ serde_json = { version = "1.0", default-features = false, features = ["alloc"] } serde = { version = "1.0", default-features = false, features = ["derive"] } clap = { version = "4.0", features = ["derive", "env"] } tracing = "0.1.40" -alloy-sol-types = "0.7.2" hex = "0.4.3" +alloy-sol-types = { workspace = true } +fibonacci-lib = { path = "../lib" } [build-dependencies] sp1-helper = "1.1.0" diff --git a/script/build.rs b/script/build.rs index 32b9927..bc5f025 100644 --- a/script/build.rs +++ b/script/build.rs @@ -1,5 +1,5 @@ -use sp1_helper::build_program; +use sp1_helper::build_program_with_args; fn main() { - build_program("../program") + build_program_with_args("../program", Default::default()) } diff --git a/script/src/bin/evm.rs b/script/src/bin/evm.rs index 2410dbb..7299052 100644 --- a/script/src/bin/evm.rs +++ b/script/src/bin/evm.rs @@ -6,14 +6,15 @@ //! RUST_LOG=info cargo run --release --bin evm //! ``` -use alloy_sol_types::{sol, SolType}; +use alloy_sol_types::SolType; use clap::Parser; +use fibonacci_lib::PublicValuesStruct; use serde::{Deserialize, Serialize}; use sp1_sdk::{HashableKey, ProverClient, SP1ProofWithPublicValues, SP1Stdin, SP1VerifyingKey}; use std::path::PathBuf; /// The ELF (executable and linkable format) file for the Succinct RISC-V zkVM. -pub const FIBONACCI_ELF: &[u8] = include_bytes!("../../../program/elf/riscv32im-succinct-zkvm-elf"); +pub const FIBONACCI_ELF: &[u8] = include_bytes!("../../../elf/riscv32im-succinct-zkvm-elf"); /// The arguments for the EVM command. #[derive(Parser, Debug)] @@ -23,11 +24,6 @@ struct EVMArgs { n: u32, } -/// The public values encoded as a tuple that can be easily deserialized inside Solidity. -type PublicValuesTuple = sol! { - tuple(uint32, uint32, uint32) -}; - /// A fixture that can be used to test the verification of SP1 zkVM proofs inside Solidity. #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -73,7 +69,7 @@ fn main() { fn create_plonk_fixture(proof: &SP1ProofWithPublicValues, vk: &SP1VerifyingKey) { // Deserialize the public values. let bytes = proof.public_values.as_slice(); - let (n, a, b) = PublicValuesTuple::abi_decode(bytes, false).unwrap(); + let PublicValuesStruct { n, a, b } = PublicValuesStruct::abi_decode(bytes, false).unwrap(); // Create the testing fixture so we can test things end-to-end. let fixture = SP1FibonacciProofFixture { @@ -91,7 +87,7 @@ fn create_plonk_fixture(proof: &SP1ProofWithPublicValues, vk: &SP1VerifyingKey) // Note that the verification key stays the same regardless of the input. println!("Verification Key: {}", fixture.vkey); - // The public values are the values whicha are publically commited to by the zkVM. + // The public values are the values which are publically commited to by the zkVM. // // If you need to expose the inputs or outputs of your program, you should commit them in // the public values. diff --git a/script/src/bin/main.rs b/script/src/bin/main.rs index a373bcb..33089b1 100644 --- a/script/src/bin/main.rs +++ b/script/src/bin/main.rs @@ -10,11 +10,13 @@ //! RUST_LOG=info cargo run --release -- --prove //! ``` +use alloy_sol_types::SolType; use clap::Parser; +use fibonacci_lib::PublicValuesStruct; use sp1_sdk::{ProverClient, SP1Stdin}; /// The ELF (executable and linkable format) file for the Succinct RISC-V zkVM. -pub const FIBONACCI_ELF: &[u8] = include_bytes!("../../../program/elf/riscv32im-succinct-zkvm-elf"); +pub const FIBONACCI_ELF: &[u8] = include_bytes!("../../../elf/riscv32im-succinct-zkvm-elf"); /// The arguments for the command. #[derive(Parser, Debug)] @@ -53,9 +55,21 @@ fn main() { if args.execute { // Execute the program - let (_, report) = client.execute(FIBONACCI_ELF, stdin).run().unwrap(); + let (output, report) = client.execute(FIBONACCI_ELF, stdin).run().unwrap(); println!("Program executed successfully."); + // Read the output. + let decoded = PublicValuesStruct::abi_decode(output.as_slice(), true).unwrap(); + let PublicValuesStruct { n, a, b } = decoded; + println!("n: {}", n); + println!("a: {}", a); + println!("b: {}", b); + + let (expected_a, expected_b) = fibonacci_lib::fibonacci(n); + assert_eq!(a, expected_a); + assert_eq!(b, expected_b); + println!("Values are correct!"); + // Record the number of cycles executed. println!("Number of cycles: {}", report.total_instruction_count()); } else { diff --git a/script/src/bin/vkey.rs b/script/src/bin/vkey.rs index 59db536..0993301 100644 --- a/script/src/bin/vkey.rs +++ b/script/src/bin/vkey.rs @@ -2,7 +2,7 @@ //! //! You can run this script using the following command: //! ```shell -//! RUST_LOG=info cargo run --package fibonacci-script --bin vkey --release +//! RUST_LOG=info cargo run --bin vkey --release //! ``` use sp1_sdk::{HashableKey, ProverClient}; @@ -10,7 +10,7 @@ use sp1_sdk::{HashableKey, ProverClient}; /// The ELF (executable and linkable format) file for the Succinct RISC-V zkVM. /// /// This file is generated by running `cargo prove build` inside the `program` directory. -pub const FIBONACCI_ELF: &[u8] = include_bytes!("../../../program/elf/riscv32im-succinct-zkvm-elf"); +pub const FIBONACCI_ELF: &[u8] = include_bytes!("../../../elf/riscv32im-succinct-zkvm-elf"); fn main() { // Setup the logger. From d59ae0a719e685d22b69caefc0054b19f981e3d7 Mon Sep 17 00:00:00 2001 From: Chris Tian Date: Mon, 5 Aug 2024 21:00:29 -0700 Subject: [PATCH 2/4] fix typos --- script/src/bin/evm.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/src/bin/evm.rs b/script/src/bin/evm.rs index 7299052..7a8977e 100644 --- a/script/src/bin/evm.rs +++ b/script/src/bin/evm.rs @@ -87,7 +87,7 @@ fn create_plonk_fixture(proof: &SP1ProofWithPublicValues, vk: &SP1VerifyingKey) // Note that the verification key stays the same regardless of the input. println!("Verification Key: {}", fixture.vkey); - // The public values are the values which are publically commited to by the zkVM. + // The public values are the values which are publicly committed to by the zkVM. // // If you need to expose the inputs or outputs of your program, you should commit them in // the public values. From e23897b86bf642ae309a5ce909d5c706445383e2 Mon Sep 17 00:00:00 2001 From: Chris Tian Date: Mon, 5 Aug 2024 21:01:59 -0700 Subject: [PATCH 3/4] github build ci --- .github/workflows/prove.yml | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/prove.yml diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml new file mode 100644 index 0000000..c0811b6 --- /dev/null +++ b/.github/workflows/prove.yml @@ -0,0 +1,39 @@ +name: Build Program + +on: + workflow_dispatch: + push: + branches: [main] + pull_request: + +env: + FOUNDRY_PROFILE: ci + +jobs: + check: + strategy: + fail-fast: true + + name: Build + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: 1.79.0 + + - name: Install SP1 toolchain + run: | + curl -L https://sp1.succinct.xyz | bash + ~/.config/.sp1/bin/sp1up + ~/.config/.sp1/bin/cargo-prove prove --version + + - name: Build SP1 program + run: | + cd program + ~/.config/.sp1/bin/cargo-prove prove build From de4ec8e718aee53206263642d50622a086d1f370 Mon Sep 17 00:00:00 2001 From: Chris Tian Date: Mon, 5 Aug 2024 21:09:16 -0700 Subject: [PATCH 4/4] fix --- .github/workflows/prove.yml | 6 +++--- contracts/src/Fibonacci.sol | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/prove.yml b/.github/workflows/prove.yml index c0811b6..a6aa804 100644 --- a/.github/workflows/prove.yml +++ b/.github/workflows/prove.yml @@ -30,10 +30,10 @@ jobs: - name: Install SP1 toolchain run: | curl -L https://sp1.succinct.xyz | bash - ~/.config/.sp1/bin/sp1up - ~/.config/.sp1/bin/cargo-prove prove --version + ~/.sp1/bin/sp1up + ~/.sp1/bin/cargo-prove prove --version - name: Build SP1 program run: | cd program - ~/.config/.sp1/bin/cargo-prove prove build + ~/.sp1/bin/cargo-prove prove build diff --git a/contracts/src/Fibonacci.sol b/contracts/src/Fibonacci.sol index 2627674..f66a01f 100644 --- a/contracts/src/Fibonacci.sol +++ b/contracts/src/Fibonacci.sol @@ -3,6 +3,12 @@ pragma solidity ^0.8.20; import {ISP1Verifier} from "@sp1-contracts/ISP1Verifier.sol"; +struct PublicValuesStruct { + uint32 n; + uint32 a; + uint32 b; +} + /// @title Fibonacci. /// @author Succinct Labs /// @notice This contract implements a simple example of verifying the proof of a computing a @@ -32,7 +38,7 @@ contract Fibonacci { returns (uint32, uint32, uint32) { ISP1Verifier(verifier).verifyProof(fibonacciProgramVKey, _publicValues, _proofBytes); - (uint32 n, uint32 a, uint32 b) = abi.decode(_publicValues, (uint32, uint32, uint32)); - return (n, a, b); + PublicValuesStruct memory publicValues = abi.decode(_publicValues, (PublicValuesStruct)); + return (publicValues.n, publicValues.a, publicValues.b); } }