From 3fa375b1ace7b2114838b0732387167186e127fd Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Tue, 26 Sep 2023 07:43:23 +0900 Subject: [PATCH] Integrate vrm in halo2-regex/tests in email-wallet --- .gitignore | 4 + Cargo.lock | 1464 +++++++ Cargo.toml | 9 + babel.config.js | 11 + circuits/regex_helpers.circom | 48 - compiler/cli.js | 27 - compiler/gen.js | 258 -- compiler/tpl.circom | 83 - package.json | 42 +- packages/apis/.gitignore | 5 + packages/apis/Cargo.toml | 24 + packages/apis/README.md | 119 + packages/apis/package.json | 18 + packages/apis/src/extract_substrs.rs | 216 + packages/apis/src/lib.rs | 12 + packages/apis/src/padding.rs | 19 + .../circom/circuits/common/email_addr.json | 10 + .../circuits/common/email_addr_regex.circom | 276 ++ .../circom/circuits/common/email_domain.json | 20 + .../circuits/common/email_domain_regex.circom | 273 ++ .../circom/circuits/common/from_addr.json | 25 + .../circuits/common/from_addr_regex.circom | 759 ++++ .../circom/circuits/common/subject_all.json | 20 + .../circuits/common/subject_all_regex.circom | 338 ++ .../circom/circuits/common/timestamp.circom | 891 ++++ .../circom/circuits/common/timestamp.json | 25 + .../circuits/common/timestamp_regex.circom | 865 ++++ packages/circom/circuits/regex_helpers.circom | 48 + packages/circom/package.json | 35 + .../circom/tests/circuits/simple_regex.circom | 180 + .../tests/circuits/simple_regex_substrs.json | 26 + .../circuits/test_email_addr_regex.circom | 3 + .../circuits/test_email_domain_regex.circom | 3 + .../circuits/test_from_addr_regex.circom | 3 + .../tests/circuits/test_simple_regex.circom | 3 + .../circuits/test_subject_all_regex.circom | 3 + .../circuits/test_timestamp_regex.circom | 3 + packages/circom/tests/email_addr.test.ts | 49 + packages/circom/tests/email_domain.test.ts | 35 + packages/circom/tests/from_addr.test.ts | 90 + packages/circom/tests/simple_regex.test.ts | 84 + packages/circom/tests/subject_all.test.ts | 54 + packages/circom/tests/timestamp.test.ts | 32 + packages/compiler/Cargo.toml | 38 + packages/compiler/README.md | 119 + packages/compiler/package.json | 18 + packages/compiler/src/bin/compiler.rs | 125 + packages/compiler/src/circom.rs | 83 + packages/compiler/src/gen_circom.js | 233 + packages/compiler/src/halo2.rs | 104 + packages/compiler/src/js_caller.rs | 55 + packages/compiler/src/lib.rs | 470 ++ packages/compiler/src/node.rs | 35 + .../compiler/src/regex.js | 156 +- .../test_regex_compiler_group_0.circom | 10 - .../test_regex_compiler_group_1.circom | 10 - .../test_regex_compiler_group_2.circom | 10 - .../test_regex_compiler_group_3.circom | 10 - test/header.fixture.txt | 7 - test/regex-compiler.test.js | 214 - test/regex-compiler.test.ts | 218 - yarn.lock | 3883 ++++++++++++++--- 62 files changed, 10667 insertions(+), 1643 deletions(-) create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 babel.config.js delete mode 100644 circuits/regex_helpers.circom delete mode 100644 compiler/cli.js delete mode 100644 compiler/gen.js delete mode 100644 compiler/tpl.circom create mode 100644 packages/apis/.gitignore create mode 100644 packages/apis/Cargo.toml create mode 100644 packages/apis/README.md create mode 100644 packages/apis/package.json create mode 100644 packages/apis/src/extract_substrs.rs create mode 100644 packages/apis/src/lib.rs create mode 100644 packages/apis/src/padding.rs create mode 100644 packages/circom/circuits/common/email_addr.json create mode 100644 packages/circom/circuits/common/email_addr_regex.circom create mode 100644 packages/circom/circuits/common/email_domain.json create mode 100644 packages/circom/circuits/common/email_domain_regex.circom create mode 100644 packages/circom/circuits/common/from_addr.json create mode 100644 packages/circom/circuits/common/from_addr_regex.circom create mode 100644 packages/circom/circuits/common/subject_all.json create mode 100644 packages/circom/circuits/common/subject_all_regex.circom create mode 100644 packages/circom/circuits/common/timestamp.circom create mode 100644 packages/circom/circuits/common/timestamp.json create mode 100644 packages/circom/circuits/common/timestamp_regex.circom create mode 100644 packages/circom/circuits/regex_helpers.circom create mode 100644 packages/circom/package.json create mode 100644 packages/circom/tests/circuits/simple_regex.circom create mode 100644 packages/circom/tests/circuits/simple_regex_substrs.json create mode 100644 packages/circom/tests/circuits/test_email_addr_regex.circom create mode 100644 packages/circom/tests/circuits/test_email_domain_regex.circom create mode 100644 packages/circom/tests/circuits/test_from_addr_regex.circom create mode 100644 packages/circom/tests/circuits/test_simple_regex.circom create mode 100644 packages/circom/tests/circuits/test_subject_all_regex.circom create mode 100644 packages/circom/tests/circuits/test_timestamp_regex.circom create mode 100644 packages/circom/tests/email_addr.test.ts create mode 100644 packages/circom/tests/email_domain.test.ts create mode 100644 packages/circom/tests/from_addr.test.ts create mode 100644 packages/circom/tests/simple_regex.test.ts create mode 100644 packages/circom/tests/subject_all.test.ts create mode 100644 packages/circom/tests/timestamp.test.ts create mode 100644 packages/compiler/Cargo.toml create mode 100644 packages/compiler/README.md create mode 100644 packages/compiler/package.json create mode 100644 packages/compiler/src/bin/compiler.rs create mode 100644 packages/compiler/src/circom.rs create mode 100644 packages/compiler/src/gen_circom.js create mode 100644 packages/compiler/src/halo2.rs create mode 100644 packages/compiler/src/js_caller.rs create mode 100644 packages/compiler/src/lib.rs create mode 100644 packages/compiler/src/node.rs rename compiler/lexical.js => packages/compiler/src/regex.js (78%) delete mode 100644 test/circuits/test_regex_compiler_group_0.circom delete mode 100644 test/circuits/test_regex_compiler_group_1.circom delete mode 100644 test/circuits/test_regex_compiler_group_2.circom delete mode 100644 test/circuits/test_regex_compiler_group_3.circom delete mode 100644 test/header.fixture.txt delete mode 100644 test/regex-compiler.test.js delete mode 100644 test/regex-compiler.test.ts diff --git a/.gitignore b/.gitignore index 38ada5e..f394b4f 100644 --- a/.gitignore +++ b/.gitignore @@ -106,3 +106,7 @@ dist .vscode build/* !build/.placeholder + +target + +index.node \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..8bbb611 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1464 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +dependencies = [ + "memchr", +] + +[[package]] +name = "anstream" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "342258dd14006105c2b75ab1bd7543a03bdf0cfc94383303ac212a04939dff6f" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-wincon", + "concolor-override", + "concolor-query", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ea9e81bd02e310c216d080f6223c179012256e5151c41db88d12c88a1684d2" + +[[package]] +name = "anstyle-parse" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7d1bb534e9efed14f3e5f44e7dd1a4f709384023a4165199a4241e18dff0116" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-wincon" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3127af6145b149f3287bb9a0d10ad9c5692dba8c53ad48285e5bec4063834fa" +dependencies = [ + "anstyle", + "windows-sys 0.45.0", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clap" +version = "4.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046ae530c528f252094e4a77886ee1374437744b2bff1497aa898bbddbbb29b3" +dependencies = [ + "clap_builder", + "clap_derive", + "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "223163f58c9a40c3b0a43e1c4b50a9ce09f007ea2cb1ec258a687945b4b7929f" +dependencies = [ + "anstream", + "anstyle", + "bitflags 1.3.2", + "clap_lex", + "strsim 0.10.0", +] + +[[package]] +name = "clap_derive" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "clap_lex" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "concolor-override" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a4925288e39d5923e024781971aab940995fa31bab3ffceebbadfc87591e90" +dependencies = [ + "colorchoice", +] + +[[package]] +name = "concolor-query" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d11d52c3d7ca2e6d0040212be9e4dbbcd78b6447f535b6b561f449427944cf" +dependencies = [ + "windows-sys 0.45.0", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.9.3", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "data-encoding" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" + +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "serde", + "uuid", +] + +[[package]] +name = "deno_core" +version = "0.178.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d58bd9e43979857fd26f4696f8e9f39fb645539ef3e604264521b408daf1d92b" +dependencies = [ + "anyhow", + "bytes", + "deno_ops", + "futures", + "indexmap 1.9.3", + "libc", + "log", + "once_cell", + "parking_lot", + "pin-project", + "serde", + "serde_json", + "serde_v8", + "smallvec", + "sourcemap", + "url", + "v8", +] + +[[package]] +name = "deno_ops" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f494a90671467e3de74b557b3c1fe805aad87c7239580d2be8f2dddde971824" +dependencies = [ + "once_cell", + "pmutil", + "proc-macro-crate", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", +] + +[[package]] +name = "derive_builder" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2658621297f2cf68762a6f7dc0bb7e1ff2cfd6583daef8ee0fed6f7ec468ec0" +dependencies = [ + "darling", + "derive_builder_core", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_builder_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2791ea3e372c8495c0bc2033991d76b512cd799d07491fbd6890124db9458bef" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 1.0.109", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "fancy-regex" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" +dependencies = [ + "bit-set", + "regex", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fslock" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57eafdd0c16f57161105ae1b98a1238f97645f2f588438b2949c99a2af9616bf" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "graph-cycles" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6ad932c6dd3cfaf16b66754a42f87bbeefd591530c4b6a8334270a7df3e853" +dependencies = [ + "ahash", + "petgraph", + "thiserror", +] + +[[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" + +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "if_chain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi", + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sandbox" +version = "0.2.0-rc.1" +source = "git+https://github.com/Bromeon/js-sandbox.git?rev=cd256ef#cd256ef88f6e293b9c93efd73565b1ff7ba2e418" +dependencies = [ + "deno_core", + "js-sandbox-macros", + "serde", + "serde_json", +] + +[[package]] +name = "js-sandbox-macros" +version = "0.2.0-rc.1" +source = "git+https://github.com/Bromeon/js-sandbox.git?rev=cd256ef#cd256ef88f6e293b9c93efd73565b1ff7ba2e418" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.148" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" + +[[package]] +name = "libloading" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memchr" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" + +[[package]] +name = "neon" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28e15415261d880aed48122e917a45e87bb82cf0260bb6db48bbab44b7464373" +dependencies = [ + "neon-build", + "neon-macros", + "neon-runtime", + "semver 0.9.0", + "smallvec", +] + +[[package]] +name = "neon-build" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bac98a702e71804af3dacfde41edde4a16076a7bbe889ae61e56e18c5b1c811" + +[[package]] +name = "neon-macros" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7288eac8b54af7913c60e0eb0e2a7683020dffa342ab3fd15e28f035ba897cf" +dependencies = [ + "quote", + "syn 1.0.109", + "syn-mid", +] + +[[package]] +name = "neon-runtime" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4676720fa8bb32c64c3d9f49c47a47289239ec46b4bdb66d0913cc512cb0daca" +dependencies = [ + "cfg-if", + "libloading", + "smallvec", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", + "rand", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.0.0", +] + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pmutil" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3894e5d549cccbe44afecf72922f277f603cd4bb0219c8342631ef18fffbe004" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.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.19", +] + +[[package]] +name = "rustix" +version = "0.38.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_v8" +version = "0.89.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9541cff99b1b9da15461aada44f09577af1f614add71f2fedc250c7e650a0383" +dependencies = [ + "bytes", + "derive_more", + "num-bigint", + "serde", + "serde_bytes", + "smallvec", + "v8", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + +[[package]] +name = "sourcemap" +version = "6.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4cbf65ca7dc576cf50e21f8d0712d96d4fcfd797389744b7b222a85cdf5bd90" +dependencies = [ + "data-encoding", + "debugid", + "if_chain", + "rustc_version 0.2.3", + "serde", + "serde_json", + "unicode-id", + "url", +] + +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn-mid" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea305d57546cc8cd04feb14b62ec84bf17f50e3f7b12560d7bfa9265f39d9ed" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tabbycat" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c45590f0f859197b4545be1b17b2bc3cc7bb075f7d1cc0ea1dc6521c0bf256a3" +dependencies = [ + "anyhow", + "derive_builder", + "regex", +] + +[[package]] +name = "thiserror" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.0.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-id" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1b6def86329695390197b82c1e244a54a131ceb66c996f2088a3876e2ae083f" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "url" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" + +[[package]] +name = "v8" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81c69410b7435f1b74e82e243ba906d71e8b9bb350828291418b9311dbd77222" +dependencies = [ + "bitflags 1.3.2", + "fslock", + "lazy_static", + "which", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[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-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[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-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[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_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "winnow" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +dependencies = [ + "memchr", +] + +[[package]] +name = "zk-regex-apis" +version = "0.1.0" +dependencies = [ + "fancy-regex", + "itertools", + "neon", + "serde_json", + "thiserror", + "zk-regex-compiler", +] + +[[package]] +name = "zk-regex-compiler" +version = "0.1.0" +dependencies = [ + "clap", + "fancy-regex", + "graph-cycles", + "itertools", + "js-sandbox", + "neon", + "petgraph", + "serde", + "serde_json", + "tabbycat", + "thiserror", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..56f1ba0 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[workspace] +members = ["packages/*"] +exclude = ["packages/circom", "test"] + +# [patch."https://github.com/stalwartlabs/mail-builder"] +# mail-builder = { version = "0.2.5", git = "https://github.com/stalwartlabs//mail-builder", tag = "0.2.5" } + +# [patch."https://github.com/stalwartlabs/mail-parser"] +# mail-parser = { version = "0.8", git = "https://github.com/stalwartlabs//mail-parser", tag = "0.8.0" } diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..df17070 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,11 @@ +module.exports = { + presets: [ + ['@babel/preset-env', { targets: { node: 'current' } }], + '@babel/preset-typescript', + ['@babel/preset-react', { "runtime": "automatic" }], + ['jest'] + ], + plugins: [ + '@babel/plugin-transform-modules-commonjs', + ] +}; \ No newline at end of file diff --git a/circuits/regex_helpers.circom b/circuits/regex_helpers.circom deleted file mode 100644 index de5331c..0000000 --- a/circuits/regex_helpers.circom +++ /dev/null @@ -1,48 +0,0 @@ -pragma circom 2.0.3; - -include "../node_modules/circomlib/circuits/comparators.circom"; -include "../node_modules/circomlib/circuits/gates.circom"; - -template MultiOROld(n) { - signal input in[n]; - signal output out; - component or1; - component or2; - component ors[2]; - if (n==1) { - out <== in[0]; - } else if (n==2) { - or1 = OR(); - or1.a <== in[0]; - or1.b <== in[1]; - out <== or1.out; - } else { - or2 = OR(); - var n1 = n\2; - var n2 = n-n\2; - ors[0] = MultiOR(n1); - ors[1] = MultiOR(n2); - var i; - for (i=0; i ') - .description('Compile a regular expression into circom circuits') - .action((regex, circuit_name) => { - regex = unescapeJs(regex); - generator.generateCircuit(regex, undefined, circuit_name); - }); - -program.on('command:*', () => { - console.error( - 'Error: Invalid command. See --help for a list of available commands.' - ); - process.exit(1); -}); - -program.parse(process.argv); - -if (!process.args.length) { - program.help(); -} diff --git a/compiler/gen.js b/compiler/gen.js deleted file mode 100644 index a8f4ed5..0000000 --- a/compiler/gen.js +++ /dev/null @@ -1,258 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const regexpTree = require('regexp-tree'); -const assert = require('assert'); -const lexical = require('./lexical'); - -async function generateCircuit(regex, circuitLibPath, circuitName) { - const ast = regexpTree.parse(`/${regex}/`); - regexpTree.traverse(ast, { - '*': function ({ node }) { - if (node.type === 'CharacterClass') { - throw new Error('CharacterClass not supported'); - } - }, - }); - - const graph_json = lexical.compile(regex); - const N = graph_json.length; - - // Outgoing nodes - const graph = Array.from({ length: N }, () => ({})); - // Incoming Nodes - const rev_graph = Array.from({ length: N }, () => []); - const accept_nodes = new Set(); - - for (let i = 0; i < N; i++) { - for (let k in graph_json[i]['edges']) { - //assert len(k) == 1 - //assert ord(k) < 128 - const v = graph_json[i]['edges'][k]; - graph[i][k] = v; - rev_graph[v].push([k, i]); - } - if (graph_json[i]['type'] === 'accept') { - accept_nodes.add(i); - } - } - - assert.strictEqual(accept_nodes.size, 1); - - let eq_i = 0; - let lt_i = 0; - let and_i = 0; - let multi_or_i = 0; - - let lines = []; - lines.push('for (var i = 0; i < num_bytes; i++) {'); - - assert.strictEqual(accept_nodes.has(0), false); - - for (let i = 1; i < N; i++) { - const outputs = []; - for (let [k, prev_i] of rev_graph[i]) { - let vals = new Set(JSON.parse(k)); - const eq_outputs = []; - - const uppercase = new Set('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')); - const lowercase = new Set('abcdefghijklmnopqrstuvwxyz'.split('')); - const digits = new Set('0123456789'.split('')); - - if (new Set([...uppercase].filter((x) => vals.has(x))).size === uppercase.size) { - vals = new Set([...vals].filter((x) => !uppercase.has(x))); - lines.push('\t//UPPERCASE'); - lines.push(`\tlt[${lt_i}][i] = LessThan(8);`); - lines.push(`\tlt[${lt_i}][i].in[0] <== 64;`); - lines.push(`\tlt[${lt_i}][i].in[1] <== in[i];`); - - lines.push(`\tlt[${lt_i + 1}][i] = LessThan(8);`); - lines.push(`\tlt[${lt_i + 1}][i].in[0] <== in[i];`); - lines.push(`\tlt[${lt_i + 1}][i].in[1] <== 91;`); - - lines.push(`\tand[${and_i}][i] = AND();`); - lines.push(`\tand[${and_i}][i].a <== lt[${lt_i}][i].out;`); - lines.push(`\tand[${and_i}][i].b <== lt[${lt_i + 1}][i].out;`); - - eq_outputs.push(['and', and_i]); - lt_i += 2; - and_i += 1; - } - if (new Set([...lowercase].filter((x) => vals.has(x))).size === lowercase.size) { - vals = new Set([...vals].filter((x) => !lowercase.has(x))); - lines.push('\t//lowercase'); - lines.push(`\tlt[${lt_i}][i] = LessThan(8);`); - lines.push(`\tlt[${lt_i}][i].in[0] <== 96;`); - lines.push(`\tlt[${lt_i}][i].in[1] <== in[i];`); - - lines.push(`\tlt[${lt_i + 1}][i] = LessThan(8);`); - lines.push(`\tlt[${lt_i + 1}][i].in[0] <== in[i];`); - lines.push(`\tlt[${lt_i + 1}][i].in[1] <== 123;`); - - lines.push(`\tand[${and_i}][i] = AND();`); - lines.push(`\tand[${and_i}][i].a <== lt[${lt_i}][i].out;`); - lines.push(`\tand[${and_i}][i].b <== lt[${lt_i + 1}][i].out;`); - - eq_outputs.push(['and', and_i]); - lt_i += 2; - and_i += 1; - } - if (new Set([...digits].filter((x) => vals.has(x))).size === digits.size) { - vals = new Set([...vals].filter((x) => !digits.has(x))); - lines.push('\t//digits'); - lines.push(`\tlt[${lt_i}][i] = LessThan(8);`); - lines.push(`\tlt[${lt_i}][i].in[0] <== 47;`); - lines.push(`\tlt[${lt_i}][i].in[1] <== in[i];`); - - lines.push(`\tlt[${lt_i + 1}][i] = LessThan(8);`); - lines.push(`\tlt[${lt_i + 1}][i].in[0] <== in[i];`); - lines.push(`\tlt[${lt_i + 1}][i].in[1] <== 58;`); - - lines.push(`\tand[${and_i}][i] = AND();`); - lines.push(`\tand[${and_i}][i].a <== lt[${lt_i}][i].out;`); - lines.push(`\tand[${and_i}][i].b <== lt[${lt_i + 1}][i].out;`); - - eq_outputs.push(['and', and_i]); - lt_i += 2; - and_i += 1; - } - for (let c of vals) { - assert.strictEqual(c.length, 1); - lines.push(`\t//${c}`); - lines.push(`\teq[${eq_i}][i] = IsEqual();`); - lines.push(`\teq[${eq_i}][i].in[0] <== in[i];`); - lines.push(`\teq[${eq_i}][i].in[1] <== ${c.charCodeAt(0)};`); - eq_outputs.push(['eq', eq_i]); - eq_i += 1; - } - - lines.push(`\tand[${and_i}][i] = AND();`); - lines.push(`\tand[${and_i}][i].a <== states[i][${prev_i}];`); - - if (eq_outputs.length === 1) { - lines.push(`\tand[${and_i}][i].b <== ${eq_outputs[0][0]}[${eq_outputs[0][1]}][i].out;`); - } else if (eq_outputs.length > 1) { - lines.push(`\tmulti_or[${multi_or_i}][i] = MultiOR(${eq_outputs.length});`); - for (let output_i = 0; output_i < eq_outputs.length; output_i++) { - lines.push(`\tmulti_or[${multi_or_i}][i].in[${output_i}] <== ${eq_outputs[output_i][0]}[${eq_outputs[output_i][1]}][i].out;`); - } - lines.push(`\tand[${and_i}][i].b <== multi_or[${multi_or_i}][i].out;`); - multi_or_i += 1; - } - outputs.push(and_i); - and_i += 1; - } - - if (outputs.length === 1) { - lines.push(`\tstates[i+1][${i}] <== and[${outputs[0]}][i].out;`); - } else if (outputs.length > 1) { - lines.push(`\tmulti_or[${multi_or_i}][i] = MultiOR(${outputs.length});`); - for (let output_i = 0; output_i < outputs.length; output_i++) { - lines.push(`\tmulti_or[${multi_or_i}][i].in[${output_i}] <== and[${outputs[output_i]}][i].out;`); - } - lines.push(`\tstates[i+1][${i}] <== multi_or[${multi_or_i}][i].out;`); - multi_or_i += 1; - } - } - - lines.push('}'); - - lines.push('signal final_state_sum[num_bytes+1];'); - lines.push(`final_state_sum[0] <== states[0][${N - 1}];`); - lines.push('for (var i = 1; i <= num_bytes; i++) {'); - lines.push(`\tfinal_state_sum[i] <== final_state_sum[i-1] + states[i][${N - 1}];`); - lines.push('}'); - lines.push('entire_count <== final_state_sum[num_bytes];'); - - let declarations = []; - - if (eq_i > 0) { - declarations.push(`component eq[${eq_i}][num_bytes];`); - } - if (lt_i > 0) { - declarations.push(`component lt[${lt_i}][num_bytes];`); - } - if (and_i > 0) { - declarations.push(`component and[${and_i}][num_bytes];`); - } - if (multi_or_i > 0) { - declarations.push(`component multi_or[${multi_or_i}][num_bytes];`); - } - declarations.push(`signal states[num_bytes+1][${N}];`); - declarations.push(''); - - let init_code = []; - - init_code.push('for (var i = 0; i < num_bytes; i++) {'); - init_code.push('\tstates[i][0] <== 1;'); - init_code.push('}'); - - init_code.push(`for (var i = 1; i < ${N}; i++) {`); - init_code.push('\tstates[0][i] <== 0;'); - init_code.push('}'); - - init_code.push(''); - - // construct the match group indexes - const node_edges = graph_json.map((node) => - Object.keys(node.edges).map((key) => { - return { [key]: node.edges[key] }; - }) - ); - const node_edges_flat = node_edges.flat(); - - const node_edges_set = new Set(); - node_edges_flat.forEach((node) => { - if (JSON.parse(Object.keys(node)[0]).length > 1) { - node_edges_set.add(Object.values(node)[0]); - } - }); - const match_group_indexes = Array.from(node_edges_set).sort((a, b) => a - b); - init_code.push(`var match_group_indexes[${match_group_indexes.length}] = [${match_group_indexes.join(', ')}];`); - - const reveal_code = []; - reveal_code.push('signal output reveal[num_bytes];'); - reveal_code.push('for (var i = 0; i < num_bytes; i++) {'); - reveal_code.push('\treveal[i] <== in[i] * states[i+1][match_group_indexes[group_idx]];'); - reveal_code.push('}'); - reveal_code.push(''); - - lines = [...declarations, ...init_code, ...lines, ...reveal_code]; - - const OUTPUT_HALO2 = true; - if (OUTPUT_HALO2) { - console.log('Logging to halo2 file! Note that this file is not formatted correctly. For the latest spec, see https://github.com/zkemail/halo2-regex'); - const f = fs.createWriteStream('halo2_regex_lookup_js.txt'); - accept_nodes.forEach((a) => f.write(a + ' ')); - f.write('\n'); - f.write(match_group_indexes.join(' ')); - f.write('\n'); - for (let i = 0; i < N; i++) { - const edges = graph_json[i]['edges']; - for (let k in edges) { - const v = edges[k]; - for (let val of JSON.parse(k)) { - f.write(`${i} ${v} ${val.charCodeAt(0)}\n`); - } - } - } - } - - try { - let tpl = await (await fs.promises.readFile(`${__dirname}/tpl.circom`)).toString(); - tpl = tpl.replace('TEMPLATE_NAME_PLACEHOLDER', circuitName || 'Regex'); - tpl = tpl.replace('COMPILED_CONTENT_PLACEHOLDER', lines.join('\n\t')); - tpl = tpl.replace(/CIRCUIT_FOLDER/g, circuitLibPath || '../circuits'); - tpl = tpl.replace(/\t/g, ' '.repeat(4)); - - const outputPath = `${__dirname}/../build/${circuitName || 'compiled'}.circom`; - await fs.promises.writeFile(outputPath, tpl); - process.env.VERBOSE && console.log(`Circuit compiled to ${path.normalize(outputPath)}`); - } catch (error) { - console.log(error); - } -} - -module.exports = { - generateCircuit, - ...lexical, -}; diff --git a/compiler/tpl.circom b/compiler/tpl.circom deleted file mode 100644 index 4ead5ea..0000000 --- a/compiler/tpl.circom +++ /dev/null @@ -1,83 +0,0 @@ -pragma circom 2.0.3; - -include "CIRCUIT_FOLDER/regex_helpers.circom"; - -template TEMPLATE_NAME_PLACEHOLDER (msg_bytes, reveal_bytes, group_idx) { - signal input msg[msg_bytes]; - signal input match_idx; - signal output start_idx; - signal output group_match_count; - signal output entire_count; - - signal reveal_shifted_intermediate[reveal_bytes][msg_bytes]; - signal output reveal_shifted[reveal_bytes]; - - var num_bytes = msg_bytes; - signal in[num_bytes]; - for (var i = 0; i < msg_bytes; i++) { - in[i] <== msg[i]; - } - - COMPILED_CONTENT_PLACEHOLDER - - // a flag to indicate the start position of the match - var start_index = 0; - // for counting the number of matches - var count = 0; - - // lengths to be consistent with states signal - component check_start[num_bytes + 1]; - component check_match[num_bytes + 1]; - component check_matched_start[num_bytes + 1]; - component matched_idx_eq[msg_bytes]; - - for (var i = 0; i < num_bytes; i++) { - if (i == 0) { - count += states[1][match_group_indexes[group_idx]]; - } - else { - check_start[i] = AND(); - check_start[i].a <== states[i + 1][match_group_indexes[group_idx]]; - check_start[i].b <== 1 - states[i][match_group_indexes[group_idx]]; - - count += check_start[i].out; - - check_match[i] = IsEqual(); - check_match[i].in[0] <== count; - check_match[i].in[1] <== match_idx + 1; - - check_matched_start[i] = AND(); - check_matched_start[i].a <== check_match[i].out; - check_matched_start[i].b <== check_start[i].out; - start_index += check_matched_start[i].out * i; - } - - matched_idx_eq[i] = IsEqual(); - matched_idx_eq[i].in[0] <== states[i + 1][match_group_indexes[group_idx]] * count; - matched_idx_eq[i].in[1] <== match_idx + 1; - } - - component match_start_idx[msg_bytes]; - for (var i = 0; i < msg_bytes; i++) { - match_start_idx[i] = IsEqual(); - match_start_idx[i].in[0] <== i; - match_start_idx[i].in[1] <== start_index; - } - - signal reveal_match[msg_bytes]; - for (var i = 0; i < msg_bytes; i++) { - reveal_match[i] <== matched_idx_eq[i].out * reveal[i]; - } - - for (var j = 0; j < reveal_bytes; j++) { - reveal_shifted_intermediate[j][j] <== 0; - for (var i = j + 1; i < msg_bytes; i++) { - // This shifts matched string back to the beginning. - reveal_shifted_intermediate[j][i] <== reveal_shifted_intermediate[j][i - 1] + match_start_idx[i-j].out * reveal_match[i]; - } - reveal_shifted[j] <== reveal_shifted_intermediate[j][msg_bytes - 1]; - } - - group_match_count <== count; - start_idx <== start_index; -} diff --git a/package.json b/package.json index ef1d1e8..de95d75 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,15 @@ { "name": "zk-regex", "version": "0.0.1", + "private": true, "description": "zk regex circuit for content attestation", - "main": "index.js", - "directories": { - "test": "test" - }, + "main": "node-apis/index.node", + "workspaces": [ + "packages/*" + ], "scripts": { - "test": "NODE_OPTIONS=--max_old_space_size=56000 mocha --timeout 600000 'test/**/*.js'", - "lint": "eslint ./", - "compile": "VERBOSE=1 node compiler/cli.js compile" + "test": "yarn workspaces -pt run test", + "lint": "eslint ./" }, "repository": { "type": "git", @@ -28,21 +28,19 @@ "url": "https://github.com/zk-email-verify/zk-regex/issues" }, "homepage": "https://github.com/zk-email-verify/zk-regex#readme", - "dependencies": { - "circomlib": "^2.0.2", - "commander": "^10.0.0", - "eslint": "^8.34.0", - "regexp-tree": "^0.1.24", - "unescape-js": "^1.1.4" - }, "devDependencies": { - "@types/chai": "^4.3.0", - "@types/expect": "^24.3.0", - "@types/mocha": "^9.0.0", - "chai": "^4.3.4", - "circom_tester": "katat/circom_tester#feat/signal-json", - "mocha": "^9.1.3", - "ts-node": "^10.4.0", + "@babel/core": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/preset-env": "^7.22.2", + "@babel/preset-react": "^7.22.0", + "@babel/preset-typescript": "^7.21.5", + "@types/jest": "^29.5.4", + "babel-jest": "^29.5.0", + "babel-preset-jest": "^29.5.0", + "jest": "^29.5.0", + "prettier": "^3.0.0", + "prettier-plugin-solidity": "^1.1.3", + "ts-jest": "^29.1.1", "typescript": "^4.5.4" } -} +} \ No newline at end of file diff --git a/packages/apis/.gitignore b/packages/apis/.gitignore new file mode 100644 index 0000000..6ca71fb --- /dev/null +++ b/packages/apis/.gitignore @@ -0,0 +1,5 @@ +target +index.node +**/node_modules +**/.DS_Store +npm-debug.log* diff --git a/packages/apis/Cargo.toml b/packages/apis/Cargo.toml new file mode 100644 index 0000000..783cd06 --- /dev/null +++ b/packages/apis/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "zk-regex-apis" +version = "0.1.0" +license = "MIT" +edition = "2018" +exclude = ["index.node"] + +[lib] +crate-type = ["cdylib"] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +compiler = { package = "zk-regex-compiler", path = "../compiler", default-features = false } +fancy-regex = "0.11.0" +itertools = "0.10.3" +thiserror = "1.0.40" +serde_json = "1.0.95" + + +[dependencies.neon] +version = "0.10" +default-features = false +features = ["napi-6"] diff --git a/packages/apis/README.md b/packages/apis/README.md new file mode 100644 index 0000000..06762cf --- /dev/null +++ b/packages/apis/README.md @@ -0,0 +1,119 @@ +# zk-regex-apis + +This project was bootstrapped by [create-neon](https://www.npmjs.com/package/create-neon). + +## Installing zk-regex-apis + +Installing zk-regex-apis requires a [supported version of Node and Rust](https://github.com/neon-bindings/neon#platform-support). + +You can install the project with npm. In the project directory, run: + +```sh +$ npm install +``` + +This fully installs the project, including installing any dependencies and running the build. + +## Building zk-regex-apis + +If you have already installed the project and only want to run the build, run: + +```sh +$ npm run build +``` + +This command uses the [cargo-cp-artifact](https://github.com/neon-bindings/cargo-cp-artifact) utility to run the Rust build and copy the built library into `./index.node`. + +## Exploring zk-regex-apis + +After building zk-regex-apis, you can explore its exports at the Node REPL: + +```sh +$ npm install +$ node +> require('.').hello() +"hello node" +``` + +## Available Scripts + +In the project directory, you can run: + +### `npm install` + +Installs the project, including running `npm run build`. + +### `npm build` + +Builds the Node addon (`index.node`) from source. + +Additional [`cargo build`](https://doc.rust-lang.org/cargo/commands/cargo-build.html) arguments may be passed to `npm build` and `npm build-*` commands. For example, to enable a [cargo feature](https://doc.rust-lang.org/cargo/reference/features.html): + +``` +npm run build -- --feature=beetle +``` + +#### `npm build-debug` + +Alias for `npm build`. + +#### `npm build-release` + +Same as [`npm build`](#npm-build) but, builds the module with the [`release`](https://doc.rust-lang.org/cargo/reference/profiles.html#release) profile. Release builds will compile slower, but run faster. + +### `npm test` + +Runs the unit tests by calling `cargo test`. You can learn more about [adding tests to your Rust code](https://doc.rust-lang.org/book/ch11-01-writing-tests.html) from the [Rust book](https://doc.rust-lang.org/book/). + +## Project Layout + +The directory structure of this project is: + +``` +zk-regex-apis/ +├── Cargo.toml +├── README.md +├── index.node +├── package.json +├── src/ +| └── lib.rs +└── target/ +``` + +### Cargo.toml + +The Cargo [manifest file](https://doc.rust-lang.org/cargo/reference/manifest.html), which informs the `cargo` command. + +### README.md + +This file. + +### index.node + +The Node addon—i.e., a binary Node module—generated by building the project. This is the main module for this package, as dictated by the `"main"` key in `package.json`. + +Under the hood, a [Node addon](https://nodejs.org/api/addons.html) is a [dynamically-linked shared object](https://en.wikipedia.org/wiki/Library_(computing)#Shared_libraries). The `"build"` script produces this file by copying it from within the `target/` directory, which is where the Rust build produces the shared object. + +### package.json + +The npm [manifest file](https://docs.npmjs.com/cli/v7/configuring-npm/package-json), which informs the `npm` command. + +### src/ + +The directory tree containing the Rust source code for the project. + +### src/lib.rs + +The Rust library's main module. + +### target/ + +Binary artifacts generated by the Rust build. + +## Learn More + +To learn more about Neon, see the [Neon documentation](https://neon-bindings.com). + +To learn more about Rust, see the [Rust documentation](https://www.rust-lang.org). + +To learn more about Node, see the [Node documentation](https://nodejs.org). diff --git a/packages/apis/package.json b/packages/apis/package.json new file mode 100644 index 0000000..332ab34 --- /dev/null +++ b/packages/apis/package.json @@ -0,0 +1,18 @@ +{ + "name": "zk-regex-apis", + "version": "0.1.0", + "description": "", + "main": "index.node", + "scripts": { + "build": "cargo-cp-artifact -nc index.node -- cargo build --message-format=json-render-diagnostics", + "build-debug": "npm run build --", + "build-release": "npm run build -- --release", + "install": "npm run build-release", + "test": "cargo test" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "cargo-cp-artifact": "^0.1" + } +} \ No newline at end of file diff --git a/packages/apis/src/extract_substrs.rs b/packages/apis/src/extract_substrs.rs new file mode 100644 index 0000000..aa8c1bc --- /dev/null +++ b/packages/apis/src/extract_substrs.rs @@ -0,0 +1,216 @@ +use fancy_regex::Regex; +use compiler::{DecomposedRegexConfig}; +use itertools::Itertools; +use neon::prelude::*; +use thiserror::Error; +use serde_json; + +/// Error definitions of the compiler. +#[derive(Error, Debug)] +pub enum ExtractSubstrssError { + #[error("The max length is {} but the input length is {}",.0,.1)] + InvalidInputLen(usize, usize), + #[error("Substring of the entire regex {} is not found in {}",.0,.1)] + SubstringOfEntireNotFound(Regex,String), + #[error("Substring of {} is not found in {}",.0,.1)] + SubstringNotFound(Regex,String), + #[error(transparent)] + RegexError(#[from] fancy_regex::Error), +} + + +pub fn extract_substr_idxes( + input_str: &str, + regex_config: &DecomposedRegexConfig, +) -> Result,ExtractSubstrssError> { + if input_str.len() > regex_config.max_byte_size { + return Err(ExtractSubstrssError::InvalidInputLen(regex_config.max_byte_size,input_str.len())); + } + let mut entire_regex_str = String::new(); + for part in regex_config.parts.iter() { + entire_regex_str += part.regex_def.as_str(); + } + // entire_regex_str = format_regex_printable(&entire_regex_str)?; + let entire_regex = Regex::new(&entire_regex_str)?; + let entire_found = entire_regex.find(input_str)?.ok_or_else(|| { + ExtractSubstrssError::SubstringOfEntireNotFound(entire_regex, input_str.to_string()) + })?; + let mut start = entire_found.start(); + let entire_end = entire_found.end(); + + let mut public_idxes = vec![]; + // let mut last_regex_str = String::new(); + // let part_regex_defs = regex_config.parts.iter().map(|part| part.regex_def.as_str()).collect_vec(); + for part_idx in 0..regex_config.parts.len() { + // last_regex_str = last_regex_str + regex_config.parts[part_idx].regex_def.as_str(); + let regex = Regex::new(®ex_config.parts[part_idx].regex_def.as_str())?; + let found = regex.find_from_pos(&input_str,start)?.ok_or_else(|| { + ExtractSubstrssError::SubstringNotFound(regex.clone(), input_str[start..entire_end].to_string()) + })?; + let end = found.end(); + // if found.start() >= end { + // return Err(ExtractSubstrssError::EmptySubstring(regex, input_str[start..entire_end].to_string())); + // } + if regex_config.parts[part_idx].is_public { + public_idxes.push((start,end)); + } + start = end; + } + + Ok(public_idxes) +} + +pub fn extract_substr_idxes_node( + mut cx: FunctionContext +) -> JsResult { + let input_str = cx.argument::(0)?.value(&mut cx); + let regex_config_str = cx.argument::(1)?.value(&mut cx); + let regex_config = match serde_json::from_str::(®ex_config_str){ + Ok(regex_config) => regex_config, + Err(e) => return cx.throw_error(e.to_string()) + }; + let substr_idxes = match extract_substr_idxes(&input_str, ®ex_config){ + Ok(substr_idxes) => substr_idxes, + Err(e) => return cx.throw_error(e.to_string()) + }; + let js_array = JsArray::new(&mut cx, substr_idxes.len() as u32); + for (i, (start_idx,end_idx)) in substr_idxes.iter().enumerate() { + let start_end_array = JsArray::new(&mut cx,2u32); + let start_idx = cx.number(*start_idx as f64); + start_end_array.set(&mut cx, 0, start_idx)?; + let end_idx = cx.number(*end_idx as f64); + start_end_array.set(&mut cx, 1, end_idx)?; + js_array.set(&mut cx, i as u32, start_end_array)?; + } + Ok(js_array) +} + + + +#[cfg(test)] +mod test { + use compiler::RegexPartConfig; + + use super::*; + + #[test] + fn test_email_domain_valid() { + let email_addr_regex = DecomposedRegexConfig { + max_byte_size: 256, + parts: vec![ + RegexPartConfig { + is_public: false, + regex_def: "(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\.|_|%|\\+|-|=)+".to_string(), + max_size: 64, + solidity: None + }, + RegexPartConfig { + is_public: false, + regex_def: "@".to_string(), + max_size: 1, + solidity: None + }, + RegexPartConfig { + is_public: true, + regex_def: "(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\.|-)+".to_string(), + max_size: 255, + solidity: None + } + ] + }; + let input_str = "suegamisora@gmail.com"; + let idxes = extract_substr_idxes(input_str, &email_addr_regex).unwrap(); + assert_eq!(idxes, vec![(12,21)]); + } + + + #[test] + fn test_email_addr_in_subject_valid() { + let email_addr_regex = DecomposedRegexConfig { + max_byte_size: 256, + parts: vec![ + RegexPartConfig { + is_public: true, + regex_def: "(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\.|_|%|\\+|-|=)+".to_string(), + max_size: 64, + solidity: None + }, + RegexPartConfig { + is_public: true, + regex_def: "@".to_string(), + max_size: 1, + solidity: None + }, + RegexPartConfig { + is_public: true, + regex_def: "(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\.|-)+".to_string(), + max_size: 255, + solidity: None + } + ] + }; + let input_str = "This is sent for suegamisora@gmail.com"; + let idxes = extract_substr_idxes(input_str, &email_addr_regex).unwrap(); + assert_eq!(idxes, vec![(17, 28),(28,29),(29, 38)]); + } + + #[test] + fn test_code_in_subject_valid() { + let code_regex = DecomposedRegexConfig { + max_byte_size: 1024, + parts: vec![ + RegexPartConfig { + is_public: false, + regex_def: "CODE:0x".to_string(), + max_size: 7, + solidity: None + }, + RegexPartConfig { + is_public: true, + regex_def: "(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)+".to_string(), + max_size: 6, + solidity: None + } + ] + }; + let input_str = "subject: Email Wallet CODE:0x123abc"; + let idxes = extract_substr_idxes(input_str, &code_regex).unwrap(); + assert_eq!(idxes, vec![(29, 35)]); + } + + #[test] + fn test_timestamp_valid() { + let timestamp_regex = DecomposedRegexConfig { + max_byte_size: 1024, + parts: vec![ + RegexPartConfig { + is_public: false, + regex_def: "dkim-signature:".to_string(), + max_size: 10, + solidity: None + }, + RegexPartConfig { + is_public: false, + regex_def: "((a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)+=(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|\"|#|$|%|&|\'|\\(|\\)|\\*|\\+|,|-|\\.|\\/|:|<|=|>|\\?|@|\\[|\\\\|\\]|\\^|_|`|{|\\||}|~| |\t|\n|\r|\\x0b|\\x0c)+; )+t=".to_string(), + max_size: 128, + solidity: None + }, + RegexPartConfig { + is_public: true, + regex_def: "(0|1|2|3|4|5|6|7|8|9)+".to_string(), + max_size: 10, + solidity: None + }, + RegexPartConfig { + is_public: false, + regex_def: ";".to_string(), + max_size: 1, + solidity: None + }, + ] + }; + let input_str = "dkim-signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1694989812; x=1695594612; dara=google.com; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=BWETwQ9JDReS4GyR2v2TTR8Bpzj9ayumsWQJ3q7vehs=; b="; + let idxes = extract_substr_idxes(input_str, ×tamp_regex).unwrap(); + assert_eq!(idxes, vec![(80, 90)]); + } +} diff --git a/packages/apis/src/lib.rs b/packages/apis/src/lib.rs new file mode 100644 index 0000000..d0a4e92 --- /dev/null +++ b/packages/apis/src/lib.rs @@ -0,0 +1,12 @@ +use neon::prelude::*; +pub mod extract_substrs; +pub mod padding; +use extract_substrs::extract_substr_idxes_node; +use padding::pad_string_node; + +#[neon::main] +fn main(mut cx: ModuleContext) -> NeonResult<()> { + cx.export_function("extractSubstrIdxes", extract_substr_idxes_node)?; + cx.export_function("padString", pad_string_node)?; + Ok(()) +} diff --git a/packages/apis/src/padding.rs b/packages/apis/src/padding.rs new file mode 100644 index 0000000..dd31b6c --- /dev/null +++ b/packages/apis/src/padding.rs @@ -0,0 +1,19 @@ +use neon::prelude::*; + +pub fn pad_string(str: &str, padded_bytes_size: usize) -> Vec { + let mut padded_bytes = str.as_bytes().to_vec(); + padded_bytes.append(&mut vec![0; padded_bytes_size - padded_bytes.len()]); + padded_bytes +} + +pub fn pad_string_node(mut cx: FunctionContext) -> JsResult { + let string = cx.argument::(0)?.value(&mut cx); + let padded_bytes_size = cx.argument::(1)?.value(&mut cx) as usize; + let padded_bytes = pad_string(&string, padded_bytes_size); + let padded_array = JsArray::new(&mut cx, padded_bytes_size as u32); + for (idx, byte) in padded_bytes.into_iter().enumerate() { + let js_byte = cx.number(byte); + padded_array.set(&mut cx, idx as u32, js_byte)?; + } + Ok(padded_array) +} diff --git a/packages/circom/circuits/common/email_addr.json b/packages/circom/circuits/common/email_addr.json new file mode 100644 index 0000000..3097a46 --- /dev/null +++ b/packages/circom/circuits/common/email_addr.json @@ -0,0 +1,10 @@ +{ + "max_byte_size": 512, + "parts": [ + { + "is_public": true, + "regex_def": "(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\.|_|%|\\+|-|=)+@(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\.|-)+", + "max_size": 256 + } + ] +} \ No newline at end of file diff --git a/packages/circom/circuits/common/email_addr_regex.circom b/packages/circom/circuits/common/email_addr_regex.circom new file mode 100644 index 0000000..80e0f5c --- /dev/null +++ b/packages/circom/circuits/common/email_addr_regex.circom @@ -0,0 +1,276 @@ +pragma circom 2.1.5; + +include "zk-regex-circom/circuits/regex_helpers.circom"; + +template EmailAddrRegex(msg_bytes) { + signal input msg[msg_bytes]; + signal output out; + + var num_bytes = msg_bytes+1; + signal in[num_bytes]; + in[0]<==128; + for (var i = 0; i < msg_bytes; i++) { + in[i+1] <== msg[i]; + } + + component eq[17][num_bytes]; + component lt[24][num_bytes]; + component and[17][num_bytes]; + component multi_or[6][num_bytes]; + signal states[num_bytes+1][4]; + component state_changed[num_bytes]; + + states[0][0] <== 1; + for (var i = 1; i < 4; i++) { + states[0][i] <== 0; + } + + for (var i = 0; i < num_bytes; i++) { + state_changed[i] = MultiOR(3); + lt[0][i] = LessThan(8); + lt[0][i].in[0] <== 47; + lt[0][i].in[1] <== in[i]; + lt[1][i] = LessThan(8); + lt[1][i].in[0] <== in[i]; + lt[1][i].in[1] <== 58; + and[0][i] = AND(); + and[0][i].a <== lt[0][i].out; + and[0][i].b <== lt[1][i].out; + lt[2][i] = LessThan(8); + lt[2][i].in[0] <== 64; + lt[2][i].in[1] <== in[i]; + lt[3][i] = LessThan(8); + lt[3][i].in[0] <== in[i]; + lt[3][i].in[1] <== 91; + and[1][i] = AND(); + and[1][i].a <== lt[2][i].out; + and[1][i].b <== lt[3][i].out; + lt[4][i] = LessThan(8); + lt[4][i].in[0] <== 96; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 123; + and[2][i] = AND(); + and[2][i].a <== lt[4][i].out; + and[2][i].b <== lt[5][i].out; + eq[0][i] = IsEqual(); + eq[0][i].in[0] <== in[i]; + eq[0][i].in[1] <== 37; + eq[1][i] = IsEqual(); + eq[1][i].in[0] <== in[i]; + eq[1][i].in[1] <== 43; + eq[2][i] = IsEqual(); + eq[2][i].in[0] <== in[i]; + eq[2][i].in[1] <== 45; + eq[3][i] = IsEqual(); + eq[3][i].in[0] <== in[i]; + eq[3][i].in[1] <== 46; + eq[4][i] = IsEqual(); + eq[4][i].in[0] <== in[i]; + eq[4][i].in[1] <== 61; + eq[5][i] = IsEqual(); + eq[5][i].in[0] <== in[i]; + eq[5][i].in[1] <== 95; + and[3][i] = AND(); + and[3][i].a <== states[i][0]; + multi_or[0][i] = MultiOR(9); + multi_or[0][i].in[0] <== and[0][i].out; + multi_or[0][i].in[1] <== and[1][i].out; + multi_or[0][i].in[2] <== and[2][i].out; + multi_or[0][i].in[3] <== eq[0][i].out; + multi_or[0][i].in[4] <== eq[1][i].out; + multi_or[0][i].in[5] <== eq[2][i].out; + multi_or[0][i].in[6] <== eq[3][i].out; + multi_or[0][i].in[7] <== eq[4][i].out; + multi_or[0][i].in[8] <== eq[5][i].out; + and[3][i].b <== multi_or[0][i].out; + lt[6][i] = LessThan(8); + lt[6][i].in[0] <== 47; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 58; + and[4][i] = AND(); + and[4][i].a <== lt[6][i].out; + and[4][i].b <== lt[7][i].out; + lt[8][i] = LessThan(8); + lt[8][i].in[0] <== 64; + lt[8][i].in[1] <== in[i]; + lt[9][i] = LessThan(8); + lt[9][i].in[0] <== in[i]; + lt[9][i].in[1] <== 91; + and[5][i] = AND(); + and[5][i].a <== lt[8][i].out; + and[5][i].b <== lt[9][i].out; + lt[10][i] = LessThan(8); + lt[10][i].in[0] <== 96; + lt[10][i].in[1] <== in[i]; + lt[11][i] = LessThan(8); + lt[11][i].in[0] <== in[i]; + lt[11][i].in[1] <== 123; + and[6][i] = AND(); + and[6][i].a <== lt[10][i].out; + and[6][i].b <== lt[11][i].out; + eq[6][i] = IsEqual(); + eq[6][i].in[0] <== in[i]; + eq[6][i].in[1] <== 37; + eq[7][i] = IsEqual(); + eq[7][i].in[0] <== in[i]; + eq[7][i].in[1] <== 43; + eq[8][i] = IsEqual(); + eq[8][i].in[0] <== in[i]; + eq[8][i].in[1] <== 45; + eq[9][i] = IsEqual(); + eq[9][i].in[0] <== in[i]; + eq[9][i].in[1] <== 46; + eq[10][i] = IsEqual(); + eq[10][i].in[0] <== in[i]; + eq[10][i].in[1] <== 61; + eq[11][i] = IsEqual(); + eq[11][i].in[0] <== in[i]; + eq[11][i].in[1] <== 95; + and[7][i] = AND(); + and[7][i].a <== states[i][1]; + multi_or[1][i] = MultiOR(9); + multi_or[1][i].in[0] <== and[4][i].out; + multi_or[1][i].in[1] <== and[5][i].out; + multi_or[1][i].in[2] <== and[6][i].out; + multi_or[1][i].in[3] <== eq[6][i].out; + multi_or[1][i].in[4] <== eq[7][i].out; + multi_or[1][i].in[5] <== eq[8][i].out; + multi_or[1][i].in[6] <== eq[9][i].out; + multi_or[1][i].in[7] <== eq[10][i].out; + multi_or[1][i].in[8] <== eq[11][i].out; + and[7][i].b <== multi_or[1][i].out; + multi_or[2][i] = MultiOR(2); + multi_or[2][i].in[0] <== and[3][i].out; + multi_or[2][i].in[1] <== and[7][i].out; + states[i+1][1] <== multi_or[2][i].out; + state_changed[i].in[0] <== states[i+1][1]; + eq[12][i] = IsEqual(); + eq[12][i].in[0] <== in[i]; + eq[12][i].in[1] <== 64; + and[8][i] = AND(); + and[8][i].a <== states[i][1]; + and[8][i].b <== eq[12][i].out; + states[i+1][2] <== and[8][i].out; + state_changed[i].in[1] <== states[i+1][2]; + lt[12][i] = LessThan(8); + lt[12][i].in[0] <== 47; + lt[12][i].in[1] <== in[i]; + lt[13][i] = LessThan(8); + lt[13][i].in[0] <== in[i]; + lt[13][i].in[1] <== 58; + and[9][i] = AND(); + and[9][i].a <== lt[12][i].out; + and[9][i].b <== lt[13][i].out; + lt[14][i] = LessThan(8); + lt[14][i].in[0] <== 64; + lt[14][i].in[1] <== in[i]; + lt[15][i] = LessThan(8); + lt[15][i].in[0] <== in[i]; + lt[15][i].in[1] <== 91; + and[10][i] = AND(); + and[10][i].a <== lt[14][i].out; + and[10][i].b <== lt[15][i].out; + lt[16][i] = LessThan(8); + lt[16][i].in[0] <== 96; + lt[16][i].in[1] <== in[i]; + lt[17][i] = LessThan(8); + lt[17][i].in[0] <== in[i]; + lt[17][i].in[1] <== 123; + and[11][i] = AND(); + and[11][i].a <== lt[16][i].out; + and[11][i].b <== lt[17][i].out; + eq[13][i] = IsEqual(); + eq[13][i].in[0] <== in[i]; + eq[13][i].in[1] <== 45; + eq[14][i] = IsEqual(); + eq[14][i].in[0] <== in[i]; + eq[14][i].in[1] <== 46; + and[12][i] = AND(); + and[12][i].a <== states[i][2]; + multi_or[3][i] = MultiOR(5); + multi_or[3][i].in[0] <== and[9][i].out; + multi_or[3][i].in[1] <== and[10][i].out; + multi_or[3][i].in[2] <== and[11][i].out; + multi_or[3][i].in[3] <== eq[13][i].out; + multi_or[3][i].in[4] <== eq[14][i].out; + and[12][i].b <== multi_or[3][i].out; + lt[18][i] = LessThan(8); + lt[18][i].in[0] <== 47; + lt[18][i].in[1] <== in[i]; + lt[19][i] = LessThan(8); + lt[19][i].in[0] <== in[i]; + lt[19][i].in[1] <== 58; + and[13][i] = AND(); + and[13][i].a <== lt[18][i].out; + and[13][i].b <== lt[19][i].out; + lt[20][i] = LessThan(8); + lt[20][i].in[0] <== 64; + lt[20][i].in[1] <== in[i]; + lt[21][i] = LessThan(8); + lt[21][i].in[0] <== in[i]; + lt[21][i].in[1] <== 91; + and[14][i] = AND(); + and[14][i].a <== lt[20][i].out; + and[14][i].b <== lt[21][i].out; + lt[22][i] = LessThan(8); + lt[22][i].in[0] <== 96; + lt[22][i].in[1] <== in[i]; + lt[23][i] = LessThan(8); + lt[23][i].in[0] <== in[i]; + lt[23][i].in[1] <== 123; + and[15][i] = AND(); + and[15][i].a <== lt[22][i].out; + and[15][i].b <== lt[23][i].out; + eq[15][i] = IsEqual(); + eq[15][i].in[0] <== in[i]; + eq[15][i].in[1] <== 45; + eq[16][i] = IsEqual(); + eq[16][i].in[0] <== in[i]; + eq[16][i].in[1] <== 46; + and[16][i] = AND(); + and[16][i].a <== states[i][3]; + multi_or[4][i] = MultiOR(5); + multi_or[4][i].in[0] <== and[13][i].out; + multi_or[4][i].in[1] <== and[14][i].out; + multi_or[4][i].in[2] <== and[15][i].out; + multi_or[4][i].in[3] <== eq[15][i].out; + multi_or[4][i].in[4] <== eq[16][i].out; + and[16][i].b <== multi_or[4][i].out; + multi_or[5][i] = MultiOR(2); + multi_or[5][i].in[0] <== and[12][i].out; + multi_or[5][i].in[1] <== and[16][i].out; + states[i+1][3] <== multi_or[5][i].out; + state_changed[i].in[2] <== states[i+1][3]; + states[i+1][0] <== 1 - state_changed[i].out; + } + + component final_state_result = MultiOR(num_bytes+1); + for (var i = 0; i <= num_bytes; i++) { + final_state_result.in[i] <== states[i][3]; + } + out <== final_state_result.out; + + signal is_consecutive[msg_bytes+1][2]; + is_consecutive[msg_bytes][1] <== 1; + for (var i = 0; i < msg_bytes; i++) { + is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][3] * (1 - is_consecutive[msg_bytes-i][1]) + is_consecutive[msg_bytes-i][1]; + is_consecutive[msg_bytes-1-i][1] <== state_changed[msg_bytes-i].out * is_consecutive[msg_bytes-1-i][0]; + } + signal is_substr0[msg_bytes][6]; + signal is_reveal0[msg_bytes]; + signal output reveal0[msg_bytes]; + for (var i = 0; i < msg_bytes; i++) { + is_substr0[i][0] <== 0; + is_substr0[i][1] <== is_substr0[i][0] + states[i+1][1] * states[i+2][2]; + is_substr0[i][2] <== is_substr0[i][1] + states[i+1][2] * states[i+2][3]; + is_substr0[i][3] <== is_substr0[i][2] + states[i+1][1] * states[i+2][1]; + is_substr0[i][4] <== is_substr0[i][3] + states[i+1][0] * states[i+2][1]; + is_substr0[i][5] <== is_substr0[i][4] + states[i+1][3] * states[i+2][3]; + is_reveal0[i] <== is_substr0[i][5] * is_consecutive[i][1]; + reveal0[i] <== in[i+1] * is_reveal0[i]; + } +} \ No newline at end of file diff --git a/packages/circom/circuits/common/email_domain.json b/packages/circom/circuits/common/email_domain.json new file mode 100644 index 0000000..33ee127 --- /dev/null +++ b/packages/circom/circuits/common/email_domain.json @@ -0,0 +1,20 @@ +{ + "max_byte_size": 256, + "parts": [ + { + "is_public": false, + "regex_def": "(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\.|_|%|\\+|-|=)+", + "max_size": 64 + }, + { + "is_public": false, + "regex_def": "@", + "max_size": 1 + }, + { + "is_public": true, + "regex_def": "(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\.|-)+", + "max_size": 255 + } + ] +} \ No newline at end of file diff --git a/packages/circom/circuits/common/email_domain_regex.circom b/packages/circom/circuits/common/email_domain_regex.circom new file mode 100644 index 0000000..1979cdf --- /dev/null +++ b/packages/circom/circuits/common/email_domain_regex.circom @@ -0,0 +1,273 @@ +pragma circom 2.1.5; + +include "zk-regex-circom/circuits/regex_helpers.circom"; + +template EmailDomainRegex(msg_bytes) { + signal input msg[msg_bytes]; + signal output out; + + var num_bytes = msg_bytes+1; + signal in[num_bytes]; + in[0]<==128; + for (var i = 0; i < msg_bytes; i++) { + in[i+1] <== msg[i]; + } + + component eq[17][num_bytes]; + component lt[24][num_bytes]; + component and[17][num_bytes]; + component multi_or[6][num_bytes]; + signal states[num_bytes+1][4]; + component state_changed[num_bytes]; + + states[0][0] <== 1; + for (var i = 1; i < 4; i++) { + states[0][i] <== 0; + } + + for (var i = 0; i < num_bytes; i++) { + state_changed[i] = MultiOR(3); + lt[0][i] = LessThan(8); + lt[0][i].in[0] <== 47; + lt[0][i].in[1] <== in[i]; + lt[1][i] = LessThan(8); + lt[1][i].in[0] <== in[i]; + lt[1][i].in[1] <== 58; + and[0][i] = AND(); + and[0][i].a <== lt[0][i].out; + and[0][i].b <== lt[1][i].out; + lt[2][i] = LessThan(8); + lt[2][i].in[0] <== 64; + lt[2][i].in[1] <== in[i]; + lt[3][i] = LessThan(8); + lt[3][i].in[0] <== in[i]; + lt[3][i].in[1] <== 91; + and[1][i] = AND(); + and[1][i].a <== lt[2][i].out; + and[1][i].b <== lt[3][i].out; + lt[4][i] = LessThan(8); + lt[4][i].in[0] <== 96; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 123; + and[2][i] = AND(); + and[2][i].a <== lt[4][i].out; + and[2][i].b <== lt[5][i].out; + eq[0][i] = IsEqual(); + eq[0][i].in[0] <== in[i]; + eq[0][i].in[1] <== 37; + eq[1][i] = IsEqual(); + eq[1][i].in[0] <== in[i]; + eq[1][i].in[1] <== 43; + eq[2][i] = IsEqual(); + eq[2][i].in[0] <== in[i]; + eq[2][i].in[1] <== 45; + eq[3][i] = IsEqual(); + eq[3][i].in[0] <== in[i]; + eq[3][i].in[1] <== 46; + eq[4][i] = IsEqual(); + eq[4][i].in[0] <== in[i]; + eq[4][i].in[1] <== 61; + eq[5][i] = IsEqual(); + eq[5][i].in[0] <== in[i]; + eq[5][i].in[1] <== 95; + and[3][i] = AND(); + and[3][i].a <== states[i][0]; + multi_or[0][i] = MultiOR(9); + multi_or[0][i].in[0] <== and[0][i].out; + multi_or[0][i].in[1] <== and[1][i].out; + multi_or[0][i].in[2] <== and[2][i].out; + multi_or[0][i].in[3] <== eq[0][i].out; + multi_or[0][i].in[4] <== eq[1][i].out; + multi_or[0][i].in[5] <== eq[2][i].out; + multi_or[0][i].in[6] <== eq[3][i].out; + multi_or[0][i].in[7] <== eq[4][i].out; + multi_or[0][i].in[8] <== eq[5][i].out; + and[3][i].b <== multi_or[0][i].out; + lt[6][i] = LessThan(8); + lt[6][i].in[0] <== 47; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 58; + and[4][i] = AND(); + and[4][i].a <== lt[6][i].out; + and[4][i].b <== lt[7][i].out; + lt[8][i] = LessThan(8); + lt[8][i].in[0] <== 64; + lt[8][i].in[1] <== in[i]; + lt[9][i] = LessThan(8); + lt[9][i].in[0] <== in[i]; + lt[9][i].in[1] <== 91; + and[5][i] = AND(); + and[5][i].a <== lt[8][i].out; + and[5][i].b <== lt[9][i].out; + lt[10][i] = LessThan(8); + lt[10][i].in[0] <== 96; + lt[10][i].in[1] <== in[i]; + lt[11][i] = LessThan(8); + lt[11][i].in[0] <== in[i]; + lt[11][i].in[1] <== 123; + and[6][i] = AND(); + and[6][i].a <== lt[10][i].out; + and[6][i].b <== lt[11][i].out; + eq[6][i] = IsEqual(); + eq[6][i].in[0] <== in[i]; + eq[6][i].in[1] <== 37; + eq[7][i] = IsEqual(); + eq[7][i].in[0] <== in[i]; + eq[7][i].in[1] <== 43; + eq[8][i] = IsEqual(); + eq[8][i].in[0] <== in[i]; + eq[8][i].in[1] <== 45; + eq[9][i] = IsEqual(); + eq[9][i].in[0] <== in[i]; + eq[9][i].in[1] <== 46; + eq[10][i] = IsEqual(); + eq[10][i].in[0] <== in[i]; + eq[10][i].in[1] <== 61; + eq[11][i] = IsEqual(); + eq[11][i].in[0] <== in[i]; + eq[11][i].in[1] <== 95; + and[7][i] = AND(); + and[7][i].a <== states[i][1]; + multi_or[1][i] = MultiOR(9); + multi_or[1][i].in[0] <== and[4][i].out; + multi_or[1][i].in[1] <== and[5][i].out; + multi_or[1][i].in[2] <== and[6][i].out; + multi_or[1][i].in[3] <== eq[6][i].out; + multi_or[1][i].in[4] <== eq[7][i].out; + multi_or[1][i].in[5] <== eq[8][i].out; + multi_or[1][i].in[6] <== eq[9][i].out; + multi_or[1][i].in[7] <== eq[10][i].out; + multi_or[1][i].in[8] <== eq[11][i].out; + and[7][i].b <== multi_or[1][i].out; + multi_or[2][i] = MultiOR(2); + multi_or[2][i].in[0] <== and[3][i].out; + multi_or[2][i].in[1] <== and[7][i].out; + states[i+1][1] <== multi_or[2][i].out; + state_changed[i].in[0] <== states[i+1][1]; + eq[12][i] = IsEqual(); + eq[12][i].in[0] <== in[i]; + eq[12][i].in[1] <== 64; + and[8][i] = AND(); + and[8][i].a <== states[i][1]; + and[8][i].b <== eq[12][i].out; + states[i+1][2] <== and[8][i].out; + state_changed[i].in[1] <== states[i+1][2]; + lt[12][i] = LessThan(8); + lt[12][i].in[0] <== 47; + lt[12][i].in[1] <== in[i]; + lt[13][i] = LessThan(8); + lt[13][i].in[0] <== in[i]; + lt[13][i].in[1] <== 58; + and[9][i] = AND(); + and[9][i].a <== lt[12][i].out; + and[9][i].b <== lt[13][i].out; + lt[14][i] = LessThan(8); + lt[14][i].in[0] <== 64; + lt[14][i].in[1] <== in[i]; + lt[15][i] = LessThan(8); + lt[15][i].in[0] <== in[i]; + lt[15][i].in[1] <== 91; + and[10][i] = AND(); + and[10][i].a <== lt[14][i].out; + and[10][i].b <== lt[15][i].out; + lt[16][i] = LessThan(8); + lt[16][i].in[0] <== 96; + lt[16][i].in[1] <== in[i]; + lt[17][i] = LessThan(8); + lt[17][i].in[0] <== in[i]; + lt[17][i].in[1] <== 123; + and[11][i] = AND(); + and[11][i].a <== lt[16][i].out; + and[11][i].b <== lt[17][i].out; + eq[13][i] = IsEqual(); + eq[13][i].in[0] <== in[i]; + eq[13][i].in[1] <== 45; + eq[14][i] = IsEqual(); + eq[14][i].in[0] <== in[i]; + eq[14][i].in[1] <== 46; + and[12][i] = AND(); + and[12][i].a <== states[i][2]; + multi_or[3][i] = MultiOR(5); + multi_or[3][i].in[0] <== and[9][i].out; + multi_or[3][i].in[1] <== and[10][i].out; + multi_or[3][i].in[2] <== and[11][i].out; + multi_or[3][i].in[3] <== eq[13][i].out; + multi_or[3][i].in[4] <== eq[14][i].out; + and[12][i].b <== multi_or[3][i].out; + lt[18][i] = LessThan(8); + lt[18][i].in[0] <== 47; + lt[18][i].in[1] <== in[i]; + lt[19][i] = LessThan(8); + lt[19][i].in[0] <== in[i]; + lt[19][i].in[1] <== 58; + and[13][i] = AND(); + and[13][i].a <== lt[18][i].out; + and[13][i].b <== lt[19][i].out; + lt[20][i] = LessThan(8); + lt[20][i].in[0] <== 64; + lt[20][i].in[1] <== in[i]; + lt[21][i] = LessThan(8); + lt[21][i].in[0] <== in[i]; + lt[21][i].in[1] <== 91; + and[14][i] = AND(); + and[14][i].a <== lt[20][i].out; + and[14][i].b <== lt[21][i].out; + lt[22][i] = LessThan(8); + lt[22][i].in[0] <== 96; + lt[22][i].in[1] <== in[i]; + lt[23][i] = LessThan(8); + lt[23][i].in[0] <== in[i]; + lt[23][i].in[1] <== 123; + and[15][i] = AND(); + and[15][i].a <== lt[22][i].out; + and[15][i].b <== lt[23][i].out; + eq[15][i] = IsEqual(); + eq[15][i].in[0] <== in[i]; + eq[15][i].in[1] <== 45; + eq[16][i] = IsEqual(); + eq[16][i].in[0] <== in[i]; + eq[16][i].in[1] <== 46; + and[16][i] = AND(); + and[16][i].a <== states[i][3]; + multi_or[4][i] = MultiOR(5); + multi_or[4][i].in[0] <== and[13][i].out; + multi_or[4][i].in[1] <== and[14][i].out; + multi_or[4][i].in[2] <== and[15][i].out; + multi_or[4][i].in[3] <== eq[15][i].out; + multi_or[4][i].in[4] <== eq[16][i].out; + and[16][i].b <== multi_or[4][i].out; + multi_or[5][i] = MultiOR(2); + multi_or[5][i].in[0] <== and[12][i].out; + multi_or[5][i].in[1] <== and[16][i].out; + states[i+1][3] <== multi_or[5][i].out; + state_changed[i].in[2] <== states[i+1][3]; + states[i+1][0] <== 1 - state_changed[i].out; + } + + component final_state_result = MultiOR(num_bytes+1); + for (var i = 0; i <= num_bytes; i++) { + final_state_result.in[i] <== states[i][3]; + } + out <== final_state_result.out; + + signal is_consecutive[msg_bytes+1][2]; + is_consecutive[msg_bytes][1] <== 1; + for (var i = 0; i < msg_bytes; i++) { + is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][3] * (1 - is_consecutive[msg_bytes-i][1]) + is_consecutive[msg_bytes-i][1]; + is_consecutive[msg_bytes-1-i][1] <== state_changed[msg_bytes-i].out * is_consecutive[msg_bytes-1-i][0]; + } + signal is_substr0[msg_bytes][3]; + signal is_reveal0[msg_bytes]; + signal output reveal0[msg_bytes]; + for (var i = 0; i < msg_bytes; i++) { + is_substr0[i][0] <== 0; + is_substr0[i][1] <== is_substr0[i][0] + states[i+1][2] * states[i+2][3]; + is_substr0[i][2] <== is_substr0[i][1] + states[i+1][3] * states[i+2][3]; + is_reveal0[i] <== is_substr0[i][2] * is_consecutive[i][1]; + reveal0[i] <== in[i+1] * is_reveal0[i]; + } +} \ No newline at end of file diff --git a/packages/circom/circuits/common/from_addr.json b/packages/circom/circuits/common/from_addr.json new file mode 100644 index 0000000..07fa259 --- /dev/null +++ b/packages/circom/circuits/common/from_addr.json @@ -0,0 +1,25 @@ +{ + "max_byte_size": 1024, + "parts": [ + { + "is_public": false, + "regex_def": "((\r\n)|^)from:", + "max_size": 7 + }, + { + "is_public": false, + "regex_def": "((a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_|\\.|\"| |@)+<)?", + "max_size": 256 + }, + { + "is_public": true, + "regex_def": "(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_|\\.|-)+@(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_|\\.|-)+", + "max_size": 256 + }, + { + "is_public": false, + "regex_def": ">?\r\n", + "max_size": 3 + } + ] +} \ No newline at end of file diff --git a/packages/circom/circuits/common/from_addr_regex.circom b/packages/circom/circuits/common/from_addr_regex.circom new file mode 100644 index 0000000..f95e7ad --- /dev/null +++ b/packages/circom/circuits/common/from_addr_regex.circom @@ -0,0 +1,759 @@ +pragma circom 2.1.5; + +include "zk-regex-circom/circuits/regex_helpers.circom"; + +template FromAddrRegex(msg_bytes) { + signal input msg[msg_bytes]; + signal output out; + + var num_bytes = msg_bytes+1; + signal in[num_bytes]; + in[0]<==128; + for (var i = 0; i < msg_bytes; i++) { + in[i+1] <== msg[i]; + } + + component eq[61][num_bytes]; + component lt[54][num_bytes]; + component and[65][num_bytes]; + component multi_or[23][num_bytes]; + signal states[num_bytes+1][19]; + component state_changed[num_bytes]; + + states[0][0] <== 1; + for (var i = 1; i < 19; i++) { + states[0][i] <== 0; + } + + for (var i = 0; i < num_bytes; i++) { + state_changed[i] = MultiOR(18); + lt[0][i] = LessThan(8); + lt[0][i].in[0] <== 47; + lt[0][i].in[1] <== in[i]; + lt[1][i] = LessThan(8); + lt[1][i].in[0] <== in[i]; + lt[1][i].in[1] <== 58; + and[0][i] = AND(); + and[0][i].a <== lt[0][i].out; + and[0][i].b <== lt[1][i].out; + lt[2][i] = LessThan(8); + lt[2][i].in[0] <== 64; + lt[2][i].in[1] <== in[i]; + lt[3][i] = LessThan(8); + lt[3][i].in[0] <== in[i]; + lt[3][i].in[1] <== 91; + and[1][i] = AND(); + and[1][i].a <== lt[2][i].out; + and[1][i].b <== lt[3][i].out; + lt[4][i] = LessThan(8); + lt[4][i].in[0] <== 96; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 123; + and[2][i] = AND(); + and[2][i].a <== lt[4][i].out; + and[2][i].b <== lt[5][i].out; + eq[0][i] = IsEqual(); + eq[0][i].in[0] <== in[i]; + eq[0][i].in[1] <== 46; + eq[1][i] = IsEqual(); + eq[1][i].in[0] <== in[i]; + eq[1][i].in[1] <== 95; + and[3][i] = AND(); + and[3][i].a <== states[i][1]; + multi_or[0][i] = MultiOR(5); + multi_or[0][i].in[0] <== and[0][i].out; + multi_or[0][i].in[1] <== and[1][i].out; + multi_or[0][i].in[2] <== and[2][i].out; + multi_or[0][i].in[3] <== eq[0][i].out; + multi_or[0][i].in[4] <== eq[1][i].out; + and[3][i].b <== multi_or[0][i].out; + lt[6][i] = LessThan(8); + lt[6][i].in[0] <== 47; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 58; + and[4][i] = AND(); + and[4][i].a <== lt[6][i].out; + and[4][i].b <== lt[7][i].out; + lt[8][i] = LessThan(8); + lt[8][i].in[0] <== 64; + lt[8][i].in[1] <== in[i]; + lt[9][i] = LessThan(8); + lt[9][i].in[0] <== in[i]; + lt[9][i].in[1] <== 91; + and[5][i] = AND(); + and[5][i].a <== lt[8][i].out; + and[5][i].b <== lt[9][i].out; + lt[10][i] = LessThan(8); + lt[10][i].in[0] <== 96; + lt[10][i].in[1] <== in[i]; + lt[11][i] = LessThan(8); + lt[11][i].in[0] <== in[i]; + lt[11][i].in[1] <== 123; + and[6][i] = AND(); + and[6][i].a <== lt[10][i].out; + and[6][i].b <== lt[11][i].out; + eq[2][i] = IsEqual(); + eq[2][i].in[0] <== in[i]; + eq[2][i].in[1] <== 46; + eq[3][i] = IsEqual(); + eq[3][i].in[0] <== in[i]; + eq[3][i].in[1] <== 95; + and[7][i] = AND(); + and[7][i].a <== states[i][13]; + multi_or[1][i] = MultiOR(5); + multi_or[1][i].in[0] <== and[4][i].out; + multi_or[1][i].in[1] <== and[5][i].out; + multi_or[1][i].in[2] <== and[6][i].out; + multi_or[1][i].in[3] <== eq[2][i].out; + multi_or[1][i].in[4] <== eq[3][i].out; + and[7][i].b <== multi_or[1][i].out; + multi_or[2][i] = MultiOR(2); + multi_or[2][i].in[0] <== and[3][i].out; + multi_or[2][i].in[1] <== and[7][i].out; + states[i+1][1] <== multi_or[2][i].out; + state_changed[i].in[0] <== states[i+1][1]; + eq[4][i] = IsEqual(); + eq[4][i].in[0] <== in[i]; + eq[4][i].in[1] <== 13; + and[8][i] = AND(); + and[8][i].a <== states[i][0]; + and[8][i].b <== eq[4][i].out; + eq[5][i] = IsEqual(); + eq[5][i].in[0] <== in[i]; + eq[5][i].in[1] <== 13; + and[9][i] = AND(); + and[9][i].a <== states[i][4]; + and[9][i].b <== eq[5][i].out; + multi_or[3][i] = MultiOR(2); + multi_or[3][i].in[0] <== and[8][i].out; + multi_or[3][i].in[1] <== and[9][i].out; + states[i+1][2] <== multi_or[3][i].out; + state_changed[i].in[1] <== states[i+1][2]; + eq[6][i] = IsEqual(); + eq[6][i].in[0] <== in[i]; + eq[6][i].in[1] <== 32; + eq[7][i] = IsEqual(); + eq[7][i].in[0] <== in[i]; + eq[7][i].in[1] <== 34; + and[10][i] = AND(); + and[10][i].a <== states[i][1]; + multi_or[4][i] = MultiOR(2); + multi_or[4][i].in[0] <== eq[6][i].out; + multi_or[4][i].in[1] <== eq[7][i].out; + and[10][i].b <== multi_or[4][i].out; + lt[12][i] = LessThan(8); + lt[12][i].in[0] <== 47; + lt[12][i].in[1] <== in[i]; + lt[13][i] = LessThan(8); + lt[13][i].in[0] <== in[i]; + lt[13][i].in[1] <== 58; + and[11][i] = AND(); + and[11][i].a <== lt[12][i].out; + and[11][i].b <== lt[13][i].out; + lt[14][i] = LessThan(8); + lt[14][i].in[0] <== 64; + lt[14][i].in[1] <== in[i]; + lt[15][i] = LessThan(8); + lt[15][i].in[0] <== in[i]; + lt[15][i].in[1] <== 91; + and[12][i] = AND(); + and[12][i].a <== lt[14][i].out; + and[12][i].b <== lt[15][i].out; + lt[16][i] = LessThan(8); + lt[16][i].in[0] <== 96; + lt[16][i].in[1] <== in[i]; + lt[17][i] = LessThan(8); + lt[17][i].in[0] <== in[i]; + lt[17][i].in[1] <== 123; + and[13][i] = AND(); + and[13][i].a <== lt[16][i].out; + and[13][i].b <== lt[17][i].out; + eq[8][i] = IsEqual(); + eq[8][i].in[0] <== in[i]; + eq[8][i].in[1] <== 32; + eq[9][i] = IsEqual(); + eq[9][i].in[0] <== in[i]; + eq[9][i].in[1] <== 34; + eq[10][i] = IsEqual(); + eq[10][i].in[0] <== in[i]; + eq[10][i].in[1] <== 46; + eq[11][i] = IsEqual(); + eq[11][i].in[0] <== in[i]; + eq[11][i].in[1] <== 64; + eq[12][i] = IsEqual(); + eq[12][i].in[0] <== in[i]; + eq[12][i].in[1] <== 95; + and[14][i] = AND(); + and[14][i].a <== states[i][3]; + multi_or[5][i] = MultiOR(8); + multi_or[5][i].in[0] <== and[11][i].out; + multi_or[5][i].in[1] <== and[12][i].out; + multi_or[5][i].in[2] <== and[13][i].out; + multi_or[5][i].in[3] <== eq[8][i].out; + multi_or[5][i].in[4] <== eq[9][i].out; + multi_or[5][i].in[5] <== eq[10][i].out; + multi_or[5][i].in[6] <== eq[11][i].out; + multi_or[5][i].in[7] <== eq[12][i].out; + and[14][i].b <== multi_or[5][i].out; + eq[13][i] = IsEqual(); + eq[13][i].in[0] <== in[i]; + eq[13][i].in[1] <== 32; + eq[14][i] = IsEqual(); + eq[14][i].in[0] <== in[i]; + eq[14][i].in[1] <== 34; + eq[15][i] = IsEqual(); + eq[15][i].in[0] <== in[i]; + eq[15][i].in[1] <== 64; + and[15][i] = AND(); + and[15][i].a <== states[i][12]; + multi_or[6][i] = MultiOR(3); + multi_or[6][i].in[0] <== eq[13][i].out; + multi_or[6][i].in[1] <== eq[14][i].out; + multi_or[6][i].in[2] <== eq[15][i].out; + and[15][i].b <== multi_or[6][i].out; + eq[16][i] = IsEqual(); + eq[16][i].in[0] <== in[i]; + eq[16][i].in[1] <== 32; + eq[17][i] = IsEqual(); + eq[17][i].in[0] <== in[i]; + eq[17][i].in[1] <== 34; + eq[18][i] = IsEqual(); + eq[18][i].in[0] <== in[i]; + eq[18][i].in[1] <== 64; + and[16][i] = AND(); + and[16][i].a <== states[i][13]; + multi_or[7][i] = MultiOR(3); + multi_or[7][i].in[0] <== eq[16][i].out; + multi_or[7][i].in[1] <== eq[17][i].out; + multi_or[7][i].in[2] <== eq[18][i].out; + and[16][i].b <== multi_or[7][i].out; + eq[19][i] = IsEqual(); + eq[19][i].in[0] <== in[i]; + eq[19][i].in[1] <== 32; + eq[20][i] = IsEqual(); + eq[20][i].in[0] <== in[i]; + eq[20][i].in[1] <== 34; + eq[21][i] = IsEqual(); + eq[21][i].in[0] <== in[i]; + eq[21][i].in[1] <== 64; + and[17][i] = AND(); + and[17][i].a <== states[i][15]; + multi_or[8][i] = MultiOR(3); + multi_or[8][i].in[0] <== eq[19][i].out; + multi_or[8][i].in[1] <== eq[20][i].out; + multi_or[8][i].in[2] <== eq[21][i].out; + and[17][i].b <== multi_or[8][i].out; + multi_or[9][i] = MultiOR(5); + multi_or[9][i].in[0] <== and[10][i].out; + multi_or[9][i].in[1] <== and[14][i].out; + multi_or[9][i].in[2] <== and[15][i].out; + multi_or[9][i].in[3] <== and[16][i].out; + multi_or[9][i].in[4] <== and[17][i].out; + states[i+1][3] <== multi_or[9][i].out; + state_changed[i].in[2] <== states[i+1][3]; + eq[22][i] = IsEqual(); + eq[22][i].in[0] <== in[i]; + eq[22][i].in[1] <== 128; + and[18][i] = AND(); + and[18][i].a <== states[i][0]; + and[18][i].b <== eq[22][i].out; + eq[23][i] = IsEqual(); + eq[23][i].in[0] <== in[i]; + eq[23][i].in[1] <== 10; + and[19][i] = AND(); + and[19][i].a <== states[i][2]; + and[19][i].b <== eq[23][i].out; + multi_or[10][i] = MultiOR(2); + multi_or[10][i].in[0] <== and[18][i].out; + multi_or[10][i].in[1] <== and[19][i].out; + states[i+1][4] <== multi_or[10][i].out; + state_changed[i].in[3] <== states[i+1][4]; + eq[24][i] = IsEqual(); + eq[24][i].in[0] <== in[i]; + eq[24][i].in[1] <== 60; + and[20][i] = AND(); + and[20][i].a <== states[i][1]; + and[20][i].b <== eq[24][i].out; + eq[25][i] = IsEqual(); + eq[25][i].in[0] <== in[i]; + eq[25][i].in[1] <== 60; + and[21][i] = AND(); + and[21][i].a <== states[i][3]; + and[21][i].b <== eq[25][i].out; + eq[26][i] = IsEqual(); + eq[26][i].in[0] <== in[i]; + eq[26][i].in[1] <== 60; + and[22][i] = AND(); + and[22][i].a <== states[i][12]; + and[22][i].b <== eq[26][i].out; + eq[27][i] = IsEqual(); + eq[27][i].in[0] <== in[i]; + eq[27][i].in[1] <== 60; + and[23][i] = AND(); + and[23][i].a <== states[i][15]; + and[23][i].b <== eq[27][i].out; + multi_or[11][i] = MultiOR(4); + multi_or[11][i].in[0] <== and[20][i].out; + multi_or[11][i].in[1] <== and[21][i].out; + multi_or[11][i].in[2] <== and[22][i].out; + multi_or[11][i].in[3] <== and[23][i].out; + states[i+1][5] <== multi_or[11][i].out; + state_changed[i].in[4] <== states[i+1][5]; + eq[28][i] = IsEqual(); + eq[28][i].in[0] <== in[i]; + eq[28][i].in[1] <== 102; + and[24][i] = AND(); + and[24][i].a <== states[i][4]; + and[24][i].b <== eq[28][i].out; + states[i+1][6] <== and[24][i].out; + state_changed[i].in[5] <== states[i+1][6]; + eq[29][i] = IsEqual(); + eq[29][i].in[0] <== in[i]; + eq[29][i].in[1] <== 45; + and[25][i] = AND(); + and[25][i].a <== states[i][1]; + and[25][i].b <== eq[29][i].out; + lt[18][i] = LessThan(8); + lt[18][i].in[0] <== 47; + lt[18][i].in[1] <== in[i]; + lt[19][i] = LessThan(8); + lt[19][i].in[0] <== in[i]; + lt[19][i].in[1] <== 58; + and[26][i] = AND(); + and[26][i].a <== lt[18][i].out; + and[26][i].b <== lt[19][i].out; + lt[20][i] = LessThan(8); + lt[20][i].in[0] <== 64; + lt[20][i].in[1] <== in[i]; + lt[21][i] = LessThan(8); + lt[21][i].in[0] <== in[i]; + lt[21][i].in[1] <== 91; + and[27][i] = AND(); + and[27][i].a <== lt[20][i].out; + and[27][i].b <== lt[21][i].out; + lt[22][i] = LessThan(8); + lt[22][i].in[0] <== 96; + lt[22][i].in[1] <== in[i]; + lt[23][i] = LessThan(8); + lt[23][i].in[0] <== in[i]; + lt[23][i].in[1] <== 123; + and[28][i] = AND(); + and[28][i].a <== lt[22][i].out; + and[28][i].b <== lt[23][i].out; + eq[30][i] = IsEqual(); + eq[30][i].in[0] <== in[i]; + eq[30][i].in[1] <== 45; + eq[31][i] = IsEqual(); + eq[31][i].in[0] <== in[i]; + eq[31][i].in[1] <== 46; + eq[32][i] = IsEqual(); + eq[32][i].in[0] <== in[i]; + eq[32][i].in[1] <== 95; + and[29][i] = AND(); + and[29][i].a <== states[i][5]; + multi_or[12][i] = MultiOR(6); + multi_or[12][i].in[0] <== and[26][i].out; + multi_or[12][i].in[1] <== and[27][i].out; + multi_or[12][i].in[2] <== and[28][i].out; + multi_or[12][i].in[3] <== eq[30][i].out; + multi_or[12][i].in[4] <== eq[31][i].out; + multi_or[12][i].in[5] <== eq[32][i].out; + and[29][i].b <== multi_or[12][i].out; + lt[24][i] = LessThan(8); + lt[24][i].in[0] <== 47; + lt[24][i].in[1] <== in[i]; + lt[25][i] = LessThan(8); + lt[25][i].in[0] <== in[i]; + lt[25][i].in[1] <== 58; + and[30][i] = AND(); + and[30][i].a <== lt[24][i].out; + and[30][i].b <== lt[25][i].out; + lt[26][i] = LessThan(8); + lt[26][i].in[0] <== 64; + lt[26][i].in[1] <== in[i]; + lt[27][i] = LessThan(8); + lt[27][i].in[0] <== in[i]; + lt[27][i].in[1] <== 91; + and[31][i] = AND(); + and[31][i].a <== lt[26][i].out; + and[31][i].b <== lt[27][i].out; + lt[28][i] = LessThan(8); + lt[28][i].in[0] <== 96; + lt[28][i].in[1] <== in[i]; + lt[29][i] = LessThan(8); + lt[29][i].in[0] <== in[i]; + lt[29][i].in[1] <== 123; + and[32][i] = AND(); + and[32][i].a <== lt[28][i].out; + and[32][i].b <== lt[29][i].out; + eq[33][i] = IsEqual(); + eq[33][i].in[0] <== in[i]; + eq[33][i].in[1] <== 45; + eq[34][i] = IsEqual(); + eq[34][i].in[0] <== in[i]; + eq[34][i].in[1] <== 46; + eq[35][i] = IsEqual(); + eq[35][i].in[0] <== in[i]; + eq[35][i].in[1] <== 95; + and[33][i] = AND(); + and[33][i].a <== states[i][7]; + multi_or[13][i] = MultiOR(6); + multi_or[13][i].in[0] <== and[30][i].out; + multi_or[13][i].in[1] <== and[31][i].out; + multi_or[13][i].in[2] <== and[32][i].out; + multi_or[13][i].in[3] <== eq[33][i].out; + multi_or[13][i].in[4] <== eq[34][i].out; + multi_or[13][i].in[5] <== eq[35][i].out; + and[33][i].b <== multi_or[13][i].out; + eq[36][i] = IsEqual(); + eq[36][i].in[0] <== in[i]; + eq[36][i].in[1] <== 45; + and[34][i] = AND(); + and[34][i].a <== states[i][13]; + and[34][i].b <== eq[36][i].out; + multi_or[14][i] = MultiOR(4); + multi_or[14][i].in[0] <== and[25][i].out; + multi_or[14][i].in[1] <== and[29][i].out; + multi_or[14][i].in[2] <== and[33][i].out; + multi_or[14][i].in[3] <== and[34][i].out; + states[i+1][7] <== multi_or[14][i].out; + state_changed[i].in[6] <== states[i+1][7]; + eq[37][i] = IsEqual(); + eq[37][i].in[0] <== in[i]; + eq[37][i].in[1] <== 114; + and[35][i] = AND(); + and[35][i].a <== states[i][6]; + and[35][i].b <== eq[37][i].out; + states[i+1][8] <== and[35][i].out; + state_changed[i].in[7] <== states[i+1][8]; + eq[38][i] = IsEqual(); + eq[38][i].in[0] <== in[i]; + eq[38][i].in[1] <== 64; + and[36][i] = AND(); + and[36][i].a <== states[i][7]; + and[36][i].b <== eq[38][i].out; + states[i+1][9] <== and[36][i].out; + state_changed[i].in[8] <== states[i+1][9]; + eq[39][i] = IsEqual(); + eq[39][i].in[0] <== in[i]; + eq[39][i].in[1] <== 111; + and[37][i] = AND(); + and[37][i].a <== states[i][8]; + and[37][i].b <== eq[39][i].out; + states[i+1][10] <== and[37][i].out; + state_changed[i].in[9] <== states[i+1][10]; + eq[40][i] = IsEqual(); + eq[40][i].in[0] <== in[i]; + eq[40][i].in[1] <== 109; + and[38][i] = AND(); + and[38][i].a <== states[i][10]; + and[38][i].b <== eq[40][i].out; + states[i+1][11] <== and[38][i].out; + state_changed[i].in[10] <== states[i+1][11]; + eq[41][i] = IsEqual(); + eq[41][i].in[0] <== in[i]; + eq[41][i].in[1] <== 64; + and[39][i] = AND(); + and[39][i].a <== states[i][1]; + and[39][i].b <== eq[41][i].out; + states[i+1][12] <== and[39][i].out; + state_changed[i].in[11] <== states[i+1][12]; + eq[42][i] = IsEqual(); + eq[42][i].in[0] <== in[i]; + eq[42][i].in[1] <== 58; + and[40][i] = AND(); + and[40][i].a <== states[i][11]; + and[40][i].b <== eq[42][i].out; + states[i+1][13] <== and[40][i].out; + state_changed[i].in[12] <== states[i+1][13]; + lt[30][i] = LessThan(8); + lt[30][i].in[0] <== 47; + lt[30][i].in[1] <== in[i]; + lt[31][i] = LessThan(8); + lt[31][i].in[0] <== in[i]; + lt[31][i].in[1] <== 58; + and[41][i] = AND(); + and[41][i].a <== lt[30][i].out; + and[41][i].b <== lt[31][i].out; + lt[32][i] = LessThan(8); + lt[32][i].in[0] <== 64; + lt[32][i].in[1] <== in[i]; + lt[33][i] = LessThan(8); + lt[33][i].in[0] <== in[i]; + lt[33][i].in[1] <== 91; + and[42][i] = AND(); + and[42][i].a <== lt[32][i].out; + and[42][i].b <== lt[33][i].out; + lt[34][i] = LessThan(8); + lt[34][i].in[0] <== 96; + lt[34][i].in[1] <== in[i]; + lt[35][i] = LessThan(8); + lt[35][i].in[0] <== in[i]; + lt[35][i].in[1] <== 123; + and[43][i] = AND(); + and[43][i].a <== lt[34][i].out; + and[43][i].b <== lt[35][i].out; + eq[43][i] = IsEqual(); + eq[43][i].in[0] <== in[i]; + eq[43][i].in[1] <== 45; + eq[44][i] = IsEqual(); + eq[44][i].in[0] <== in[i]; + eq[44][i].in[1] <== 46; + eq[45][i] = IsEqual(); + eq[45][i].in[0] <== in[i]; + eq[45][i].in[1] <== 95; + and[44][i] = AND(); + and[44][i].a <== states[i][9]; + multi_or[15][i] = MultiOR(6); + multi_or[15][i].in[0] <== and[41][i].out; + multi_or[15][i].in[1] <== and[42][i].out; + multi_or[15][i].in[2] <== and[43][i].out; + multi_or[15][i].in[3] <== eq[43][i].out; + multi_or[15][i].in[4] <== eq[44][i].out; + multi_or[15][i].in[5] <== eq[45][i].out; + and[44][i].b <== multi_or[15][i].out; + eq[46][i] = IsEqual(); + eq[46][i].in[0] <== in[i]; + eq[46][i].in[1] <== 45; + and[45][i] = AND(); + and[45][i].a <== states[i][12]; + and[45][i].b <== eq[46][i].out; + lt[36][i] = LessThan(8); + lt[36][i].in[0] <== 47; + lt[36][i].in[1] <== in[i]; + lt[37][i] = LessThan(8); + lt[37][i].in[0] <== in[i]; + lt[37][i].in[1] <== 58; + and[46][i] = AND(); + and[46][i].a <== lt[36][i].out; + and[46][i].b <== lt[37][i].out; + lt[38][i] = LessThan(8); + lt[38][i].in[0] <== 64; + lt[38][i].in[1] <== in[i]; + lt[39][i] = LessThan(8); + lt[39][i].in[0] <== in[i]; + lt[39][i].in[1] <== 91; + and[47][i] = AND(); + and[47][i].a <== lt[38][i].out; + and[47][i].b <== lt[39][i].out; + lt[40][i] = LessThan(8); + lt[40][i].in[0] <== 96; + lt[40][i].in[1] <== in[i]; + lt[41][i] = LessThan(8); + lt[41][i].in[0] <== in[i]; + lt[41][i].in[1] <== 123; + and[48][i] = AND(); + and[48][i].a <== lt[40][i].out; + and[48][i].b <== lt[41][i].out; + eq[47][i] = IsEqual(); + eq[47][i].in[0] <== in[i]; + eq[47][i].in[1] <== 45; + eq[48][i] = IsEqual(); + eq[48][i].in[0] <== in[i]; + eq[48][i].in[1] <== 46; + eq[49][i] = IsEqual(); + eq[49][i].in[0] <== in[i]; + eq[49][i].in[1] <== 95; + and[49][i] = AND(); + and[49][i].a <== states[i][14]; + multi_or[16][i] = MultiOR(6); + multi_or[16][i].in[0] <== and[46][i].out; + multi_or[16][i].in[1] <== and[47][i].out; + multi_or[16][i].in[2] <== and[48][i].out; + multi_or[16][i].in[3] <== eq[47][i].out; + multi_or[16][i].in[4] <== eq[48][i].out; + multi_or[16][i].in[5] <== eq[49][i].out; + and[49][i].b <== multi_or[16][i].out; + eq[50][i] = IsEqual(); + eq[50][i].in[0] <== in[i]; + eq[50][i].in[1] <== 45; + and[50][i] = AND(); + and[50][i].a <== states[i][15]; + and[50][i].b <== eq[50][i].out; + multi_or[17][i] = MultiOR(4); + multi_or[17][i].in[0] <== and[44][i].out; + multi_or[17][i].in[1] <== and[45][i].out; + multi_or[17][i].in[2] <== and[49][i].out; + multi_or[17][i].in[3] <== and[50][i].out; + states[i+1][14] <== multi_or[17][i].out; + state_changed[i].in[13] <== states[i+1][14]; + lt[42][i] = LessThan(8); + lt[42][i].in[0] <== 47; + lt[42][i].in[1] <== in[i]; + lt[43][i] = LessThan(8); + lt[43][i].in[0] <== in[i]; + lt[43][i].in[1] <== 58; + and[51][i] = AND(); + and[51][i].a <== lt[42][i].out; + and[51][i].b <== lt[43][i].out; + lt[44][i] = LessThan(8); + lt[44][i].in[0] <== 64; + lt[44][i].in[1] <== in[i]; + lt[45][i] = LessThan(8); + lt[45][i].in[0] <== in[i]; + lt[45][i].in[1] <== 91; + and[52][i] = AND(); + and[52][i].a <== lt[44][i].out; + and[52][i].b <== lt[45][i].out; + lt[46][i] = LessThan(8); + lt[46][i].in[0] <== 96; + lt[46][i].in[1] <== in[i]; + lt[47][i] = LessThan(8); + lt[47][i].in[0] <== in[i]; + lt[47][i].in[1] <== 123; + and[53][i] = AND(); + and[53][i].a <== lt[46][i].out; + and[53][i].b <== lt[47][i].out; + eq[51][i] = IsEqual(); + eq[51][i].in[0] <== in[i]; + eq[51][i].in[1] <== 46; + eq[52][i] = IsEqual(); + eq[52][i].in[0] <== in[i]; + eq[52][i].in[1] <== 95; + and[54][i] = AND(); + and[54][i].a <== states[i][12]; + multi_or[18][i] = MultiOR(5); + multi_or[18][i].in[0] <== and[51][i].out; + multi_or[18][i].in[1] <== and[52][i].out; + multi_or[18][i].in[2] <== and[53][i].out; + multi_or[18][i].in[3] <== eq[51][i].out; + multi_or[18][i].in[4] <== eq[52][i].out; + and[54][i].b <== multi_or[18][i].out; + lt[48][i] = LessThan(8); + lt[48][i].in[0] <== 47; + lt[48][i].in[1] <== in[i]; + lt[49][i] = LessThan(8); + lt[49][i].in[0] <== in[i]; + lt[49][i].in[1] <== 58; + and[55][i] = AND(); + and[55][i].a <== lt[48][i].out; + and[55][i].b <== lt[49][i].out; + lt[50][i] = LessThan(8); + lt[50][i].in[0] <== 64; + lt[50][i].in[1] <== in[i]; + lt[51][i] = LessThan(8); + lt[51][i].in[0] <== in[i]; + lt[51][i].in[1] <== 91; + and[56][i] = AND(); + and[56][i].a <== lt[50][i].out; + and[56][i].b <== lt[51][i].out; + lt[52][i] = LessThan(8); + lt[52][i].in[0] <== 96; + lt[52][i].in[1] <== in[i]; + lt[53][i] = LessThan(8); + lt[53][i].in[0] <== in[i]; + lt[53][i].in[1] <== 123; + and[57][i] = AND(); + and[57][i].a <== lt[52][i].out; + and[57][i].b <== lt[53][i].out; + eq[53][i] = IsEqual(); + eq[53][i].in[0] <== in[i]; + eq[53][i].in[1] <== 46; + eq[54][i] = IsEqual(); + eq[54][i].in[0] <== in[i]; + eq[54][i].in[1] <== 95; + and[58][i] = AND(); + and[58][i].a <== states[i][15]; + multi_or[19][i] = MultiOR(5); + multi_or[19][i].in[0] <== and[55][i].out; + multi_or[19][i].in[1] <== and[56][i].out; + multi_or[19][i].in[2] <== and[57][i].out; + multi_or[19][i].in[3] <== eq[53][i].out; + multi_or[19][i].in[4] <== eq[54][i].out; + and[58][i].b <== multi_or[19][i].out; + multi_or[20][i] = MultiOR(2); + multi_or[20][i].in[0] <== and[54][i].out; + multi_or[20][i].in[1] <== and[58][i].out; + states[i+1][15] <== multi_or[20][i].out; + state_changed[i].in[14] <== states[i+1][15]; + eq[55][i] = IsEqual(); + eq[55][i].in[0] <== in[i]; + eq[55][i].in[1] <== 13; + and[59][i] = AND(); + and[59][i].a <== states[i][14]; + and[59][i].b <== eq[55][i].out; + eq[56][i] = IsEqual(); + eq[56][i].in[0] <== in[i]; + eq[56][i].in[1] <== 13; + and[60][i] = AND(); + and[60][i].a <== states[i][15]; + and[60][i].b <== eq[56][i].out; + eq[57][i] = IsEqual(); + eq[57][i].in[0] <== in[i]; + eq[57][i].in[1] <== 13; + and[61][i] = AND(); + and[61][i].a <== states[i][17]; + and[61][i].b <== eq[57][i].out; + multi_or[21][i] = MultiOR(3); + multi_or[21][i].in[0] <== and[59][i].out; + multi_or[21][i].in[1] <== and[60][i].out; + multi_or[21][i].in[2] <== and[61][i].out; + states[i+1][16] <== multi_or[21][i].out; + state_changed[i].in[15] <== states[i+1][16]; + eq[58][i] = IsEqual(); + eq[58][i].in[0] <== in[i]; + eq[58][i].in[1] <== 62; + and[62][i] = AND(); + and[62][i].a <== states[i][14]; + and[62][i].b <== eq[58][i].out; + eq[59][i] = IsEqual(); + eq[59][i].in[0] <== in[i]; + eq[59][i].in[1] <== 62; + and[63][i] = AND(); + and[63][i].a <== states[i][15]; + and[63][i].b <== eq[59][i].out; + multi_or[22][i] = MultiOR(2); + multi_or[22][i].in[0] <== and[62][i].out; + multi_or[22][i].in[1] <== and[63][i].out; + states[i+1][17] <== multi_or[22][i].out; + state_changed[i].in[16] <== states[i+1][17]; + eq[60][i] = IsEqual(); + eq[60][i].in[0] <== in[i]; + eq[60][i].in[1] <== 10; + and[64][i] = AND(); + and[64][i].a <== states[i][16]; + and[64][i].b <== eq[60][i].out; + states[i+1][18] <== and[64][i].out; + state_changed[i].in[17] <== states[i+1][18]; + states[i+1][0] <== 1 - state_changed[i].out; + } + + component final_state_result = MultiOR(num_bytes+1); + for (var i = 0; i <= num_bytes; i++) { + final_state_result.in[i] <== states[i][18]; + } + out <== final_state_result.out; + + signal is_consecutive[msg_bytes+1][2]; + is_consecutive[msg_bytes][1] <== 1; + for (var i = 0; i < msg_bytes; i++) { + is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][18] * (1 - is_consecutive[msg_bytes-i][1]) + is_consecutive[msg_bytes-i][1]; + is_consecutive[msg_bytes-1-i][1] <== state_changed[msg_bytes-i].out * is_consecutive[msg_bytes-1-i][0]; + } + signal is_substr0[msg_bytes][15]; + signal is_reveal0[msg_bytes]; + signal output reveal0[msg_bytes]; + for (var i = 0; i < msg_bytes; i++) { + is_substr0[i][0] <== 0; + is_substr0[i][1] <== is_substr0[i][0] + states[i+1][9] * states[i+2][14]; + is_substr0[i][2] <== is_substr0[i][1] + states[i+1][1] * states[i+2][1]; + is_substr0[i][3] <== is_substr0[i][2] + states[i+1][14] * states[i+2][14]; + is_substr0[i][4] <== is_substr0[i][3] + states[i+1][1] * states[i+2][12]; + is_substr0[i][5] <== is_substr0[i][4] + states[i+1][12] * states[i+2][15]; + is_substr0[i][6] <== is_substr0[i][5] + states[i+1][12] * states[i+2][14]; + is_substr0[i][7] <== is_substr0[i][6] + states[i+1][15] * states[i+2][14]; + is_substr0[i][8] <== is_substr0[i][7] + states[i+1][13] * states[i+2][1]; + is_substr0[i][9] <== is_substr0[i][8] + states[i+1][7] * states[i+2][9]; + is_substr0[i][10] <== is_substr0[i][9] + states[i+1][15] * states[i+2][15]; + is_substr0[i][11] <== is_substr0[i][10] + states[i+1][5] * states[i+2][7]; + is_substr0[i][12] <== is_substr0[i][11] + states[i+1][7] * states[i+2][7]; + is_substr0[i][13] <== is_substr0[i][12] + states[i+1][13] * states[i+2][7]; + is_substr0[i][14] <== is_substr0[i][13] + states[i+1][1] * states[i+2][7]; + is_reveal0[i] <== is_substr0[i][14] * is_consecutive[i][1]; + reveal0[i] <== in[i+1] * is_reveal0[i]; + } +} \ No newline at end of file diff --git a/packages/circom/circuits/common/subject_all.json b/packages/circom/circuits/common/subject_all.json new file mode 100644 index 0000000..3cdecc3 --- /dev/null +++ b/packages/circom/circuits/common/subject_all.json @@ -0,0 +1,20 @@ +{ + "max_byte_size": 1024, + "parts": [ + { + "is_public": false, + "regex_def": "((\r\n)|^)subject:", + "max_size": 10 + }, + { + "is_public": true, + "regex_def": "(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|\"|#|\\$|%|&|\\'|\\(|\\)|\\*|\\+|,|-|\\.|/|:|;|<|=|>|\\?|@|[|\\\\|]|\\^|_|`|{|\\||}|~| |\t)+", + "max_size": 1024 + }, + { + "is_public": false, + "regex_def": "\r\n", + "max_size": 2 + } + ] +} \ No newline at end of file diff --git a/packages/circom/circuits/common/subject_all_regex.circom b/packages/circom/circuits/common/subject_all_regex.circom new file mode 100644 index 0000000..753c187 --- /dev/null +++ b/packages/circom/circuits/common/subject_all_regex.circom @@ -0,0 +1,338 @@ +pragma circom 2.1.5; + +include "zk-regex-circom/circuits/regex_helpers.circom"; + +template SubjectAllRegex(msg_bytes) { + signal input msg[msg_bytes]; + signal output out; + + var num_bytes = msg_bytes+1; + signal in[num_bytes]; + in[0]<==128; + for (var i = 0; i < msg_bytes; i++) { + in[i+1] <== msg[i]; + } + + component eq[48][num_bytes]; + component lt[4][num_bytes]; + component and[18][num_bytes]; + component multi_or[5][num_bytes]; + signal states[num_bytes+1][14]; + component state_changed[num_bytes]; + + states[0][0] <== 1; + for (var i = 1; i < 14; i++) { + states[0][i] <== 0; + } + + for (var i = 0; i < num_bytes; i++) { + state_changed[i] = MultiOR(13); + lt[0][i] = LessThan(8); + lt[0][i].in[0] <== 47; + lt[0][i].in[1] <== in[i]; + lt[1][i] = LessThan(8); + lt[1][i].in[0] <== in[i]; + lt[1][i].in[1] <== 127; + and[0][i] = AND(); + and[0][i].a <== lt[0][i].out; + and[0][i].b <== lt[1][i].out; + eq[0][i] = IsEqual(); + eq[0][i].in[0] <== in[i]; + eq[0][i].in[1] <== 9; + eq[1][i] = IsEqual(); + eq[1][i].in[0] <== in[i]; + eq[1][i].in[1] <== 32; + eq[2][i] = IsEqual(); + eq[2][i].in[0] <== in[i]; + eq[2][i].in[1] <== 33; + eq[3][i] = IsEqual(); + eq[3][i].in[0] <== in[i]; + eq[3][i].in[1] <== 34; + eq[4][i] = IsEqual(); + eq[4][i].in[0] <== in[i]; + eq[4][i].in[1] <== 35; + eq[5][i] = IsEqual(); + eq[5][i].in[0] <== in[i]; + eq[5][i].in[1] <== 36; + eq[6][i] = IsEqual(); + eq[6][i].in[0] <== in[i]; + eq[6][i].in[1] <== 37; + eq[7][i] = IsEqual(); + eq[7][i].in[0] <== in[i]; + eq[7][i].in[1] <== 38; + eq[8][i] = IsEqual(); + eq[8][i].in[0] <== in[i]; + eq[8][i].in[1] <== 39; + eq[9][i] = IsEqual(); + eq[9][i].in[0] <== in[i]; + eq[9][i].in[1] <== 40; + eq[10][i] = IsEqual(); + eq[10][i].in[0] <== in[i]; + eq[10][i].in[1] <== 41; + eq[11][i] = IsEqual(); + eq[11][i].in[0] <== in[i]; + eq[11][i].in[1] <== 42; + eq[12][i] = IsEqual(); + eq[12][i].in[0] <== in[i]; + eq[12][i].in[1] <== 43; + eq[13][i] = IsEqual(); + eq[13][i].in[0] <== in[i]; + eq[13][i].in[1] <== 44; + eq[14][i] = IsEqual(); + eq[14][i].in[0] <== in[i]; + eq[14][i].in[1] <== 45; + eq[15][i] = IsEqual(); + eq[15][i].in[0] <== in[i]; + eq[15][i].in[1] <== 46; + eq[16][i] = IsEqual(); + eq[16][i].in[0] <== in[i]; + eq[16][i].in[1] <== 47; + and[1][i] = AND(); + and[1][i].a <== states[i][1]; + multi_or[0][i] = MultiOR(18); + multi_or[0][i].in[0] <== and[0][i].out; + multi_or[0][i].in[1] <== eq[0][i].out; + multi_or[0][i].in[2] <== eq[1][i].out; + multi_or[0][i].in[3] <== eq[2][i].out; + multi_or[0][i].in[4] <== eq[3][i].out; + multi_or[0][i].in[5] <== eq[4][i].out; + multi_or[0][i].in[6] <== eq[5][i].out; + multi_or[0][i].in[7] <== eq[6][i].out; + multi_or[0][i].in[8] <== eq[7][i].out; + multi_or[0][i].in[9] <== eq[8][i].out; + multi_or[0][i].in[10] <== eq[9][i].out; + multi_or[0][i].in[11] <== eq[10][i].out; + multi_or[0][i].in[12] <== eq[11][i].out; + multi_or[0][i].in[13] <== eq[12][i].out; + multi_or[0][i].in[14] <== eq[13][i].out; + multi_or[0][i].in[15] <== eq[14][i].out; + multi_or[0][i].in[16] <== eq[15][i].out; + multi_or[0][i].in[17] <== eq[16][i].out; + and[1][i].b <== multi_or[0][i].out; + lt[2][i] = LessThan(8); + lt[2][i].in[0] <== 47; + lt[2][i].in[1] <== in[i]; + lt[3][i] = LessThan(8); + lt[3][i].in[0] <== in[i]; + lt[3][i].in[1] <== 127; + and[2][i] = AND(); + and[2][i].a <== lt[2][i].out; + and[2][i].b <== lt[3][i].out; + eq[17][i] = IsEqual(); + eq[17][i].in[0] <== in[i]; + eq[17][i].in[1] <== 9; + eq[18][i] = IsEqual(); + eq[18][i].in[0] <== in[i]; + eq[18][i].in[1] <== 32; + eq[19][i] = IsEqual(); + eq[19][i].in[0] <== in[i]; + eq[19][i].in[1] <== 33; + eq[20][i] = IsEqual(); + eq[20][i].in[0] <== in[i]; + eq[20][i].in[1] <== 34; + eq[21][i] = IsEqual(); + eq[21][i].in[0] <== in[i]; + eq[21][i].in[1] <== 35; + eq[22][i] = IsEqual(); + eq[22][i].in[0] <== in[i]; + eq[22][i].in[1] <== 36; + eq[23][i] = IsEqual(); + eq[23][i].in[0] <== in[i]; + eq[23][i].in[1] <== 37; + eq[24][i] = IsEqual(); + eq[24][i].in[0] <== in[i]; + eq[24][i].in[1] <== 38; + eq[25][i] = IsEqual(); + eq[25][i].in[0] <== in[i]; + eq[25][i].in[1] <== 39; + eq[26][i] = IsEqual(); + eq[26][i].in[0] <== in[i]; + eq[26][i].in[1] <== 40; + eq[27][i] = IsEqual(); + eq[27][i].in[0] <== in[i]; + eq[27][i].in[1] <== 41; + eq[28][i] = IsEqual(); + eq[28][i].in[0] <== in[i]; + eq[28][i].in[1] <== 42; + eq[29][i] = IsEqual(); + eq[29][i].in[0] <== in[i]; + eq[29][i].in[1] <== 43; + eq[30][i] = IsEqual(); + eq[30][i].in[0] <== in[i]; + eq[30][i].in[1] <== 44; + eq[31][i] = IsEqual(); + eq[31][i].in[0] <== in[i]; + eq[31][i].in[1] <== 45; + eq[32][i] = IsEqual(); + eq[32][i].in[0] <== in[i]; + eq[32][i].in[1] <== 46; + eq[33][i] = IsEqual(); + eq[33][i].in[0] <== in[i]; + eq[33][i].in[1] <== 47; + and[3][i] = AND(); + and[3][i].a <== states[i][13]; + multi_or[1][i] = MultiOR(18); + multi_or[1][i].in[0] <== and[2][i].out; + multi_or[1][i].in[1] <== eq[17][i].out; + multi_or[1][i].in[2] <== eq[18][i].out; + multi_or[1][i].in[3] <== eq[19][i].out; + multi_or[1][i].in[4] <== eq[20][i].out; + multi_or[1][i].in[5] <== eq[21][i].out; + multi_or[1][i].in[6] <== eq[22][i].out; + multi_or[1][i].in[7] <== eq[23][i].out; + multi_or[1][i].in[8] <== eq[24][i].out; + multi_or[1][i].in[9] <== eq[25][i].out; + multi_or[1][i].in[10] <== eq[26][i].out; + multi_or[1][i].in[11] <== eq[27][i].out; + multi_or[1][i].in[12] <== eq[28][i].out; + multi_or[1][i].in[13] <== eq[29][i].out; + multi_or[1][i].in[14] <== eq[30][i].out; + multi_or[1][i].in[15] <== eq[31][i].out; + multi_or[1][i].in[16] <== eq[32][i].out; + multi_or[1][i].in[17] <== eq[33][i].out; + and[3][i].b <== multi_or[1][i].out; + multi_or[2][i] = MultiOR(2); + multi_or[2][i].in[0] <== and[1][i].out; + multi_or[2][i].in[1] <== and[3][i].out; + states[i+1][1] <== multi_or[2][i].out; + state_changed[i].in[0] <== states[i+1][1]; + eq[34][i] = IsEqual(); + eq[34][i].in[0] <== in[i]; + eq[34][i].in[1] <== 13; + and[4][i] = AND(); + and[4][i].a <== states[i][0]; + and[4][i].b <== eq[34][i].out; + eq[35][i] = IsEqual(); + eq[35][i].in[0] <== in[i]; + eq[35][i].in[1] <== 13; + and[5][i] = AND(); + and[5][i].a <== states[i][3]; + and[5][i].b <== eq[35][i].out; + multi_or[3][i] = MultiOR(2); + multi_or[3][i].in[0] <== and[4][i].out; + multi_or[3][i].in[1] <== and[5][i].out; + states[i+1][2] <== multi_or[3][i].out; + state_changed[i].in[1] <== states[i+1][2]; + eq[36][i] = IsEqual(); + eq[36][i].in[0] <== in[i]; + eq[36][i].in[1] <== 128; + and[6][i] = AND(); + and[6][i].a <== states[i][0]; + and[6][i].b <== eq[36][i].out; + eq[37][i] = IsEqual(); + eq[37][i].in[0] <== in[i]; + eq[37][i].in[1] <== 10; + and[7][i] = AND(); + and[7][i].a <== states[i][2]; + and[7][i].b <== eq[37][i].out; + multi_or[4][i] = MultiOR(2); + multi_or[4][i].in[0] <== and[6][i].out; + multi_or[4][i].in[1] <== and[7][i].out; + states[i+1][3] <== multi_or[4][i].out; + state_changed[i].in[2] <== states[i+1][3]; + eq[38][i] = IsEqual(); + eq[38][i].in[0] <== in[i]; + eq[38][i].in[1] <== 13; + and[8][i] = AND(); + and[8][i].a <== states[i][1]; + and[8][i].b <== eq[38][i].out; + states[i+1][4] <== and[8][i].out; + state_changed[i].in[3] <== states[i+1][4]; + eq[39][i] = IsEqual(); + eq[39][i].in[0] <== in[i]; + eq[39][i].in[1] <== 115; + and[9][i] = AND(); + and[9][i].a <== states[i][3]; + and[9][i].b <== eq[39][i].out; + states[i+1][5] <== and[9][i].out; + state_changed[i].in[4] <== states[i+1][5]; + eq[40][i] = IsEqual(); + eq[40][i].in[0] <== in[i]; + eq[40][i].in[1] <== 117; + and[10][i] = AND(); + and[10][i].a <== states[i][5]; + and[10][i].b <== eq[40][i].out; + states[i+1][6] <== and[10][i].out; + state_changed[i].in[5] <== states[i+1][6]; + eq[41][i] = IsEqual(); + eq[41][i].in[0] <== in[i]; + eq[41][i].in[1] <== 98; + and[11][i] = AND(); + and[11][i].a <== states[i][6]; + and[11][i].b <== eq[41][i].out; + states[i+1][7] <== and[11][i].out; + state_changed[i].in[6] <== states[i+1][7]; + eq[42][i] = IsEqual(); + eq[42][i].in[0] <== in[i]; + eq[42][i].in[1] <== 10; + and[12][i] = AND(); + and[12][i].a <== states[i][4]; + and[12][i].b <== eq[42][i].out; + states[i+1][8] <== and[12][i].out; + state_changed[i].in[7] <== states[i+1][8]; + eq[43][i] = IsEqual(); + eq[43][i].in[0] <== in[i]; + eq[43][i].in[1] <== 106; + and[13][i] = AND(); + and[13][i].a <== states[i][7]; + and[13][i].b <== eq[43][i].out; + states[i+1][9] <== and[13][i].out; + state_changed[i].in[8] <== states[i+1][9]; + eq[44][i] = IsEqual(); + eq[44][i].in[0] <== in[i]; + eq[44][i].in[1] <== 101; + and[14][i] = AND(); + and[14][i].a <== states[i][9]; + and[14][i].b <== eq[44][i].out; + states[i+1][10] <== and[14][i].out; + state_changed[i].in[9] <== states[i+1][10]; + eq[45][i] = IsEqual(); + eq[45][i].in[0] <== in[i]; + eq[45][i].in[1] <== 99; + and[15][i] = AND(); + and[15][i].a <== states[i][10]; + and[15][i].b <== eq[45][i].out; + states[i+1][11] <== and[15][i].out; + state_changed[i].in[10] <== states[i+1][11]; + eq[46][i] = IsEqual(); + eq[46][i].in[0] <== in[i]; + eq[46][i].in[1] <== 116; + and[16][i] = AND(); + and[16][i].a <== states[i][11]; + and[16][i].b <== eq[46][i].out; + states[i+1][12] <== and[16][i].out; + state_changed[i].in[11] <== states[i+1][12]; + eq[47][i] = IsEqual(); + eq[47][i].in[0] <== in[i]; + eq[47][i].in[1] <== 58; + and[17][i] = AND(); + and[17][i].a <== states[i][12]; + and[17][i].b <== eq[47][i].out; + states[i+1][13] <== and[17][i].out; + state_changed[i].in[12] <== states[i+1][13]; + states[i+1][0] <== 1 - state_changed[i].out; + } + + component final_state_result = MultiOR(num_bytes+1); + for (var i = 0; i <= num_bytes; i++) { + final_state_result.in[i] <== states[i][8]; + } + out <== final_state_result.out; + + signal is_consecutive[msg_bytes+1][2]; + is_consecutive[msg_bytes][1] <== 1; + for (var i = 0; i < msg_bytes; i++) { + is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][8] * (1 - is_consecutive[msg_bytes-i][1]) + is_consecutive[msg_bytes-i][1]; + is_consecutive[msg_bytes-1-i][1] <== state_changed[msg_bytes-i].out * is_consecutive[msg_bytes-1-i][0]; + } + signal is_substr0[msg_bytes][3]; + signal is_reveal0[msg_bytes]; + signal output reveal0[msg_bytes]; + for (var i = 0; i < msg_bytes; i++) { + is_substr0[i][0] <== 0; + is_substr0[i][1] <== is_substr0[i][0] + states[i+1][13] * states[i+2][1]; + is_substr0[i][2] <== is_substr0[i][1] + states[i+1][1] * states[i+2][1]; + is_reveal0[i] <== is_substr0[i][2] * is_consecutive[i][1]; + reveal0[i] <== in[i+1] * is_reveal0[i]; + } +} \ No newline at end of file diff --git a/packages/circom/circuits/common/timestamp.circom b/packages/circom/circuits/common/timestamp.circom new file mode 100644 index 0000000..91597f5 --- /dev/null +++ b/packages/circom/circuits/common/timestamp.circom @@ -0,0 +1,891 @@ +pragma circom 2.1.5; + +include "zk-regex-circom/circuits/regex_helpers.circom"; + +template TimestampRegex(msg_bytes) { + signal input msg[msg_bytes]; + signal output out; + + var num_bytes = msg_bytes+1; + signal in[num_bytes]; + in[0]<==128; + for (var i = 0; i < msg_bytes; i++) { + in[i+1] <== msg[i]; + } + + component eq[147][num_bytes]; + component lt[22][num_bytes]; + component and[43][num_bytes]; + component multi_or[9][num_bytes]; + signal states[num_bytes+1][25]; + component state_changed[num_bytes]; + + states[0][0] <== 1; + for (var i = 1; i < 25; i++) { + states[0][i] <== 0; + } + + for (var i = 0; i < num_bytes; i++) { + state_changed[i] = MultiOR(24); + lt[0][i] = LessThan(8); + lt[0][i].in[0] <== 96; + lt[0][i].in[1] <== in[i]; + lt[1][i] = LessThan(8); + lt[1][i].in[0] <== in[i]; + lt[1][i].in[1] <== 123; + and[0][i] = AND(); + and[0][i].a <== lt[0][i].out; + and[0][i].b <== lt[1][i].out; + and[1][i] = AND(); + and[1][i].a <== states[i][1]; + and[1][i].b <== and[0][i].out; + eq[0][i] = IsEqual(); + eq[0][i].in[0] <== in[i]; + eq[0][i].in[1] <== 97; + eq[1][i] = IsEqual(); + eq[1][i].in[0] <== in[i]; + eq[1][i].in[1] <== 98; + eq[2][i] = IsEqual(); + eq[2][i].in[0] <== in[i]; + eq[2][i].in[1] <== 99; + eq[3][i] = IsEqual(); + eq[3][i].in[0] <== in[i]; + eq[3][i].in[1] <== 100; + eq[4][i] = IsEqual(); + eq[4][i].in[0] <== in[i]; + eq[4][i].in[1] <== 101; + eq[5][i] = IsEqual(); + eq[5][i].in[0] <== in[i]; + eq[5][i].in[1] <== 102; + eq[6][i] = IsEqual(); + eq[6][i].in[0] <== in[i]; + eq[6][i].in[1] <== 103; + eq[7][i] = IsEqual(); + eq[7][i].in[0] <== in[i]; + eq[7][i].in[1] <== 104; + eq[8][i] = IsEqual(); + eq[8][i].in[0] <== in[i]; + eq[8][i].in[1] <== 105; + eq[9][i] = IsEqual(); + eq[9][i].in[0] <== in[i]; + eq[9][i].in[1] <== 106; + eq[10][i] = IsEqual(); + eq[10][i].in[0] <== in[i]; + eq[10][i].in[1] <== 107; + eq[11][i] = IsEqual(); + eq[11][i].in[0] <== in[i]; + eq[11][i].in[1] <== 108; + eq[12][i] = IsEqual(); + eq[12][i].in[0] <== in[i]; + eq[12][i].in[1] <== 109; + eq[13][i] = IsEqual(); + eq[13][i].in[0] <== in[i]; + eq[13][i].in[1] <== 110; + eq[14][i] = IsEqual(); + eq[14][i].in[0] <== in[i]; + eq[14][i].in[1] <== 111; + eq[15][i] = IsEqual(); + eq[15][i].in[0] <== in[i]; + eq[15][i].in[1] <== 112; + eq[16][i] = IsEqual(); + eq[16][i].in[0] <== in[i]; + eq[16][i].in[1] <== 113; + eq[17][i] = IsEqual(); + eq[17][i].in[0] <== in[i]; + eq[17][i].in[1] <== 114; + eq[18][i] = IsEqual(); + eq[18][i].in[0] <== in[i]; + eq[18][i].in[1] <== 115; + eq[19][i] = IsEqual(); + eq[19][i].in[0] <== in[i]; + eq[19][i].in[1] <== 117; + eq[20][i] = IsEqual(); + eq[20][i].in[0] <== in[i]; + eq[20][i].in[1] <== 118; + eq[21][i] = IsEqual(); + eq[21][i].in[0] <== in[i]; + eq[21][i].in[1] <== 119; + eq[22][i] = IsEqual(); + eq[22][i].in[0] <== in[i]; + eq[22][i].in[1] <== 120; + eq[23][i] = IsEqual(); + eq[23][i].in[0] <== in[i]; + eq[23][i].in[1] <== 121; + eq[24][i] = IsEqual(); + eq[24][i].in[0] <== in[i]; + eq[24][i].in[1] <== 122; + and[2][i] = AND(); + and[2][i].a <== states[i][14]; + multi_or[0][i] = MultiOR(25); + multi_or[0][i].in[0] <== eq[0][i].out; + multi_or[0][i].in[1] <== eq[1][i].out; + multi_or[0][i].in[2] <== eq[2][i].out; + multi_or[0][i].in[3] <== eq[3][i].out; + multi_or[0][i].in[4] <== eq[4][i].out; + multi_or[0][i].in[5] <== eq[5][i].out; + multi_or[0][i].in[6] <== eq[6][i].out; + multi_or[0][i].in[7] <== eq[7][i].out; + multi_or[0][i].in[8] <== eq[8][i].out; + multi_or[0][i].in[9] <== eq[9][i].out; + multi_or[0][i].in[10] <== eq[10][i].out; + multi_or[0][i].in[11] <== eq[11][i].out; + multi_or[0][i].in[12] <== eq[12][i].out; + multi_or[0][i].in[13] <== eq[13][i].out; + multi_or[0][i].in[14] <== eq[14][i].out; + multi_or[0][i].in[15] <== eq[15][i].out; + multi_or[0][i].in[16] <== eq[16][i].out; + multi_or[0][i].in[17] <== eq[17][i].out; + multi_or[0][i].in[18] <== eq[18][i].out; + multi_or[0][i].in[19] <== eq[19][i].out; + multi_or[0][i].in[20] <== eq[20][i].out; + multi_or[0][i].in[21] <== eq[21][i].out; + multi_or[0][i].in[22] <== eq[22][i].out; + multi_or[0][i].in[23] <== eq[23][i].out; + multi_or[0][i].in[24] <== eq[24][i].out; + and[2][i].b <== multi_or[0][i].out; + lt[2][i] = LessThan(8); + lt[2][i].in[0] <== 96; + lt[2][i].in[1] <== in[i]; + lt[3][i] = LessThan(8); + lt[3][i].in[0] <== in[i]; + lt[3][i].in[1] <== 123; + and[3][i] = AND(); + and[3][i].a <== lt[2][i].out; + and[3][i].b <== lt[3][i].out; + and[4][i] = AND(); + and[4][i].a <== states[i][16]; + and[4][i].b <== and[3][i].out; + lt[4][i] = LessThan(8); + lt[4][i].in[0] <== 96; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 123; + and[5][i] = AND(); + and[5][i].a <== lt[4][i].out; + and[5][i].b <== lt[5][i].out; + and[6][i] = AND(); + and[6][i].a <== states[i][22]; + and[6][i].b <== and[5][i].out; + multi_or[1][i] = MultiOR(4); + multi_or[1][i].in[0] <== and[1][i].out; + multi_or[1][i].in[1] <== and[2][i].out; + multi_or[1][i].in[2] <== and[4][i].out; + multi_or[1][i].in[3] <== and[6][i].out; + states[i+1][1] <== multi_or[1][i].out; + state_changed[i].in[0] <== states[i+1][1]; + eq[25][i] = IsEqual(); + eq[25][i].in[0] <== in[i]; + eq[25][i].in[1] <== 61; + and[7][i] = AND(); + and[7][i].a <== states[i][1]; + and[7][i].b <== eq[25][i].out; + states[i+1][2] <== and[7][i].out; + state_changed[i].in[1] <== states[i+1][2]; + eq[26][i] = IsEqual(); + eq[26][i].in[0] <== in[i]; + eq[26][i].in[1] <== 100; + and[8][i] = AND(); + and[8][i].a <== states[i][0]; + and[8][i].b <== eq[26][i].out; + states[i+1][3] <== and[8][i].out; + state_changed[i].in[2] <== states[i+1][3]; + lt[6][i] = LessThan(8); + lt[6][i].in[0] <== 47; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 58; + and[9][i] = AND(); + and[9][i].a <== lt[6][i].out; + and[9][i].b <== lt[7][i].out; + lt[8][i] = LessThan(8); + lt[8][i].in[0] <== 64; + lt[8][i].in[1] <== in[i]; + lt[9][i] = LessThan(8); + lt[9][i].in[0] <== in[i]; + lt[9][i].in[1] <== 127; + and[10][i] = AND(); + and[10][i].a <== lt[8][i].out; + and[10][i].b <== lt[9][i].out; + eq[27][i] = IsEqual(); + eq[27][i].in[0] <== in[i]; + eq[27][i].in[1] <== 9; + eq[28][i] = IsEqual(); + eq[28][i].in[0] <== in[i]; + eq[28][i].in[1] <== 10; + eq[29][i] = IsEqual(); + eq[29][i].in[0] <== in[i]; + eq[29][i].in[1] <== 13; + eq[30][i] = IsEqual(); + eq[30][i].in[0] <== in[i]; + eq[30][i].in[1] <== 32; + eq[31][i] = IsEqual(); + eq[31][i].in[0] <== in[i]; + eq[31][i].in[1] <== 33; + eq[32][i] = IsEqual(); + eq[32][i].in[0] <== in[i]; + eq[32][i].in[1] <== 34; + eq[33][i] = IsEqual(); + eq[33][i].in[0] <== in[i]; + eq[33][i].in[1] <== 35; + eq[34][i] = IsEqual(); + eq[34][i].in[0] <== in[i]; + eq[34][i].in[1] <== 36; + eq[35][i] = IsEqual(); + eq[35][i].in[0] <== in[i]; + eq[35][i].in[1] <== 37; + eq[36][i] = IsEqual(); + eq[36][i].in[0] <== in[i]; + eq[36][i].in[1] <== 38; + eq[37][i] = IsEqual(); + eq[37][i].in[0] <== in[i]; + eq[37][i].in[1] <== 39; + eq[38][i] = IsEqual(); + eq[38][i].in[0] <== in[i]; + eq[38][i].in[1] <== 40; + eq[39][i] = IsEqual(); + eq[39][i].in[0] <== in[i]; + eq[39][i].in[1] <== 41; + eq[40][i] = IsEqual(); + eq[40][i].in[0] <== in[i]; + eq[40][i].in[1] <== 42; + eq[41][i] = IsEqual(); + eq[41][i].in[0] <== in[i]; + eq[41][i].in[1] <== 43; + eq[42][i] = IsEqual(); + eq[42][i].in[0] <== in[i]; + eq[42][i].in[1] <== 44; + eq[43][i] = IsEqual(); + eq[43][i].in[0] <== in[i]; + eq[43][i].in[1] <== 45; + eq[44][i] = IsEqual(); + eq[44][i].in[0] <== in[i]; + eq[44][i].in[1] <== 46; + eq[45][i] = IsEqual(); + eq[45][i].in[0] <== in[i]; + eq[45][i].in[1] <== 47; + eq[46][i] = IsEqual(); + eq[46][i].in[0] <== in[i]; + eq[46][i].in[1] <== 58; + eq[47][i] = IsEqual(); + eq[47][i].in[0] <== in[i]; + eq[47][i].in[1] <== 60; + eq[48][i] = IsEqual(); + eq[48][i].in[0] <== in[i]; + eq[48][i].in[1] <== 61; + eq[49][i] = IsEqual(); + eq[49][i].in[0] <== in[i]; + eq[49][i].in[1] <== 62; + eq[50][i] = IsEqual(); + eq[50][i].in[0] <== in[i]; + eq[50][i].in[1] <== 63; + eq[51][i] = IsEqual(); + eq[51][i].in[0] <== in[i]; + eq[51][i].in[1] <== 64; + and[11][i] = AND(); + and[11][i].a <== states[i][2]; + multi_or[2][i] = MultiOR(27); + multi_or[2][i].in[0] <== and[9][i].out; + multi_or[2][i].in[1] <== and[10][i].out; + multi_or[2][i].in[2] <== eq[27][i].out; + multi_or[2][i].in[3] <== eq[28][i].out; + multi_or[2][i].in[4] <== eq[29][i].out; + multi_or[2][i].in[5] <== eq[30][i].out; + multi_or[2][i].in[6] <== eq[31][i].out; + multi_or[2][i].in[7] <== eq[32][i].out; + multi_or[2][i].in[8] <== eq[33][i].out; + multi_or[2][i].in[9] <== eq[34][i].out; + multi_or[2][i].in[10] <== eq[35][i].out; + multi_or[2][i].in[11] <== eq[36][i].out; + multi_or[2][i].in[12] <== eq[37][i].out; + multi_or[2][i].in[13] <== eq[38][i].out; + multi_or[2][i].in[14] <== eq[39][i].out; + multi_or[2][i].in[15] <== eq[40][i].out; + multi_or[2][i].in[16] <== eq[41][i].out; + multi_or[2][i].in[17] <== eq[42][i].out; + multi_or[2][i].in[18] <== eq[43][i].out; + multi_or[2][i].in[19] <== eq[44][i].out; + multi_or[2][i].in[20] <== eq[45][i].out; + multi_or[2][i].in[21] <== eq[46][i].out; + multi_or[2][i].in[22] <== eq[47][i].out; + multi_or[2][i].in[23] <== eq[48][i].out; + multi_or[2][i].in[24] <== eq[49][i].out; + multi_or[2][i].in[25] <== eq[50][i].out; + multi_or[2][i].in[26] <== eq[51][i].out; + and[11][i].b <== multi_or[2][i].out; + lt[10][i] = LessThan(8); + lt[10][i].in[0] <== 47; + lt[10][i].in[1] <== in[i]; + lt[11][i] = LessThan(8); + lt[11][i].in[0] <== in[i]; + lt[11][i].in[1] <== 58; + and[12][i] = AND(); + and[12][i].a <== lt[10][i].out; + and[12][i].b <== lt[11][i].out; + lt[12][i] = LessThan(8); + lt[12][i].in[0] <== 64; + lt[12][i].in[1] <== in[i]; + lt[13][i] = LessThan(8); + lt[13][i].in[0] <== in[i]; + lt[13][i].in[1] <== 127; + and[13][i] = AND(); + and[13][i].a <== lt[12][i].out; + and[13][i].b <== lt[13][i].out; + eq[52][i] = IsEqual(); + eq[52][i].in[0] <== in[i]; + eq[52][i].in[1] <== 9; + eq[53][i] = IsEqual(); + eq[53][i].in[0] <== in[i]; + eq[53][i].in[1] <== 10; + eq[54][i] = IsEqual(); + eq[54][i].in[0] <== in[i]; + eq[54][i].in[1] <== 13; + eq[55][i] = IsEqual(); + eq[55][i].in[0] <== in[i]; + eq[55][i].in[1] <== 32; + eq[56][i] = IsEqual(); + eq[56][i].in[0] <== in[i]; + eq[56][i].in[1] <== 33; + eq[57][i] = IsEqual(); + eq[57][i].in[0] <== in[i]; + eq[57][i].in[1] <== 34; + eq[58][i] = IsEqual(); + eq[58][i].in[0] <== in[i]; + eq[58][i].in[1] <== 35; + eq[59][i] = IsEqual(); + eq[59][i].in[0] <== in[i]; + eq[59][i].in[1] <== 36; + eq[60][i] = IsEqual(); + eq[60][i].in[0] <== in[i]; + eq[60][i].in[1] <== 37; + eq[61][i] = IsEqual(); + eq[61][i].in[0] <== in[i]; + eq[61][i].in[1] <== 38; + eq[62][i] = IsEqual(); + eq[62][i].in[0] <== in[i]; + eq[62][i].in[1] <== 39; + eq[63][i] = IsEqual(); + eq[63][i].in[0] <== in[i]; + eq[63][i].in[1] <== 40; + eq[64][i] = IsEqual(); + eq[64][i].in[0] <== in[i]; + eq[64][i].in[1] <== 41; + eq[65][i] = IsEqual(); + eq[65][i].in[0] <== in[i]; + eq[65][i].in[1] <== 42; + eq[66][i] = IsEqual(); + eq[66][i].in[0] <== in[i]; + eq[66][i].in[1] <== 43; + eq[67][i] = IsEqual(); + eq[67][i].in[0] <== in[i]; + eq[67][i].in[1] <== 44; + eq[68][i] = IsEqual(); + eq[68][i].in[0] <== in[i]; + eq[68][i].in[1] <== 45; + eq[69][i] = IsEqual(); + eq[69][i].in[0] <== in[i]; + eq[69][i].in[1] <== 46; + eq[70][i] = IsEqual(); + eq[70][i].in[0] <== in[i]; + eq[70][i].in[1] <== 47; + eq[71][i] = IsEqual(); + eq[71][i].in[0] <== in[i]; + eq[71][i].in[1] <== 58; + eq[72][i] = IsEqual(); + eq[72][i].in[0] <== in[i]; + eq[72][i].in[1] <== 60; + eq[73][i] = IsEqual(); + eq[73][i].in[0] <== in[i]; + eq[73][i].in[1] <== 61; + eq[74][i] = IsEqual(); + eq[74][i].in[0] <== in[i]; + eq[74][i].in[1] <== 62; + eq[75][i] = IsEqual(); + eq[75][i].in[0] <== in[i]; + eq[75][i].in[1] <== 63; + eq[76][i] = IsEqual(); + eq[76][i].in[0] <== in[i]; + eq[76][i].in[1] <== 64; + and[14][i] = AND(); + and[14][i].a <== states[i][4]; + multi_or[3][i] = MultiOR(27); + multi_or[3][i].in[0] <== and[12][i].out; + multi_or[3][i].in[1] <== and[13][i].out; + multi_or[3][i].in[2] <== eq[52][i].out; + multi_or[3][i].in[3] <== eq[53][i].out; + multi_or[3][i].in[4] <== eq[54][i].out; + multi_or[3][i].in[5] <== eq[55][i].out; + multi_or[3][i].in[6] <== eq[56][i].out; + multi_or[3][i].in[7] <== eq[57][i].out; + multi_or[3][i].in[8] <== eq[58][i].out; + multi_or[3][i].in[9] <== eq[59][i].out; + multi_or[3][i].in[10] <== eq[60][i].out; + multi_or[3][i].in[11] <== eq[61][i].out; + multi_or[3][i].in[12] <== eq[62][i].out; + multi_or[3][i].in[13] <== eq[63][i].out; + multi_or[3][i].in[14] <== eq[64][i].out; + multi_or[3][i].in[15] <== eq[65][i].out; + multi_or[3][i].in[16] <== eq[66][i].out; + multi_or[3][i].in[17] <== eq[67][i].out; + multi_or[3][i].in[18] <== eq[68][i].out; + multi_or[3][i].in[19] <== eq[69][i].out; + multi_or[3][i].in[20] <== eq[70][i].out; + multi_or[3][i].in[21] <== eq[71][i].out; + multi_or[3][i].in[22] <== eq[72][i].out; + multi_or[3][i].in[23] <== eq[73][i].out; + multi_or[3][i].in[24] <== eq[74][i].out; + multi_or[3][i].in[25] <== eq[75][i].out; + multi_or[3][i].in[26] <== eq[76][i].out; + and[14][i].b <== multi_or[3][i].out; + lt[14][i] = LessThan(8); + lt[14][i].in[0] <== 64; + lt[14][i].in[1] <== in[i]; + lt[15][i] = LessThan(8); + lt[15][i].in[0] <== in[i]; + lt[15][i].in[1] <== 127; + and[15][i] = AND(); + and[15][i].a <== lt[14][i].out; + and[15][i].b <== lt[15][i].out; + eq[77][i] = IsEqual(); + eq[77][i].in[0] <== in[i]; + eq[77][i].in[1] <== 9; + eq[78][i] = IsEqual(); + eq[78][i].in[0] <== in[i]; + eq[78][i].in[1] <== 10; + eq[79][i] = IsEqual(); + eq[79][i].in[0] <== in[i]; + eq[79][i].in[1] <== 13; + eq[80][i] = IsEqual(); + eq[80][i].in[0] <== in[i]; + eq[80][i].in[1] <== 32; + eq[81][i] = IsEqual(); + eq[81][i].in[0] <== in[i]; + eq[81][i].in[1] <== 33; + eq[82][i] = IsEqual(); + eq[82][i].in[0] <== in[i]; + eq[82][i].in[1] <== 34; + eq[83][i] = IsEqual(); + eq[83][i].in[0] <== in[i]; + eq[83][i].in[1] <== 35; + eq[84][i] = IsEqual(); + eq[84][i].in[0] <== in[i]; + eq[84][i].in[1] <== 36; + eq[85][i] = IsEqual(); + eq[85][i].in[0] <== in[i]; + eq[85][i].in[1] <== 37; + eq[86][i] = IsEqual(); + eq[86][i].in[0] <== in[i]; + eq[86][i].in[1] <== 38; + eq[87][i] = IsEqual(); + eq[87][i].in[0] <== in[i]; + eq[87][i].in[1] <== 39; + eq[88][i] = IsEqual(); + eq[88][i].in[0] <== in[i]; + eq[88][i].in[1] <== 40; + eq[89][i] = IsEqual(); + eq[89][i].in[0] <== in[i]; + eq[89][i].in[1] <== 41; + eq[90][i] = IsEqual(); + eq[90][i].in[0] <== in[i]; + eq[90][i].in[1] <== 42; + eq[91][i] = IsEqual(); + eq[91][i].in[0] <== in[i]; + eq[91][i].in[1] <== 43; + eq[92][i] = IsEqual(); + eq[92][i].in[0] <== in[i]; + eq[92][i].in[1] <== 44; + eq[93][i] = IsEqual(); + eq[93][i].in[0] <== in[i]; + eq[93][i].in[1] <== 45; + eq[94][i] = IsEqual(); + eq[94][i].in[0] <== in[i]; + eq[94][i].in[1] <== 46; + eq[95][i] = IsEqual(); + eq[95][i].in[0] <== in[i]; + eq[95][i].in[1] <== 47; + eq[96][i] = IsEqual(); + eq[96][i].in[0] <== in[i]; + eq[96][i].in[1] <== 58; + eq[97][i] = IsEqual(); + eq[97][i].in[0] <== in[i]; + eq[97][i].in[1] <== 60; + eq[98][i] = IsEqual(); + eq[98][i].in[0] <== in[i]; + eq[98][i].in[1] <== 61; + eq[99][i] = IsEqual(); + eq[99][i].in[0] <== in[i]; + eq[99][i].in[1] <== 62; + eq[100][i] = IsEqual(); + eq[100][i].in[0] <== in[i]; + eq[100][i].in[1] <== 63; + eq[101][i] = IsEqual(); + eq[101][i].in[0] <== in[i]; + eq[101][i].in[1] <== 64; + and[16][i] = AND(); + and[16][i].a <== states[i][18]; + multi_or[4][i] = MultiOR(26); + multi_or[4][i].in[0] <== and[15][i].out; + multi_or[4][i].in[1] <== eq[77][i].out; + multi_or[4][i].in[2] <== eq[78][i].out; + multi_or[4][i].in[3] <== eq[79][i].out; + multi_or[4][i].in[4] <== eq[80][i].out; + multi_or[4][i].in[5] <== eq[81][i].out; + multi_or[4][i].in[6] <== eq[82][i].out; + multi_or[4][i].in[7] <== eq[83][i].out; + multi_or[4][i].in[8] <== eq[84][i].out; + multi_or[4][i].in[9] <== eq[85][i].out; + multi_or[4][i].in[10] <== eq[86][i].out; + multi_or[4][i].in[11] <== eq[87][i].out; + multi_or[4][i].in[12] <== eq[88][i].out; + multi_or[4][i].in[13] <== eq[89][i].out; + multi_or[4][i].in[14] <== eq[90][i].out; + multi_or[4][i].in[15] <== eq[91][i].out; + multi_or[4][i].in[16] <== eq[92][i].out; + multi_or[4][i].in[17] <== eq[93][i].out; + multi_or[4][i].in[18] <== eq[94][i].out; + multi_or[4][i].in[19] <== eq[95][i].out; + multi_or[4][i].in[20] <== eq[96][i].out; + multi_or[4][i].in[21] <== eq[97][i].out; + multi_or[4][i].in[22] <== eq[98][i].out; + multi_or[4][i].in[23] <== eq[99][i].out; + multi_or[4][i].in[24] <== eq[100][i].out; + multi_or[4][i].in[25] <== eq[101][i].out; + and[16][i].b <== multi_or[4][i].out; + lt[16][i] = LessThan(8); + lt[16][i].in[0] <== 64; + lt[16][i].in[1] <== in[i]; + lt[17][i] = LessThan(8); + lt[17][i].in[0] <== in[i]; + lt[17][i].in[1] <== 127; + and[17][i] = AND(); + and[17][i].a <== lt[16][i].out; + and[17][i].b <== lt[17][i].out; + eq[102][i] = IsEqual(); + eq[102][i].in[0] <== in[i]; + eq[102][i].in[1] <== 9; + eq[103][i] = IsEqual(); + eq[103][i].in[0] <== in[i]; + eq[103][i].in[1] <== 10; + eq[104][i] = IsEqual(); + eq[104][i].in[0] <== in[i]; + eq[104][i].in[1] <== 13; + eq[105][i] = IsEqual(); + eq[105][i].in[0] <== in[i]; + eq[105][i].in[1] <== 32; + eq[106][i] = IsEqual(); + eq[106][i].in[0] <== in[i]; + eq[106][i].in[1] <== 33; + eq[107][i] = IsEqual(); + eq[107][i].in[0] <== in[i]; + eq[107][i].in[1] <== 34; + eq[108][i] = IsEqual(); + eq[108][i].in[0] <== in[i]; + eq[108][i].in[1] <== 35; + eq[109][i] = IsEqual(); + eq[109][i].in[0] <== in[i]; + eq[109][i].in[1] <== 36; + eq[110][i] = IsEqual(); + eq[110][i].in[0] <== in[i]; + eq[110][i].in[1] <== 37; + eq[111][i] = IsEqual(); + eq[111][i].in[0] <== in[i]; + eq[111][i].in[1] <== 38; + eq[112][i] = IsEqual(); + eq[112][i].in[0] <== in[i]; + eq[112][i].in[1] <== 39; + eq[113][i] = IsEqual(); + eq[113][i].in[0] <== in[i]; + eq[113][i].in[1] <== 40; + eq[114][i] = IsEqual(); + eq[114][i].in[0] <== in[i]; + eq[114][i].in[1] <== 41; + eq[115][i] = IsEqual(); + eq[115][i].in[0] <== in[i]; + eq[115][i].in[1] <== 42; + eq[116][i] = IsEqual(); + eq[116][i].in[0] <== in[i]; + eq[116][i].in[1] <== 43; + eq[117][i] = IsEqual(); + eq[117][i].in[0] <== in[i]; + eq[117][i].in[1] <== 44; + eq[118][i] = IsEqual(); + eq[118][i].in[0] <== in[i]; + eq[118][i].in[1] <== 45; + eq[119][i] = IsEqual(); + eq[119][i].in[0] <== in[i]; + eq[119][i].in[1] <== 46; + eq[120][i] = IsEqual(); + eq[120][i].in[0] <== in[i]; + eq[120][i].in[1] <== 47; + eq[121][i] = IsEqual(); + eq[121][i].in[0] <== in[i]; + eq[121][i].in[1] <== 58; + eq[122][i] = IsEqual(); + eq[122][i].in[0] <== in[i]; + eq[122][i].in[1] <== 60; + eq[123][i] = IsEqual(); + eq[123][i].in[0] <== in[i]; + eq[123][i].in[1] <== 61; + eq[124][i] = IsEqual(); + eq[124][i].in[0] <== in[i]; + eq[124][i].in[1] <== 62; + eq[125][i] = IsEqual(); + eq[125][i].in[0] <== in[i]; + eq[125][i].in[1] <== 63; + eq[126][i] = IsEqual(); + eq[126][i].in[0] <== in[i]; + eq[126][i].in[1] <== 64; + and[18][i] = AND(); + and[18][i].a <== states[i][23]; + multi_or[5][i] = MultiOR(26); + multi_or[5][i].in[0] <== and[17][i].out; + multi_or[5][i].in[1] <== eq[102][i].out; + multi_or[5][i].in[2] <== eq[103][i].out; + multi_or[5][i].in[3] <== eq[104][i].out; + multi_or[5][i].in[4] <== eq[105][i].out; + multi_or[5][i].in[5] <== eq[106][i].out; + multi_or[5][i].in[6] <== eq[107][i].out; + multi_or[5][i].in[7] <== eq[108][i].out; + multi_or[5][i].in[8] <== eq[109][i].out; + multi_or[5][i].in[9] <== eq[110][i].out; + multi_or[5][i].in[10] <== eq[111][i].out; + multi_or[5][i].in[11] <== eq[112][i].out; + multi_or[5][i].in[12] <== eq[113][i].out; + multi_or[5][i].in[13] <== eq[114][i].out; + multi_or[5][i].in[14] <== eq[115][i].out; + multi_or[5][i].in[15] <== eq[116][i].out; + multi_or[5][i].in[16] <== eq[117][i].out; + multi_or[5][i].in[17] <== eq[118][i].out; + multi_or[5][i].in[18] <== eq[119][i].out; + multi_or[5][i].in[19] <== eq[120][i].out; + multi_or[5][i].in[20] <== eq[121][i].out; + multi_or[5][i].in[21] <== eq[122][i].out; + multi_or[5][i].in[22] <== eq[123][i].out; + multi_or[5][i].in[23] <== eq[124][i].out; + multi_or[5][i].in[24] <== eq[125][i].out; + multi_or[5][i].in[25] <== eq[126][i].out; + and[18][i].b <== multi_or[5][i].out; + multi_or[6][i] = MultiOR(4); + multi_or[6][i].in[0] <== and[11][i].out; + multi_or[6][i].in[1] <== and[14][i].out; + multi_or[6][i].in[2] <== and[16][i].out; + multi_or[6][i].in[3] <== and[18][i].out; + states[i+1][4] <== multi_or[6][i].out; + state_changed[i].in[3] <== states[i+1][4]; + eq[127][i] = IsEqual(); + eq[127][i].in[0] <== in[i]; + eq[127][i].in[1] <== 107; + and[19][i] = AND(); + and[19][i].a <== states[i][3]; + and[19][i].b <== eq[127][i].out; + states[i+1][5] <== and[19][i].out; + state_changed[i].in[4] <== states[i+1][5]; + eq[128][i] = IsEqual(); + eq[128][i].in[0] <== in[i]; + eq[128][i].in[1] <== 105; + and[20][i] = AND(); + and[20][i].a <== states[i][5]; + and[20][i].b <== eq[128][i].out; + states[i+1][6] <== and[20][i].out; + state_changed[i].in[5] <== states[i+1][6]; + eq[129][i] = IsEqual(); + eq[129][i].in[0] <== in[i]; + eq[129][i].in[1] <== 109; + and[21][i] = AND(); + and[21][i].a <== states[i][6]; + and[21][i].b <== eq[129][i].out; + states[i+1][7] <== and[21][i].out; + state_changed[i].in[6] <== states[i+1][7]; + eq[130][i] = IsEqual(); + eq[130][i].in[0] <== in[i]; + eq[130][i].in[1] <== 45; + and[22][i] = AND(); + and[22][i].a <== states[i][7]; + and[22][i].b <== eq[130][i].out; + states[i+1][8] <== and[22][i].out; + state_changed[i].in[7] <== states[i+1][8]; + eq[131][i] = IsEqual(); + eq[131][i].in[0] <== in[i]; + eq[131][i].in[1] <== 115; + and[23][i] = AND(); + and[23][i].a <== states[i][8]; + and[23][i].b <== eq[131][i].out; + states[i+1][9] <== and[23][i].out; + state_changed[i].in[8] <== states[i+1][9]; + eq[132][i] = IsEqual(); + eq[132][i].in[0] <== in[i]; + eq[132][i].in[1] <== 59; + and[24][i] = AND(); + and[24][i].a <== states[i][4]; + and[24][i].b <== eq[132][i].out; + states[i+1][10] <== and[24][i].out; + state_changed[i].in[9] <== states[i+1][10]; + eq[133][i] = IsEqual(); + eq[133][i].in[0] <== in[i]; + eq[133][i].in[1] <== 105; + and[25][i] = AND(); + and[25][i].a <== states[i][9]; + and[25][i].b <== eq[133][i].out; + states[i+1][11] <== and[25][i].out; + state_changed[i].in[10] <== states[i+1][11]; + eq[134][i] = IsEqual(); + eq[134][i].in[0] <== in[i]; + eq[134][i].in[1] <== 103; + and[26][i] = AND(); + and[26][i].a <== states[i][11]; + and[26][i].b <== eq[134][i].out; + states[i+1][12] <== and[26][i].out; + state_changed[i].in[11] <== states[i+1][12]; + eq[135][i] = IsEqual(); + eq[135][i].in[0] <== in[i]; + eq[135][i].in[1] <== 110; + and[27][i] = AND(); + and[27][i].a <== states[i][12]; + and[27][i].b <== eq[135][i].out; + states[i+1][13] <== and[27][i].out; + state_changed[i].in[12] <== states[i+1][13]; + eq[136][i] = IsEqual(); + eq[136][i].in[0] <== in[i]; + eq[136][i].in[1] <== 32; + and[28][i] = AND(); + and[28][i].a <== states[i][10]; + and[28][i].b <== eq[136][i].out; + eq[137][i] = IsEqual(); + eq[137][i].in[0] <== in[i]; + eq[137][i].in[1] <== 32; + and[29][i] = AND(); + and[29][i].a <== states[i][24]; + and[29][i].b <== eq[137][i].out; + multi_or[7][i] = MultiOR(2); + multi_or[7][i].in[0] <== and[28][i].out; + multi_or[7][i].in[1] <== and[29][i].out; + states[i+1][14] <== multi_or[7][i].out; + state_changed[i].in[13] <== states[i+1][14]; + eq[138][i] = IsEqual(); + eq[138][i].in[0] <== in[i]; + eq[138][i].in[1] <== 97; + and[30][i] = AND(); + and[30][i].a <== states[i][13]; + and[30][i].b <== eq[138][i].out; + states[i+1][15] <== and[30][i].out; + state_changed[i].in[14] <== states[i+1][15]; + eq[139][i] = IsEqual(); + eq[139][i].in[0] <== in[i]; + eq[139][i].in[1] <== 116; + and[31][i] = AND(); + and[31][i].a <== states[i][14]; + and[31][i].b <== eq[139][i].out; + states[i+1][16] <== and[31][i].out; + state_changed[i].in[15] <== states[i+1][16]; + eq[140][i] = IsEqual(); + eq[140][i].in[0] <== in[i]; + eq[140][i].in[1] <== 116; + and[32][i] = AND(); + and[32][i].a <== states[i][15]; + and[32][i].b <== eq[140][i].out; + states[i+1][17] <== and[32][i].out; + state_changed[i].in[16] <== states[i+1][17]; + eq[141][i] = IsEqual(); + eq[141][i].in[0] <== in[i]; + eq[141][i].in[1] <== 61; + and[33][i] = AND(); + and[33][i].a <== states[i][16]; + and[33][i].b <== eq[141][i].out; + states[i+1][18] <== and[33][i].out; + state_changed[i].in[17] <== states[i+1][18]; + eq[142][i] = IsEqual(); + eq[142][i].in[0] <== in[i]; + eq[142][i].in[1] <== 117; + and[34][i] = AND(); + and[34][i].a <== states[i][17]; + and[34][i].b <== eq[142][i].out; + states[i+1][19] <== and[34][i].out; + state_changed[i].in[18] <== states[i+1][19]; + eq[143][i] = IsEqual(); + eq[143][i].in[0] <== in[i]; + eq[143][i].in[1] <== 114; + and[35][i] = AND(); + and[35][i].a <== states[i][19]; + and[35][i].b <== eq[143][i].out; + states[i+1][20] <== and[35][i].out; + state_changed[i].in[19] <== states[i+1][20]; + eq[144][i] = IsEqual(); + eq[144][i].in[0] <== in[i]; + eq[144][i].in[1] <== 101; + and[36][i] = AND(); + and[36][i].a <== states[i][20]; + and[36][i].b <== eq[144][i].out; + states[i+1][21] <== and[36][i].out; + state_changed[i].in[20] <== states[i+1][21]; + eq[145][i] = IsEqual(); + eq[145][i].in[0] <== in[i]; + eq[145][i].in[1] <== 58; + and[37][i] = AND(); + and[37][i].a <== states[i][21]; + and[37][i].b <== eq[145][i].out; + states[i+1][22] <== and[37][i].out; + state_changed[i].in[21] <== states[i+1][22]; + lt[18][i] = LessThan(8); + lt[18][i].in[0] <== 47; + lt[18][i].in[1] <== in[i]; + lt[19][i] = LessThan(8); + lt[19][i].in[0] <== in[i]; + lt[19][i].in[1] <== 58; + and[38][i] = AND(); + and[38][i].a <== lt[18][i].out; + and[38][i].b <== lt[19][i].out; + and[39][i] = AND(); + and[39][i].a <== states[i][18]; + and[39][i].b <== and[38][i].out; + lt[20][i] = LessThan(8); + lt[20][i].in[0] <== 47; + lt[20][i].in[1] <== in[i]; + lt[21][i] = LessThan(8); + lt[21][i].in[0] <== in[i]; + lt[21][i].in[1] <== 58; + and[40][i] = AND(); + and[40][i].a <== lt[20][i].out; + and[40][i].b <== lt[21][i].out; + and[41][i] = AND(); + and[41][i].a <== states[i][23]; + and[41][i].b <== and[40][i].out; + multi_or[8][i] = MultiOR(2); + multi_or[8][i].in[0] <== and[39][i].out; + multi_or[8][i].in[1] <== and[41][i].out; + states[i+1][23] <== multi_or[8][i].out; + state_changed[i].in[22] <== states[i+1][23]; + eq[146][i] = IsEqual(); + eq[146][i].in[0] <== in[i]; + eq[146][i].in[1] <== 59; + and[42][i] = AND(); + and[42][i].a <== states[i][23]; + and[42][i].b <== eq[146][i].out; + states[i+1][24] <== and[42][i].out; + state_changed[i].in[23] <== states[i+1][24]; + states[i+1][0] <== 1 - state_changed[i].out; + } + + component final_state_result = MultiOR(num_bytes+1); + for (var i = 0; i <= num_bytes; i++) { + final_state_result.in[i] <== states[i][24]; + } + out <== final_state_result.out; + + signal is_consecutive[msg_bytes+1][2]; + is_consecutive[msg_bytes][1] <== 1; + for (var i = 0; i < msg_bytes; i++) { + is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][24] * (1 - is_consecutive[msg_bytes-i][1]) + is_consecutive[msg_bytes-i][1]; + is_consecutive[msg_bytes-1-i][1] <== state_changed[msg_bytes-i].out * is_consecutive[msg_bytes-1-i][0]; + } + signal is_substr0[msg_bytes][3]; + signal is_reveal0[msg_bytes]; + signal output reveal0[msg_bytes]; + for (var i = 0; i < msg_bytes; i++) { + is_substr0[i][0] <== 0; + is_substr0[i][1] <== is_substr0[i][0] + states[i+1][23] * states[i+2][23]; + is_substr0[i][2] <== is_substr0[i][1] + states[i+1][18] * states[i+2][23]; + is_reveal0[i] <== is_substr0[i][2] * is_consecutive[i][1]; + reveal0[i] <== in[i+1] * is_reveal0[i]; + } +} \ No newline at end of file diff --git a/packages/circom/circuits/common/timestamp.json b/packages/circom/circuits/common/timestamp.json new file mode 100644 index 0000000..de7d1bd --- /dev/null +++ b/packages/circom/circuits/common/timestamp.json @@ -0,0 +1,25 @@ +{ + "max_byte_size": 1024, + "parts": [ + { + "is_public": false, + "regex_def": "dkim-signature:", + "max_size": 15 + }, + { + "is_public": false, + "regex_def": "((a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)+=(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|\"|#|$|%|&|\\'|\\(|\\)|\\*|\\+|,|-|\\.|\\/|:|<|=|>|\\?|@|\\[|\\\\|\\]|\\^|_|`|{|\\||}|~| |\t|\n|\r|\\x0b|\\x0c)+; )+t=", + "max_size": 128 + }, + { + "is_public": true, + "regex_def": "(0|1|2|3|4|5|6|7|8|9)+", + "max_size": 10 + }, + { + "is_public": false, + "regex_def": ";", + "max_size": 1 + } + ] +} \ No newline at end of file diff --git a/packages/circom/circuits/common/timestamp_regex.circom b/packages/circom/circuits/common/timestamp_regex.circom new file mode 100644 index 0000000..4c95295 --- /dev/null +++ b/packages/circom/circuits/common/timestamp_regex.circom @@ -0,0 +1,865 @@ +pragma circom 2.1.5; + +include "zk-regex-circom/circuits/regex_helpers.circom"; + +template TimestampRegex(msg_bytes) { + signal input msg[msg_bytes]; + signal output out; + + var num_bytes = msg_bytes+1; + signal in[num_bytes]; + in[0]<==128; + for (var i = 0; i < msg_bytes; i++) { + in[i+1] <== msg[i]; + } + + component eq[147][num_bytes]; + component lt[18][num_bytes]; + component and[39][num_bytes]; + component multi_or[9][num_bytes]; + signal states[num_bytes+1][25]; + component state_changed[num_bytes]; + + states[0][0] <== 1; + for (var i = 1; i < 25; i++) { + states[0][i] <== 0; + } + + for (var i = 0; i < num_bytes; i++) { + state_changed[i] = MultiOR(24); + eq[0][i] = IsEqual(); + eq[0][i].in[0] <== in[i]; + eq[0][i].in[1] <== 97; + eq[1][i] = IsEqual(); + eq[1][i].in[0] <== in[i]; + eq[1][i].in[1] <== 98; + eq[2][i] = IsEqual(); + eq[2][i].in[0] <== in[i]; + eq[2][i].in[1] <== 99; + eq[3][i] = IsEqual(); + eq[3][i].in[0] <== in[i]; + eq[3][i].in[1] <== 100; + eq[4][i] = IsEqual(); + eq[4][i].in[0] <== in[i]; + eq[4][i].in[1] <== 101; + eq[5][i] = IsEqual(); + eq[5][i].in[0] <== in[i]; + eq[5][i].in[1] <== 102; + eq[6][i] = IsEqual(); + eq[6][i].in[0] <== in[i]; + eq[6][i].in[1] <== 103; + eq[7][i] = IsEqual(); + eq[7][i].in[0] <== in[i]; + eq[7][i].in[1] <== 104; + eq[8][i] = IsEqual(); + eq[8][i].in[0] <== in[i]; + eq[8][i].in[1] <== 105; + eq[9][i] = IsEqual(); + eq[9][i].in[0] <== in[i]; + eq[9][i].in[1] <== 106; + eq[10][i] = IsEqual(); + eq[10][i].in[0] <== in[i]; + eq[10][i].in[1] <== 107; + eq[11][i] = IsEqual(); + eq[11][i].in[0] <== in[i]; + eq[11][i].in[1] <== 108; + eq[12][i] = IsEqual(); + eq[12][i].in[0] <== in[i]; + eq[12][i].in[1] <== 109; + eq[13][i] = IsEqual(); + eq[13][i].in[0] <== in[i]; + eq[13][i].in[1] <== 110; + eq[14][i] = IsEqual(); + eq[14][i].in[0] <== in[i]; + eq[14][i].in[1] <== 111; + eq[15][i] = IsEqual(); + eq[15][i].in[0] <== in[i]; + eq[15][i].in[1] <== 112; + eq[16][i] = IsEqual(); + eq[16][i].in[0] <== in[i]; + eq[16][i].in[1] <== 113; + eq[17][i] = IsEqual(); + eq[17][i].in[0] <== in[i]; + eq[17][i].in[1] <== 114; + eq[18][i] = IsEqual(); + eq[18][i].in[0] <== in[i]; + eq[18][i].in[1] <== 115; + eq[19][i] = IsEqual(); + eq[19][i].in[0] <== in[i]; + eq[19][i].in[1] <== 117; + eq[20][i] = IsEqual(); + eq[20][i].in[0] <== in[i]; + eq[20][i].in[1] <== 118; + eq[21][i] = IsEqual(); + eq[21][i].in[0] <== in[i]; + eq[21][i].in[1] <== 119; + eq[22][i] = IsEqual(); + eq[22][i].in[0] <== in[i]; + eq[22][i].in[1] <== 120; + eq[23][i] = IsEqual(); + eq[23][i].in[0] <== in[i]; + eq[23][i].in[1] <== 121; + eq[24][i] = IsEqual(); + eq[24][i].in[0] <== in[i]; + eq[24][i].in[1] <== 122; + and[0][i] = AND(); + and[0][i].a <== states[i][13]; + multi_or[0][i] = MultiOR(25); + multi_or[0][i].in[0] <== eq[0][i].out; + multi_or[0][i].in[1] <== eq[1][i].out; + multi_or[0][i].in[2] <== eq[2][i].out; + multi_or[0][i].in[3] <== eq[3][i].out; + multi_or[0][i].in[4] <== eq[4][i].out; + multi_or[0][i].in[5] <== eq[5][i].out; + multi_or[0][i].in[6] <== eq[6][i].out; + multi_or[0][i].in[7] <== eq[7][i].out; + multi_or[0][i].in[8] <== eq[8][i].out; + multi_or[0][i].in[9] <== eq[9][i].out; + multi_or[0][i].in[10] <== eq[10][i].out; + multi_or[0][i].in[11] <== eq[11][i].out; + multi_or[0][i].in[12] <== eq[12][i].out; + multi_or[0][i].in[13] <== eq[13][i].out; + multi_or[0][i].in[14] <== eq[14][i].out; + multi_or[0][i].in[15] <== eq[15][i].out; + multi_or[0][i].in[16] <== eq[16][i].out; + multi_or[0][i].in[17] <== eq[17][i].out; + multi_or[0][i].in[18] <== eq[18][i].out; + multi_or[0][i].in[19] <== eq[19][i].out; + multi_or[0][i].in[20] <== eq[20][i].out; + multi_or[0][i].in[21] <== eq[21][i].out; + multi_or[0][i].in[22] <== eq[22][i].out; + multi_or[0][i].in[23] <== eq[23][i].out; + multi_or[0][i].in[24] <== eq[24][i].out; + and[0][i].b <== multi_or[0][i].out; + lt[0][i] = LessThan(8); + lt[0][i].in[0] <== 96; + lt[0][i].in[1] <== in[i]; + lt[1][i] = LessThan(8); + lt[1][i].in[0] <== in[i]; + lt[1][i].in[1] <== 123; + and[1][i] = AND(); + and[1][i].a <== lt[0][i].out; + and[1][i].b <== lt[1][i].out; + and[2][i] = AND(); + and[2][i].a <== states[i][23]; + and[2][i].b <== and[1][i].out; + multi_or[1][i] = MultiOR(2); + multi_or[1][i].in[0] <== and[0][i].out; + multi_or[1][i].in[1] <== and[2][i].out; + states[i+1][1] <== multi_or[1][i].out; + state_changed[i].in[0] <== states[i+1][1]; + eq[25][i] = IsEqual(); + eq[25][i].in[0] <== in[i]; + eq[25][i].in[1] <== 61; + and[3][i] = AND(); + and[3][i].a <== states[i][1]; + and[3][i].b <== eq[25][i].out; + states[i+1][2] <== and[3][i].out; + state_changed[i].in[1] <== states[i+1][2]; + lt[2][i] = LessThan(8); + lt[2][i].in[0] <== 47; + lt[2][i].in[1] <== in[i]; + lt[3][i] = LessThan(8); + lt[3][i].in[0] <== in[i]; + lt[3][i].in[1] <== 58; + and[4][i] = AND(); + and[4][i].a <== lt[2][i].out; + and[4][i].b <== lt[3][i].out; + lt[4][i] = LessThan(8); + lt[4][i].in[0] <== 64; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 127; + and[5][i] = AND(); + and[5][i].a <== lt[4][i].out; + and[5][i].b <== lt[5][i].out; + eq[26][i] = IsEqual(); + eq[26][i].in[0] <== in[i]; + eq[26][i].in[1] <== 9; + eq[27][i] = IsEqual(); + eq[27][i].in[0] <== in[i]; + eq[27][i].in[1] <== 10; + eq[28][i] = IsEqual(); + eq[28][i].in[0] <== in[i]; + eq[28][i].in[1] <== 13; + eq[29][i] = IsEqual(); + eq[29][i].in[0] <== in[i]; + eq[29][i].in[1] <== 32; + eq[30][i] = IsEqual(); + eq[30][i].in[0] <== in[i]; + eq[30][i].in[1] <== 33; + eq[31][i] = IsEqual(); + eq[31][i].in[0] <== in[i]; + eq[31][i].in[1] <== 34; + eq[32][i] = IsEqual(); + eq[32][i].in[0] <== in[i]; + eq[32][i].in[1] <== 35; + eq[33][i] = IsEqual(); + eq[33][i].in[0] <== in[i]; + eq[33][i].in[1] <== 36; + eq[34][i] = IsEqual(); + eq[34][i].in[0] <== in[i]; + eq[34][i].in[1] <== 37; + eq[35][i] = IsEqual(); + eq[35][i].in[0] <== in[i]; + eq[35][i].in[1] <== 38; + eq[36][i] = IsEqual(); + eq[36][i].in[0] <== in[i]; + eq[36][i].in[1] <== 39; + eq[37][i] = IsEqual(); + eq[37][i].in[0] <== in[i]; + eq[37][i].in[1] <== 40; + eq[38][i] = IsEqual(); + eq[38][i].in[0] <== in[i]; + eq[38][i].in[1] <== 41; + eq[39][i] = IsEqual(); + eq[39][i].in[0] <== in[i]; + eq[39][i].in[1] <== 42; + eq[40][i] = IsEqual(); + eq[40][i].in[0] <== in[i]; + eq[40][i].in[1] <== 43; + eq[41][i] = IsEqual(); + eq[41][i].in[0] <== in[i]; + eq[41][i].in[1] <== 44; + eq[42][i] = IsEqual(); + eq[42][i].in[0] <== in[i]; + eq[42][i].in[1] <== 45; + eq[43][i] = IsEqual(); + eq[43][i].in[0] <== in[i]; + eq[43][i].in[1] <== 46; + eq[44][i] = IsEqual(); + eq[44][i].in[0] <== in[i]; + eq[44][i].in[1] <== 47; + eq[45][i] = IsEqual(); + eq[45][i].in[0] <== in[i]; + eq[45][i].in[1] <== 58; + eq[46][i] = IsEqual(); + eq[46][i].in[0] <== in[i]; + eq[46][i].in[1] <== 60; + eq[47][i] = IsEqual(); + eq[47][i].in[0] <== in[i]; + eq[47][i].in[1] <== 61; + eq[48][i] = IsEqual(); + eq[48][i].in[0] <== in[i]; + eq[48][i].in[1] <== 62; + eq[49][i] = IsEqual(); + eq[49][i].in[0] <== in[i]; + eq[49][i].in[1] <== 63; + eq[50][i] = IsEqual(); + eq[50][i].in[0] <== in[i]; + eq[50][i].in[1] <== 64; + and[6][i] = AND(); + and[6][i].a <== states[i][2]; + multi_or[2][i] = MultiOR(27); + multi_or[2][i].in[0] <== and[4][i].out; + multi_or[2][i].in[1] <== and[5][i].out; + multi_or[2][i].in[2] <== eq[26][i].out; + multi_or[2][i].in[3] <== eq[27][i].out; + multi_or[2][i].in[4] <== eq[28][i].out; + multi_or[2][i].in[5] <== eq[29][i].out; + multi_or[2][i].in[6] <== eq[30][i].out; + multi_or[2][i].in[7] <== eq[31][i].out; + multi_or[2][i].in[8] <== eq[32][i].out; + multi_or[2][i].in[9] <== eq[33][i].out; + multi_or[2][i].in[10] <== eq[34][i].out; + multi_or[2][i].in[11] <== eq[35][i].out; + multi_or[2][i].in[12] <== eq[36][i].out; + multi_or[2][i].in[13] <== eq[37][i].out; + multi_or[2][i].in[14] <== eq[38][i].out; + multi_or[2][i].in[15] <== eq[39][i].out; + multi_or[2][i].in[16] <== eq[40][i].out; + multi_or[2][i].in[17] <== eq[41][i].out; + multi_or[2][i].in[18] <== eq[42][i].out; + multi_or[2][i].in[19] <== eq[43][i].out; + multi_or[2][i].in[20] <== eq[44][i].out; + multi_or[2][i].in[21] <== eq[45][i].out; + multi_or[2][i].in[22] <== eq[46][i].out; + multi_or[2][i].in[23] <== eq[47][i].out; + multi_or[2][i].in[24] <== eq[48][i].out; + multi_or[2][i].in[25] <== eq[49][i].out; + multi_or[2][i].in[26] <== eq[50][i].out; + and[6][i].b <== multi_or[2][i].out; + lt[6][i] = LessThan(8); + lt[6][i].in[0] <== 47; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 58; + and[7][i] = AND(); + and[7][i].a <== lt[6][i].out; + and[7][i].b <== lt[7][i].out; + lt[8][i] = LessThan(8); + lt[8][i].in[0] <== 64; + lt[8][i].in[1] <== in[i]; + lt[9][i] = LessThan(8); + lt[9][i].in[0] <== in[i]; + lt[9][i].in[1] <== 127; + and[8][i] = AND(); + and[8][i].a <== lt[8][i].out; + and[8][i].b <== lt[9][i].out; + eq[51][i] = IsEqual(); + eq[51][i].in[0] <== in[i]; + eq[51][i].in[1] <== 9; + eq[52][i] = IsEqual(); + eq[52][i].in[0] <== in[i]; + eq[52][i].in[1] <== 10; + eq[53][i] = IsEqual(); + eq[53][i].in[0] <== in[i]; + eq[53][i].in[1] <== 13; + eq[54][i] = IsEqual(); + eq[54][i].in[0] <== in[i]; + eq[54][i].in[1] <== 32; + eq[55][i] = IsEqual(); + eq[55][i].in[0] <== in[i]; + eq[55][i].in[1] <== 33; + eq[56][i] = IsEqual(); + eq[56][i].in[0] <== in[i]; + eq[56][i].in[1] <== 34; + eq[57][i] = IsEqual(); + eq[57][i].in[0] <== in[i]; + eq[57][i].in[1] <== 35; + eq[58][i] = IsEqual(); + eq[58][i].in[0] <== in[i]; + eq[58][i].in[1] <== 36; + eq[59][i] = IsEqual(); + eq[59][i].in[0] <== in[i]; + eq[59][i].in[1] <== 37; + eq[60][i] = IsEqual(); + eq[60][i].in[0] <== in[i]; + eq[60][i].in[1] <== 38; + eq[61][i] = IsEqual(); + eq[61][i].in[0] <== in[i]; + eq[61][i].in[1] <== 39; + eq[62][i] = IsEqual(); + eq[62][i].in[0] <== in[i]; + eq[62][i].in[1] <== 40; + eq[63][i] = IsEqual(); + eq[63][i].in[0] <== in[i]; + eq[63][i].in[1] <== 41; + eq[64][i] = IsEqual(); + eq[64][i].in[0] <== in[i]; + eq[64][i].in[1] <== 42; + eq[65][i] = IsEqual(); + eq[65][i].in[0] <== in[i]; + eq[65][i].in[1] <== 43; + eq[66][i] = IsEqual(); + eq[66][i].in[0] <== in[i]; + eq[66][i].in[1] <== 44; + eq[67][i] = IsEqual(); + eq[67][i].in[0] <== in[i]; + eq[67][i].in[1] <== 45; + eq[68][i] = IsEqual(); + eq[68][i].in[0] <== in[i]; + eq[68][i].in[1] <== 46; + eq[69][i] = IsEqual(); + eq[69][i].in[0] <== in[i]; + eq[69][i].in[1] <== 47; + eq[70][i] = IsEqual(); + eq[70][i].in[0] <== in[i]; + eq[70][i].in[1] <== 58; + eq[71][i] = IsEqual(); + eq[71][i].in[0] <== in[i]; + eq[71][i].in[1] <== 60; + eq[72][i] = IsEqual(); + eq[72][i].in[0] <== in[i]; + eq[72][i].in[1] <== 61; + eq[73][i] = IsEqual(); + eq[73][i].in[0] <== in[i]; + eq[73][i].in[1] <== 62; + eq[74][i] = IsEqual(); + eq[74][i].in[0] <== in[i]; + eq[74][i].in[1] <== 63; + eq[75][i] = IsEqual(); + eq[75][i].in[0] <== in[i]; + eq[75][i].in[1] <== 64; + and[9][i] = AND(); + and[9][i].a <== states[i][3]; + multi_or[3][i] = MultiOR(27); + multi_or[3][i].in[0] <== and[7][i].out; + multi_or[3][i].in[1] <== and[8][i].out; + multi_or[3][i].in[2] <== eq[51][i].out; + multi_or[3][i].in[3] <== eq[52][i].out; + multi_or[3][i].in[4] <== eq[53][i].out; + multi_or[3][i].in[5] <== eq[54][i].out; + multi_or[3][i].in[6] <== eq[55][i].out; + multi_or[3][i].in[7] <== eq[56][i].out; + multi_or[3][i].in[8] <== eq[57][i].out; + multi_or[3][i].in[9] <== eq[58][i].out; + multi_or[3][i].in[10] <== eq[59][i].out; + multi_or[3][i].in[11] <== eq[60][i].out; + multi_or[3][i].in[12] <== eq[61][i].out; + multi_or[3][i].in[13] <== eq[62][i].out; + multi_or[3][i].in[14] <== eq[63][i].out; + multi_or[3][i].in[15] <== eq[64][i].out; + multi_or[3][i].in[16] <== eq[65][i].out; + multi_or[3][i].in[17] <== eq[66][i].out; + multi_or[3][i].in[18] <== eq[67][i].out; + multi_or[3][i].in[19] <== eq[68][i].out; + multi_or[3][i].in[20] <== eq[69][i].out; + multi_or[3][i].in[21] <== eq[70][i].out; + multi_or[3][i].in[22] <== eq[71][i].out; + multi_or[3][i].in[23] <== eq[72][i].out; + multi_or[3][i].in[24] <== eq[73][i].out; + multi_or[3][i].in[25] <== eq[74][i].out; + multi_or[3][i].in[26] <== eq[75][i].out; + and[9][i].b <== multi_or[3][i].out; + lt[10][i] = LessThan(8); + lt[10][i].in[0] <== 64; + lt[10][i].in[1] <== in[i]; + lt[11][i] = LessThan(8); + lt[11][i].in[0] <== in[i]; + lt[11][i].in[1] <== 127; + and[10][i] = AND(); + and[10][i].a <== lt[10][i].out; + and[10][i].b <== lt[11][i].out; + eq[76][i] = IsEqual(); + eq[76][i].in[0] <== in[i]; + eq[76][i].in[1] <== 9; + eq[77][i] = IsEqual(); + eq[77][i].in[0] <== in[i]; + eq[77][i].in[1] <== 10; + eq[78][i] = IsEqual(); + eq[78][i].in[0] <== in[i]; + eq[78][i].in[1] <== 13; + eq[79][i] = IsEqual(); + eq[79][i].in[0] <== in[i]; + eq[79][i].in[1] <== 32; + eq[80][i] = IsEqual(); + eq[80][i].in[0] <== in[i]; + eq[80][i].in[1] <== 33; + eq[81][i] = IsEqual(); + eq[81][i].in[0] <== in[i]; + eq[81][i].in[1] <== 34; + eq[82][i] = IsEqual(); + eq[82][i].in[0] <== in[i]; + eq[82][i].in[1] <== 35; + eq[83][i] = IsEqual(); + eq[83][i].in[0] <== in[i]; + eq[83][i].in[1] <== 36; + eq[84][i] = IsEqual(); + eq[84][i].in[0] <== in[i]; + eq[84][i].in[1] <== 37; + eq[85][i] = IsEqual(); + eq[85][i].in[0] <== in[i]; + eq[85][i].in[1] <== 38; + eq[86][i] = IsEqual(); + eq[86][i].in[0] <== in[i]; + eq[86][i].in[1] <== 39; + eq[87][i] = IsEqual(); + eq[87][i].in[0] <== in[i]; + eq[87][i].in[1] <== 40; + eq[88][i] = IsEqual(); + eq[88][i].in[0] <== in[i]; + eq[88][i].in[1] <== 41; + eq[89][i] = IsEqual(); + eq[89][i].in[0] <== in[i]; + eq[89][i].in[1] <== 42; + eq[90][i] = IsEqual(); + eq[90][i].in[0] <== in[i]; + eq[90][i].in[1] <== 43; + eq[91][i] = IsEqual(); + eq[91][i].in[0] <== in[i]; + eq[91][i].in[1] <== 44; + eq[92][i] = IsEqual(); + eq[92][i].in[0] <== in[i]; + eq[92][i].in[1] <== 45; + eq[93][i] = IsEqual(); + eq[93][i].in[0] <== in[i]; + eq[93][i].in[1] <== 46; + eq[94][i] = IsEqual(); + eq[94][i].in[0] <== in[i]; + eq[94][i].in[1] <== 47; + eq[95][i] = IsEqual(); + eq[95][i].in[0] <== in[i]; + eq[95][i].in[1] <== 58; + eq[96][i] = IsEqual(); + eq[96][i].in[0] <== in[i]; + eq[96][i].in[1] <== 60; + eq[97][i] = IsEqual(); + eq[97][i].in[0] <== in[i]; + eq[97][i].in[1] <== 61; + eq[98][i] = IsEqual(); + eq[98][i].in[0] <== in[i]; + eq[98][i].in[1] <== 62; + eq[99][i] = IsEqual(); + eq[99][i].in[0] <== in[i]; + eq[99][i].in[1] <== 63; + eq[100][i] = IsEqual(); + eq[100][i].in[0] <== in[i]; + eq[100][i].in[1] <== 64; + and[11][i] = AND(); + and[11][i].a <== states[i][16]; + multi_or[4][i] = MultiOR(26); + multi_or[4][i].in[0] <== and[10][i].out; + multi_or[4][i].in[1] <== eq[76][i].out; + multi_or[4][i].in[2] <== eq[77][i].out; + multi_or[4][i].in[3] <== eq[78][i].out; + multi_or[4][i].in[4] <== eq[79][i].out; + multi_or[4][i].in[5] <== eq[80][i].out; + multi_or[4][i].in[6] <== eq[81][i].out; + multi_or[4][i].in[7] <== eq[82][i].out; + multi_or[4][i].in[8] <== eq[83][i].out; + multi_or[4][i].in[9] <== eq[84][i].out; + multi_or[4][i].in[10] <== eq[85][i].out; + multi_or[4][i].in[11] <== eq[86][i].out; + multi_or[4][i].in[12] <== eq[87][i].out; + multi_or[4][i].in[13] <== eq[88][i].out; + multi_or[4][i].in[14] <== eq[89][i].out; + multi_or[4][i].in[15] <== eq[90][i].out; + multi_or[4][i].in[16] <== eq[91][i].out; + multi_or[4][i].in[17] <== eq[92][i].out; + multi_or[4][i].in[18] <== eq[93][i].out; + multi_or[4][i].in[19] <== eq[94][i].out; + multi_or[4][i].in[20] <== eq[95][i].out; + multi_or[4][i].in[21] <== eq[96][i].out; + multi_or[4][i].in[22] <== eq[97][i].out; + multi_or[4][i].in[23] <== eq[98][i].out; + multi_or[4][i].in[24] <== eq[99][i].out; + multi_or[4][i].in[25] <== eq[100][i].out; + and[11][i].b <== multi_or[4][i].out; + lt[12][i] = LessThan(8); + lt[12][i].in[0] <== 64; + lt[12][i].in[1] <== in[i]; + lt[13][i] = LessThan(8); + lt[13][i].in[0] <== in[i]; + lt[13][i].in[1] <== 127; + and[12][i] = AND(); + and[12][i].a <== lt[12][i].out; + and[12][i].b <== lt[13][i].out; + eq[101][i] = IsEqual(); + eq[101][i].in[0] <== in[i]; + eq[101][i].in[1] <== 9; + eq[102][i] = IsEqual(); + eq[102][i].in[0] <== in[i]; + eq[102][i].in[1] <== 10; + eq[103][i] = IsEqual(); + eq[103][i].in[0] <== in[i]; + eq[103][i].in[1] <== 13; + eq[104][i] = IsEqual(); + eq[104][i].in[0] <== in[i]; + eq[104][i].in[1] <== 32; + eq[105][i] = IsEqual(); + eq[105][i].in[0] <== in[i]; + eq[105][i].in[1] <== 33; + eq[106][i] = IsEqual(); + eq[106][i].in[0] <== in[i]; + eq[106][i].in[1] <== 34; + eq[107][i] = IsEqual(); + eq[107][i].in[0] <== in[i]; + eq[107][i].in[1] <== 35; + eq[108][i] = IsEqual(); + eq[108][i].in[0] <== in[i]; + eq[108][i].in[1] <== 36; + eq[109][i] = IsEqual(); + eq[109][i].in[0] <== in[i]; + eq[109][i].in[1] <== 37; + eq[110][i] = IsEqual(); + eq[110][i].in[0] <== in[i]; + eq[110][i].in[1] <== 38; + eq[111][i] = IsEqual(); + eq[111][i].in[0] <== in[i]; + eq[111][i].in[1] <== 39; + eq[112][i] = IsEqual(); + eq[112][i].in[0] <== in[i]; + eq[112][i].in[1] <== 40; + eq[113][i] = IsEqual(); + eq[113][i].in[0] <== in[i]; + eq[113][i].in[1] <== 41; + eq[114][i] = IsEqual(); + eq[114][i].in[0] <== in[i]; + eq[114][i].in[1] <== 42; + eq[115][i] = IsEqual(); + eq[115][i].in[0] <== in[i]; + eq[115][i].in[1] <== 43; + eq[116][i] = IsEqual(); + eq[116][i].in[0] <== in[i]; + eq[116][i].in[1] <== 44; + eq[117][i] = IsEqual(); + eq[117][i].in[0] <== in[i]; + eq[117][i].in[1] <== 45; + eq[118][i] = IsEqual(); + eq[118][i].in[0] <== in[i]; + eq[118][i].in[1] <== 46; + eq[119][i] = IsEqual(); + eq[119][i].in[0] <== in[i]; + eq[119][i].in[1] <== 47; + eq[120][i] = IsEqual(); + eq[120][i].in[0] <== in[i]; + eq[120][i].in[1] <== 58; + eq[121][i] = IsEqual(); + eq[121][i].in[0] <== in[i]; + eq[121][i].in[1] <== 60; + eq[122][i] = IsEqual(); + eq[122][i].in[0] <== in[i]; + eq[122][i].in[1] <== 61; + eq[123][i] = IsEqual(); + eq[123][i].in[0] <== in[i]; + eq[123][i].in[1] <== 62; + eq[124][i] = IsEqual(); + eq[124][i].in[0] <== in[i]; + eq[124][i].in[1] <== 63; + eq[125][i] = IsEqual(); + eq[125][i].in[0] <== in[i]; + eq[125][i].in[1] <== 64; + and[13][i] = AND(); + and[13][i].a <== states[i][21]; + multi_or[5][i] = MultiOR(26); + multi_or[5][i].in[0] <== and[12][i].out; + multi_or[5][i].in[1] <== eq[101][i].out; + multi_or[5][i].in[2] <== eq[102][i].out; + multi_or[5][i].in[3] <== eq[103][i].out; + multi_or[5][i].in[4] <== eq[104][i].out; + multi_or[5][i].in[5] <== eq[105][i].out; + multi_or[5][i].in[6] <== eq[106][i].out; + multi_or[5][i].in[7] <== eq[107][i].out; + multi_or[5][i].in[8] <== eq[108][i].out; + multi_or[5][i].in[9] <== eq[109][i].out; + multi_or[5][i].in[10] <== eq[110][i].out; + multi_or[5][i].in[11] <== eq[111][i].out; + multi_or[5][i].in[12] <== eq[112][i].out; + multi_or[5][i].in[13] <== eq[113][i].out; + multi_or[5][i].in[14] <== eq[114][i].out; + multi_or[5][i].in[15] <== eq[115][i].out; + multi_or[5][i].in[16] <== eq[116][i].out; + multi_or[5][i].in[17] <== eq[117][i].out; + multi_or[5][i].in[18] <== eq[118][i].out; + multi_or[5][i].in[19] <== eq[119][i].out; + multi_or[5][i].in[20] <== eq[120][i].out; + multi_or[5][i].in[21] <== eq[121][i].out; + multi_or[5][i].in[22] <== eq[122][i].out; + multi_or[5][i].in[23] <== eq[123][i].out; + multi_or[5][i].in[24] <== eq[124][i].out; + multi_or[5][i].in[25] <== eq[125][i].out; + and[13][i].b <== multi_or[5][i].out; + multi_or[6][i] = MultiOR(4); + multi_or[6][i].in[0] <== and[6][i].out; + multi_or[6][i].in[1] <== and[9][i].out; + multi_or[6][i].in[2] <== and[11][i].out; + multi_or[6][i].in[3] <== and[13][i].out; + states[i+1][3] <== multi_or[6][i].out; + state_changed[i].in[2] <== states[i+1][3]; + eq[126][i] = IsEqual(); + eq[126][i].in[0] <== in[i]; + eq[126][i].in[1] <== 100; + and[14][i] = AND(); + and[14][i].a <== states[i][0]; + and[14][i].b <== eq[126][i].out; + states[i+1][4] <== and[14][i].out; + state_changed[i].in[3] <== states[i+1][4]; + eq[127][i] = IsEqual(); + eq[127][i].in[0] <== in[i]; + eq[127][i].in[1] <== 107; + and[15][i] = AND(); + and[15][i].a <== states[i][4]; + and[15][i].b <== eq[127][i].out; + states[i+1][5] <== and[15][i].out; + state_changed[i].in[4] <== states[i+1][5]; + eq[128][i] = IsEqual(); + eq[128][i].in[0] <== in[i]; + eq[128][i].in[1] <== 105; + and[16][i] = AND(); + and[16][i].a <== states[i][5]; + and[16][i].b <== eq[128][i].out; + states[i+1][6] <== and[16][i].out; + state_changed[i].in[5] <== states[i+1][6]; + eq[129][i] = IsEqual(); + eq[129][i].in[0] <== in[i]; + eq[129][i].in[1] <== 109; + and[17][i] = AND(); + and[17][i].a <== states[i][6]; + and[17][i].b <== eq[129][i].out; + states[i+1][7] <== and[17][i].out; + state_changed[i].in[6] <== states[i+1][7]; + eq[130][i] = IsEqual(); + eq[130][i].in[0] <== in[i]; + eq[130][i].in[1] <== 45; + and[18][i] = AND(); + and[18][i].a <== states[i][7]; + and[18][i].b <== eq[130][i].out; + states[i+1][8] <== and[18][i].out; + state_changed[i].in[7] <== states[i+1][8]; + eq[131][i] = IsEqual(); + eq[131][i].in[0] <== in[i]; + eq[131][i].in[1] <== 59; + and[19][i] = AND(); + and[19][i].a <== states[i][3]; + and[19][i].b <== eq[131][i].out; + states[i+1][9] <== and[19][i].out; + state_changed[i].in[8] <== states[i+1][9]; + eq[132][i] = IsEqual(); + eq[132][i].in[0] <== in[i]; + eq[132][i].in[1] <== 115; + and[20][i] = AND(); + and[20][i].a <== states[i][8]; + and[20][i].b <== eq[132][i].out; + states[i+1][10] <== and[20][i].out; + state_changed[i].in[9] <== states[i+1][10]; + eq[133][i] = IsEqual(); + eq[133][i].in[0] <== in[i]; + eq[133][i].in[1] <== 105; + and[21][i] = AND(); + and[21][i].a <== states[i][10]; + and[21][i].b <== eq[133][i].out; + states[i+1][11] <== and[21][i].out; + state_changed[i].in[10] <== states[i+1][11]; + eq[134][i] = IsEqual(); + eq[134][i].in[0] <== in[i]; + eq[134][i].in[1] <== 103; + and[22][i] = AND(); + and[22][i].a <== states[i][11]; + and[22][i].b <== eq[134][i].out; + states[i+1][12] <== and[22][i].out; + state_changed[i].in[11] <== states[i+1][12]; + eq[135][i] = IsEqual(); + eq[135][i].in[0] <== in[i]; + eq[135][i].in[1] <== 32; + and[23][i] = AND(); + and[23][i].a <== states[i][9]; + and[23][i].b <== eq[135][i].out; + eq[136][i] = IsEqual(); + eq[136][i].in[0] <== in[i]; + eq[136][i].in[1] <== 32; + and[24][i] = AND(); + and[24][i].a <== states[i][24]; + and[24][i].b <== eq[136][i].out; + multi_or[7][i] = MultiOR(2); + multi_or[7][i].in[0] <== and[23][i].out; + multi_or[7][i].in[1] <== and[24][i].out; + states[i+1][13] <== multi_or[7][i].out; + state_changed[i].in[12] <== states[i+1][13]; + eq[137][i] = IsEqual(); + eq[137][i].in[0] <== in[i]; + eq[137][i].in[1] <== 110; + and[25][i] = AND(); + and[25][i].a <== states[i][12]; + and[25][i].b <== eq[137][i].out; + states[i+1][14] <== and[25][i].out; + state_changed[i].in[13] <== states[i+1][14]; + eq[138][i] = IsEqual(); + eq[138][i].in[0] <== in[i]; + eq[138][i].in[1] <== 116; + and[26][i] = AND(); + and[26][i].a <== states[i][13]; + and[26][i].b <== eq[138][i].out; + states[i+1][15] <== and[26][i].out; + state_changed[i].in[14] <== states[i+1][15]; + eq[139][i] = IsEqual(); + eq[139][i].in[0] <== in[i]; + eq[139][i].in[1] <== 61; + and[27][i] = AND(); + and[27][i].a <== states[i][15]; + and[27][i].b <== eq[139][i].out; + states[i+1][16] <== and[27][i].out; + state_changed[i].in[15] <== states[i+1][16]; + eq[140][i] = IsEqual(); + eq[140][i].in[0] <== in[i]; + eq[140][i].in[1] <== 97; + and[28][i] = AND(); + and[28][i].a <== states[i][14]; + and[28][i].b <== eq[140][i].out; + states[i+1][17] <== and[28][i].out; + state_changed[i].in[16] <== states[i+1][17]; + eq[141][i] = IsEqual(); + eq[141][i].in[0] <== in[i]; + eq[141][i].in[1] <== 116; + and[29][i] = AND(); + and[29][i].a <== states[i][17]; + and[29][i].b <== eq[141][i].out; + states[i+1][18] <== and[29][i].out; + state_changed[i].in[17] <== states[i+1][18]; + eq[142][i] = IsEqual(); + eq[142][i].in[0] <== in[i]; + eq[142][i].in[1] <== 117; + and[30][i] = AND(); + and[30][i].a <== states[i][18]; + and[30][i].b <== eq[142][i].out; + states[i+1][19] <== and[30][i].out; + state_changed[i].in[18] <== states[i+1][19]; + eq[143][i] = IsEqual(); + eq[143][i].in[0] <== in[i]; + eq[143][i].in[1] <== 114; + and[31][i] = AND(); + and[31][i].a <== states[i][19]; + and[31][i].b <== eq[143][i].out; + states[i+1][20] <== and[31][i].out; + state_changed[i].in[19] <== states[i+1][20]; + lt[14][i] = LessThan(8); + lt[14][i].in[0] <== 47; + lt[14][i].in[1] <== in[i]; + lt[15][i] = LessThan(8); + lt[15][i].in[0] <== in[i]; + lt[15][i].in[1] <== 58; + and[32][i] = AND(); + and[32][i].a <== lt[14][i].out; + and[32][i].b <== lt[15][i].out; + and[33][i] = AND(); + and[33][i].a <== states[i][16]; + and[33][i].b <== and[32][i].out; + lt[16][i] = LessThan(8); + lt[16][i].in[0] <== 47; + lt[16][i].in[1] <== in[i]; + lt[17][i] = LessThan(8); + lt[17][i].in[0] <== in[i]; + lt[17][i].in[1] <== 58; + and[34][i] = AND(); + and[34][i].a <== lt[16][i].out; + and[34][i].b <== lt[17][i].out; + and[35][i] = AND(); + and[35][i].a <== states[i][21]; + and[35][i].b <== and[34][i].out; + multi_or[8][i] = MultiOR(2); + multi_or[8][i].in[0] <== and[33][i].out; + multi_or[8][i].in[1] <== and[35][i].out; + states[i+1][21] <== multi_or[8][i].out; + state_changed[i].in[20] <== states[i+1][21]; + eq[144][i] = IsEqual(); + eq[144][i].in[0] <== in[i]; + eq[144][i].in[1] <== 101; + and[36][i] = AND(); + and[36][i].a <== states[i][20]; + and[36][i].b <== eq[144][i].out; + states[i+1][22] <== and[36][i].out; + state_changed[i].in[21] <== states[i+1][22]; + eq[145][i] = IsEqual(); + eq[145][i].in[0] <== in[i]; + eq[145][i].in[1] <== 58; + and[37][i] = AND(); + and[37][i].a <== states[i][22]; + and[37][i].b <== eq[145][i].out; + states[i+1][23] <== and[37][i].out; + state_changed[i].in[22] <== states[i+1][23]; + eq[146][i] = IsEqual(); + eq[146][i].in[0] <== in[i]; + eq[146][i].in[1] <== 59; + and[38][i] = AND(); + and[38][i].a <== states[i][21]; + and[38][i].b <== eq[146][i].out; + states[i+1][24] <== and[38][i].out; + state_changed[i].in[23] <== states[i+1][24]; + states[i+1][0] <== 1 - state_changed[i].out; + } + + component final_state_result = MultiOR(num_bytes+1); + for (var i = 0; i <= num_bytes; i++) { + final_state_result.in[i] <== states[i][24]; + } + out <== final_state_result.out; + + signal is_consecutive[msg_bytes+1][2]; + is_consecutive[msg_bytes][1] <== 1; + for (var i = 0; i < msg_bytes; i++) { + is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][24] * (1 - is_consecutive[msg_bytes-i][1]) + is_consecutive[msg_bytes-i][1]; + is_consecutive[msg_bytes-1-i][1] <== state_changed[msg_bytes-i].out * is_consecutive[msg_bytes-1-i][0]; + } + signal is_substr0[msg_bytes][3]; + signal is_reveal0[msg_bytes]; + signal output reveal0[msg_bytes]; + for (var i = 0; i < msg_bytes; i++) { + is_substr0[i][0] <== 0; + is_substr0[i][1] <== is_substr0[i][0] + states[i+1][21] * states[i+2][21]; + is_substr0[i][2] <== is_substr0[i][1] + states[i+1][16] * states[i+2][21]; + is_reveal0[i] <== is_substr0[i][2] * is_consecutive[i][1]; + reveal0[i] <== in[i+1] * is_reveal0[i]; + } +} \ No newline at end of file diff --git a/packages/circom/circuits/regex_helpers.circom b/packages/circom/circuits/regex_helpers.circom new file mode 100644 index 0000000..f6542e6 --- /dev/null +++ b/packages/circom/circuits/regex_helpers.circom @@ -0,0 +1,48 @@ +pragma circom 2.0.3; + +include "circomlib/circuits/comparators.circom"; +include "circomlib/circuits/gates.circom"; + +// template MultiOROld(n) { +// signal input in[n]; +// signal output out; +// component or1; +// component or2; +// component ors[2]; +// if (n==1) { +// out <== in[0]; +// } else if (n==2) { +// or1 = OR(); +// or1.a <== in[0]; +// or1.b <== in[1]; +// out <== or1.out; +// } else { +// or2 = OR(); +// var n1 = n\2; +// var n2 = n-n\2; +// ors[0] = MultiOR(n1); +// ors[1] = MultiOR(n2); +// var i; +// for (i=0; i { + it("only an email address", async () => { + const emailAddr = "suegamisora@gmail.com"; + const paddedEmailAddr = apis.padString(emailAddr, 256); + const circuitInputs = { + msg: paddedEmailAddr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_email_addr_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + expect(1n).toEqual(witness[1]); + for (let idx = 0; idx < emailAddr.length; ++idx) { + expect(BigInt(paddedEmailAddr[idx])).toEqual(witness[2 + idx]); + } + }); + + it("with a prefix", async () => { + const prefix = "subject:"; + const emailAddr = "suegamisora@gmail.com"; + const string = prefix + emailAddr; + console.log(string); + const paddedStr = apis.padString(string, 256); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_email_addr_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + expect(1n).toEqual(witness[1]); + const prefixIdx = apis.extractSubstrIdxes(string, readFileSync(path.join(__dirname, "../circuits/common/email_addr.json"), "utf8"))[0][0]; + for (let idx = 0; idx < emailAddr.length; ++idx) { + expect(BigInt(paddedStr[prefixIdx + idx])).toEqual(witness[2 + prefixIdx + idx]); + } + }); +}); \ No newline at end of file diff --git a/packages/circom/tests/email_domain.test.ts b/packages/circom/tests/email_domain.test.ts new file mode 100644 index 0000000..777da42 --- /dev/null +++ b/packages/circom/tests/email_domain.test.ts @@ -0,0 +1,35 @@ +const ff = require('ffjavascript'); +const stringifyBigInts = ff.utils.stringifyBigInts; +const circom_tester = require("circom_tester"); +const wasm_tester = circom_tester.wasm; +import * as path from "path"; +const p = "21888242871839275222246405745257275088548364400416034343698204186575808495617"; +const field = new ff.F1Field(p); +const apis = require("../../apis"); +const option = { + include: path.join(__dirname, "../../../node_modules") +}; +import { readFileSync } from "fs"; + +jest.setTimeout(120000); +describe("Email Domain Regex", () => { + it("test a regex of an email domain", async () => { + const emailAddr = "suegamisora@gmail.com"; + const paddedEmailAddr = apis.padString(emailAddr, 256); + const revealed = "gmail.com"; + const circuitInputs = { + msg: paddedEmailAddr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_email_domain_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + expect(1n).toEqual(witness[1]); + for (let idx = 0; idx < 12; ++idx) { + expect(0n).toEqual(witness[2 + idx]); + } + const prefixIdx = apis.extractSubstrIdxes(emailAddr, readFileSync(path.join(__dirname, "../circuits/common/email_domain.json"), "utf8"))[0][0]; + for (let idx = 0; idx < revealed.length; ++idx) { + expect(BigInt(paddedEmailAddr[prefixIdx + idx])).toEqual(witness[2 + prefixIdx + idx]); + } + }); +}); \ No newline at end of file diff --git a/packages/circom/tests/from_addr.test.ts b/packages/circom/tests/from_addr.test.ts new file mode 100644 index 0000000..2430a15 --- /dev/null +++ b/packages/circom/tests/from_addr.test.ts @@ -0,0 +1,90 @@ +const ff = require('ffjavascript'); +const stringifyBigInts = ff.utils.stringifyBigInts; +const circom_tester = require("circom_tester"); +const wasm_tester = circom_tester.wasm; +import * as path from "path"; +const p = "21888242871839275222246405745257275088548364400416034343698204186575808495617"; +const field = new ff.F1Field(p); +const apis = require("../../apis"); +const option = { + include: path.join(__dirname, "../../../node_modules") +}; +import { readFileSync } from "fs"; + +jest.setTimeout(120000); +describe("From Addr Regex", () => { + it("from field from beginning case 1", async () => { + const fromStr = "from:suegamisora@gmail.com\r\n"; + const revealed = "suegamisora@gmail.com"; + const paddedStr = apis.padString(fromStr, 1024); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_from_addr_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + // console.log(witness); + expect(1n).toEqual(witness[1]); + const prefixIdx = apis.extractSubstrIdxes(fromStr, readFileSync(path.join(__dirname, "../circuits/common/from_addr.json"), "utf8"))[0][0]; + for (let idx = 0; idx < revealed.length; ++idx) { + expect(BigInt(paddedStr[prefixIdx + idx])).toEqual(witness[2 + prefixIdx + idx]); + } + }); + + it("from field from beginning case 2", async () => { + const fromStr = "from:Sora Suegami \r\n"; + const revealed = "suegamisora@gmail.com"; + // const prefixLen = "from:Sora Suegami <".length; + const paddedStr = apis.padString(fromStr, 1024); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_from_addr_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + // console.log(witness); + expect(1n).toEqual(witness[1]); + const prefixIdx = apis.extractSubstrIdxes(fromStr, readFileSync(path.join(__dirname, "../circuits/common/from_addr.json"), "utf8"))[0][0]; + for (let idx = 0; idx < revealed.length; ++idx) { + expect(BigInt(paddedStr[prefixIdx + idx])).toEqual(witness[2 + prefixIdx + idx]); + } + }); + + it("from field after new line case 1", async () => { + const fromStr = "dummy\r\nfrom:suegamisora@gmail.com\r\n"; + const revealed = "suegamisora@gmail.com"; + // const prefixLen = "dummy\r\nfrom:".length; + const paddedStr = apis.padString(fromStr, 1024); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_from_addr_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + // console.log(witness); + expect(1n).toEqual(witness[1]); + const prefixIdx = apis.extractSubstrIdxes(fromStr, readFileSync(path.join(__dirname, "../circuits/common/from_addr.json"), "utf8"))[0][0]; + for (let idx = 0; idx < revealed.length; ++idx) { + expect(BigInt(paddedStr[prefixIdx + idx])).toEqual(witness[2 + prefixIdx + idx]); + } + }); + + it("from field after new line case 2", async () => { + const fromStr = "dummy\r\nfrom:Sora Suegami \r\n"; + const revealed = "suegamisora@gmail.com"; + // const prefixLen = "dummy\r\nfrom:Sora Suegami <".length; + const paddedStr = apis.padString(fromStr, 1024); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_from_addr_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + // console.log(witness); + expect(1n).toEqual(witness[1]); + const prefixIdx = apis.extractSubstrIdxes(fromStr, readFileSync(path.join(__dirname, "../circuits/common/from_addr.json"), "utf8"))[0][0]; + for (let idx = 0; idx < revealed.length; ++idx) { + expect(BigInt(paddedStr[prefixIdx + idx])).toEqual(witness[2 + prefixIdx + idx]); + } + }); +}); \ No newline at end of file diff --git a/packages/circom/tests/simple_regex.test.ts b/packages/circom/tests/simple_regex.test.ts new file mode 100644 index 0000000..feb3bb3 --- /dev/null +++ b/packages/circom/tests/simple_regex.test.ts @@ -0,0 +1,84 @@ +const ff = require('ffjavascript'); +const stringifyBigInts = ff.utils.stringifyBigInts; +const circom_tester = require("circom_tester"); +const wasm_tester = circom_tester.wasm; +import * as path from "path"; +const p = "21888242871839275222246405745257275088548364400416034343698204186575808495617"; +const field = new ff.F1Field(p); +const apis = require("../../apis"); +const option = { + include: path.join(__dirname, "../../../node_modules") +}; + +jest.setTimeout(120000); +describe("Simple Regex", () => { + it("case 1", async () => { + const input = "1=a 2=b d"; + const paddedStr = apis.padString(input, 64); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_simple_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + // console.log(witness); + expect(1n).toEqual(witness[1]); + const revealedIdx = [[2], [6], [8]]; + for (let substr_idx = 0; substr_idx < 3; ++substr_idx) { + for (let idx = 0; idx < 64; ++idx) { + if (revealedIdx[substr_idx].includes(idx)) { + expect(BigInt(paddedStr[idx])).toEqual(witness[2 + 64 * substr_idx + idx]); + } else { + expect(0n).toEqual(witness[2 + 64 * substr_idx + idx]); + } + } + } + }); + + it("case 2", async () => { + const input = "1=a 2=b 2=bc 2=c d"; + const paddedStr = apis.padString(input, 64); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_simple_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + // console.log(witness); + expect(1n).toEqual(witness[1]); + const revealedIdx = [[2], [6, 10, 11, 15], [17]]; + for (let substr_idx = 0; substr_idx < 3; ++substr_idx) { + for (let idx = 0; idx < 64; ++idx) { + if (revealedIdx[substr_idx].includes(idx)) { + expect(BigInt(paddedStr[idx])).toEqual(witness[2 + 64 * substr_idx + idx]); + } else { + expect(0n).toEqual(witness[2 + 64 * substr_idx + idx]); + } + } + } + }); + + it("case 3", async () => { + const input = "1=a 2=b 2=bc 2=c da 1=a 2=cb 2=c 2=b dd"; + const paddedStr = apis.padString(input, 64); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_simple_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + expect(1n).toEqual(witness[1]); + const revealedIdx = [[2, 22], [6, 10, 11, 15, 26, 27, 31, 35], [17, 37]]; + for (let substr_idx = 0; substr_idx < 3; ++substr_idx) { + for (let idx = 0; idx < 64; ++idx) { + if (revealedIdx[substr_idx].includes(idx)) { + expect(BigInt(paddedStr[idx])).toEqual(witness[2 + 64 * substr_idx + idx]); + } else { + expect(0n).toEqual(witness[2 + 64 * substr_idx + idx]); + } + } + } + }); + + +}); \ No newline at end of file diff --git a/packages/circom/tests/subject_all.test.ts b/packages/circom/tests/subject_all.test.ts new file mode 100644 index 0000000..730e36b --- /dev/null +++ b/packages/circom/tests/subject_all.test.ts @@ -0,0 +1,54 @@ +const ff = require('ffjavascript'); +const stringifyBigInts = ff.utils.stringifyBigInts; +const circom_tester = require("circom_tester"); +const wasm_tester = circom_tester.wasm; +import * as path from "path"; +const p = "21888242871839275222246405745257275088548364400416034343698204186575808495617"; +const field = new ff.F1Field(p); +const apis = require("../../apis"); +const option = { + include: path.join(__dirname, "../../../node_modules") +}; +import { readFileSync } from "fs"; + +jest.setTimeout(120000); +describe("Subject All Regex", () => { + it("subject from beginning", async () => { + const subjectStr = "subject:This is a test.\r\n"; + const revealed = "This is a test."; + // const prefixLen = "subject:".length; + const paddedStr = apis.padString(subjectStr, 256); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_subject_all_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + // console.log(witness); + expect(1n).toEqual(witness[1]); + const prefixIdx = apis.extractSubstrIdxes(subjectStr, readFileSync(path.join(__dirname, "../circuits/common/subject_all.json"), "utf8"))[0][0]; + for (let idx = 0; idx < revealed.length; ++idx) { + expect(BigInt(paddedStr[prefixIdx + idx])).toEqual(witness[2 + prefixIdx + idx]); + } + }); + + it("subject after new line", async () => { + const subjectStr = "dummy\r\nsubject:This is a test.\r\n"; + const revealed = "This is a test."; + // const prefixLen = "dummy\r\nsubject:".length; + const paddedStr = apis.padString(subjectStr, 256); + console.log(paddedStr); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_subject_all_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + // console.log(witness); + expect(1n).toEqual(witness[1]); + const prefixIdx = apis.extractSubstrIdxes(subjectStr, readFileSync(path.join(__dirname, "../circuits/common/subject_all.json"), "utf8"))[0][0]; + for (let idx = 0; idx < revealed.length; ++idx) { + expect(BigInt(paddedStr[prefixIdx + idx])).toEqual(witness[2 + prefixIdx + idx]); + } + }); +}); \ No newline at end of file diff --git a/packages/circom/tests/timestamp.test.ts b/packages/circom/tests/timestamp.test.ts new file mode 100644 index 0000000..51ed0a3 --- /dev/null +++ b/packages/circom/tests/timestamp.test.ts @@ -0,0 +1,32 @@ +const ff = require('ffjavascript'); +const stringifyBigInts = ff.utils.stringifyBigInts; +const circom_tester = require("circom_tester"); +const wasm_tester = circom_tester.wasm; +import * as path from "path"; +import { readFileSync } from "fs"; +const p = "21888242871839275222246405745257275088548364400416034343698204186575808495617"; +const field = new ff.F1Field(p); +const apis = require("../../apis"); +const option = { + include: path.join(__dirname, "../../../node_modules") +}; + +jest.setTimeout(120000); +describe("Timestamp Regex", () => { + it("timestamp in the header", async () => { + const signatureField = `dkim-signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1694989812; x=1695594612; dara=google.com; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=BWETwQ9JDReS4GyR2v2TTR8Bpzj9ayumsWQJ3q7vehs=; b=`; + const revealed = "1694989812"; + const paddedStr = apis.padString(signatureField, 1024); + const circuitInputs = { + msg: paddedStr, + }; + const circuit = await wasm_tester(path.join(__dirname, "./circuits/test_timestamp_regex.circom"), option); + const witness = await circuit.calculateWitness(circuitInputs); + await circuit.checkConstraints(witness); + expect(1n).toEqual(witness[1]); + const timestampIdx = apis.extractSubstrIdxes(signatureField, readFileSync(path.join(__dirname, "../circuits/common/timestamp.json"), "utf8"))[0][0]; + for (let idx = 0; idx < revealed.length; ++idx) { + expect(BigInt(paddedStr[timestampIdx + idx])).toEqual(witness[2 + timestampIdx + idx]); + } + }); +}); \ No newline at end of file diff --git a/packages/compiler/Cargo.toml b/packages/compiler/Cargo.toml new file mode 100644 index 0000000..1d7c937 --- /dev/null +++ b/packages/compiler/Cargo.toml @@ -0,0 +1,38 @@ +[package] +name = "zk-regex-compiler" +version = "0.1.0" +authors = ["Sora Suegami"] +license = "MIT" +edition = "2018" +# exclude = ["index.node"] + +[[bin]] +name = "zk-regex" +path = "src/bin/compiler.rs" + +[lib] +crate-type = ["rlib", "cdylib"] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +tabbycat = { version = "0.1", features = ["attributes"], optional = true } +fancy-regex = "0.11.0" +petgraph = "0.6.3" +graph-cycles = "0.1.0" +thiserror = "1.0.40" +serde_json = "1.0.95" +serde = { version = "1.0.159", features = ["derive"] } +js-sandbox = { version = "0.2.0-rc.1", git = "https://github.com/Bromeon/js-sandbox.git", rev = "cd256ef" } +itertools = "0.10.3" +clap = { version = "=4.2.1", features = ["derive"] } + +[dependencies.neon] +version = "0.10" +default-features = false +features = ["napi-6"] +optional = true + +[features] +default = ["node"] +node = ["neon"] diff --git a/packages/compiler/README.md b/packages/compiler/README.md new file mode 100644 index 0000000..06762cf --- /dev/null +++ b/packages/compiler/README.md @@ -0,0 +1,119 @@ +# zk-regex-apis + +This project was bootstrapped by [create-neon](https://www.npmjs.com/package/create-neon). + +## Installing zk-regex-apis + +Installing zk-regex-apis requires a [supported version of Node and Rust](https://github.com/neon-bindings/neon#platform-support). + +You can install the project with npm. In the project directory, run: + +```sh +$ npm install +``` + +This fully installs the project, including installing any dependencies and running the build. + +## Building zk-regex-apis + +If you have already installed the project and only want to run the build, run: + +```sh +$ npm run build +``` + +This command uses the [cargo-cp-artifact](https://github.com/neon-bindings/cargo-cp-artifact) utility to run the Rust build and copy the built library into `./index.node`. + +## Exploring zk-regex-apis + +After building zk-regex-apis, you can explore its exports at the Node REPL: + +```sh +$ npm install +$ node +> require('.').hello() +"hello node" +``` + +## Available Scripts + +In the project directory, you can run: + +### `npm install` + +Installs the project, including running `npm run build`. + +### `npm build` + +Builds the Node addon (`index.node`) from source. + +Additional [`cargo build`](https://doc.rust-lang.org/cargo/commands/cargo-build.html) arguments may be passed to `npm build` and `npm build-*` commands. For example, to enable a [cargo feature](https://doc.rust-lang.org/cargo/reference/features.html): + +``` +npm run build -- --feature=beetle +``` + +#### `npm build-debug` + +Alias for `npm build`. + +#### `npm build-release` + +Same as [`npm build`](#npm-build) but, builds the module with the [`release`](https://doc.rust-lang.org/cargo/reference/profiles.html#release) profile. Release builds will compile slower, but run faster. + +### `npm test` + +Runs the unit tests by calling `cargo test`. You can learn more about [adding tests to your Rust code](https://doc.rust-lang.org/book/ch11-01-writing-tests.html) from the [Rust book](https://doc.rust-lang.org/book/). + +## Project Layout + +The directory structure of this project is: + +``` +zk-regex-apis/ +├── Cargo.toml +├── README.md +├── index.node +├── package.json +├── src/ +| └── lib.rs +└── target/ +``` + +### Cargo.toml + +The Cargo [manifest file](https://doc.rust-lang.org/cargo/reference/manifest.html), which informs the `cargo` command. + +### README.md + +This file. + +### index.node + +The Node addon—i.e., a binary Node module—generated by building the project. This is the main module for this package, as dictated by the `"main"` key in `package.json`. + +Under the hood, a [Node addon](https://nodejs.org/api/addons.html) is a [dynamically-linked shared object](https://en.wikipedia.org/wiki/Library_(computing)#Shared_libraries). The `"build"` script produces this file by copying it from within the `target/` directory, which is where the Rust build produces the shared object. + +### package.json + +The npm [manifest file](https://docs.npmjs.com/cli/v7/configuring-npm/package-json), which informs the `npm` command. + +### src/ + +The directory tree containing the Rust source code for the project. + +### src/lib.rs + +The Rust library's main module. + +### target/ + +Binary artifacts generated by the Rust build. + +## Learn More + +To learn more about Neon, see the [Neon documentation](https://neon-bindings.com). + +To learn more about Rust, see the [Rust documentation](https://www.rust-lang.org). + +To learn more about Node, see the [Node documentation](https://nodejs.org). diff --git a/packages/compiler/package.json b/packages/compiler/package.json new file mode 100644 index 0000000..5a1ebb6 --- /dev/null +++ b/packages/compiler/package.json @@ -0,0 +1,18 @@ +{ + "name": "zk-regex-compiler", + "version": "0.1.0", + "description": "", + "main": "index.node", + "scripts": { + "build": "cargo-cp-artifact -nc index.node -- cargo build --message-format=json-render-diagnostics", + "build-debug": "npm run build --", + "build-release": "npm run build -- --release", + "install": "npm run build-release", + "test": "cargo test" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "cargo-cp-artifact": "^0.1" + } +} \ No newline at end of file diff --git a/packages/compiler/src/bin/compiler.rs b/packages/compiler/src/bin/compiler.rs new file mode 100644 index 0000000..85e892a --- /dev/null +++ b/packages/compiler/src/bin/compiler.rs @@ -0,0 +1,125 @@ +use std::{ + fs::File, + path::{Path, PathBuf}, +}; + +use clap::{Parser, Subcommand}; +use itertools::Itertools; +use zk_regex_compiler::*; + +#[derive(Parser, Debug, Clone)] +#[command(author, version, about, long_about = None)] +struct Cli { + #[command(subcommand)] + pub command: Commands, +} + +#[derive(Debug, Subcommand, Clone)] +enum Commands { + Decomposed { + #[arg(short, long)] + decomposed_regex_path: String, + #[arg(short, long)] + halo2_dir_path: Option, + #[arg(long)] + circom_file_path: Option, + #[arg(long)] + circom_template_name: Option, + #[arg(short, long)] + gen_substrs: Option, + }, + Raw { + #[arg(short, long)] + raw_regex: String, + #[arg(short, long)] + max_bytes: usize, + #[arg(short, long)] + substrs_json_path: Option, + #[arg(short, long)] + halo2_dir_path: Option, + #[arg(long)] + circom_file_path: Option, + #[arg(long)] + circom_template_name: Option, + #[arg(short, long)] + gen_substrs: Option, + }, +} + +fn main() { + let cli = Cli::parse(); + match cli.command { + Commands::Decomposed { + decomposed_regex_path, + halo2_dir_path, + circom_file_path, + circom_template_name, + gen_substrs, + } => { + gen_from_decomposed( + &decomposed_regex_path, + halo2_dir_path.as_ref().map(|s| s.as_str()), + circom_file_path.as_ref().map(|s| s.as_str()), + circom_template_name.as_ref().map(|s| s.as_str()), + gen_substrs, + ); + } + Commands::Raw { + raw_regex, + max_bytes, + substrs_json_path, + halo2_dir_path, + circom_file_path, + circom_template_name, + gen_substrs, + } => { + gen_from_raw( + &raw_regex, + max_bytes, + substrs_json_path.as_ref().map(|s| s.as_str()), + halo2_dir_path.as_ref().map(|s| s.as_str()), + circom_file_path.as_ref().map(|s| s.as_str()), + circom_template_name.as_ref().map(|s| s.as_str()), + gen_substrs, + ); + } // Commands::GenHalo2Texts { + // decomposed_regex_path, + // allstr_file_path, + // substrs_dir_path, + // } => { + // let regex_decomposed: DecomposedRegexConfig = + // serde_json::from_reader(File::open(decomposed_regex_path).unwrap()).unwrap(); + // let num_public_part = regex_decomposed + // .parts + // .iter() + // .filter(|part| part.is_public) + // .collect_vec() + // .len(); + // let substr_file_pathes = (0..num_public_part) + // .map(|idx| { + // PathBuf::new() + // .join(&substrs_dir_path) + // .join(&format!("substr{}.txt", idx)) + // }) + // .collect_vec(); + // regex_decomposed + // .gen_regex_files( + // &Path::new(&allstr_file_path).to_path_buf(), + // &substr_file_pathes, + // ) + // .unwrap(); + // } + // Commands::GenCircom { + // decomposed_regex_path, + // circom_file_path, + // template_name, + // } => { + // let regex_decomposed: DecomposedRegexConfig = + // serde_json::from_reader(File::open(decomposed_regex_path).unwrap()).unwrap(); + // let circom_path = PathBuf::from(circom_file_path); + // regex_decomposed + // .gen_circom(&circom_path, &template_name) + // .unwrap(); + // } + } +} diff --git a/packages/compiler/src/circom.rs b/packages/compiler/src/circom.rs new file mode 100644 index 0000000..58e3031 --- /dev/null +++ b/packages/compiler/src/circom.rs @@ -0,0 +1,83 @@ +use super::CompilerError; +use crate::get_accepted_state; +use crate::js_caller::*; +use crate::RegexAndDFA; +// use crate::{AllstrRegexDef, SubstrRegexDef}; +use fancy_regex::Regex; +use itertools::Itertools; +use petgraph::prelude::*; +use serde::{Deserialize, Serialize}; +use std::collections::HashSet; +use std::io::BufWriter; +use std::io::Write; +use std::path::PathBuf; +use std::{collections::HashMap, fs::File}; +use thiserror::Error; + +impl RegexAndDFA { + pub fn gen_circom( + &self, + circom_path: &PathBuf, + template_name: &str, + gen_substrs: bool, + ) -> Result<(), CompilerError> { + let all_regex = String::new(); + let circom = gen_circom_allstr(&self.dfa_val, template_name)?; + if gen_substrs { + self.add_substrs_constraints(circom_path, circom)?; + } + Ok(()) + } + + pub fn add_substrs_constraints( + &self, + circom_path: &PathBuf, + mut circom: String, + ) -> Result<(), CompilerError> { + let accepted_state = + get_accepted_state(&self.dfa_val).ok_or(JsCallerError::NoAcceptedState)?; + circom += "\n"; + circom += "\tsignal is_consecutive[msg_bytes+1][2];\n"; + circom += "\tis_consecutive[msg_bytes][1] <== 1;\n"; + circom += "\tfor (var i = 0; i < msg_bytes; i++) {\n"; + circom += &format!("\t\tis_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][{}] * (1 - is_consecutive[msg_bytes-i][1]) + is_consecutive[msg_bytes-i][1];\n",accepted_state); + circom += "\t\tis_consecutive[msg_bytes-1-i][1] <== state_changed[msg_bytes-i].out * is_consecutive[msg_bytes-1-i][0];\n"; + circom += "\t}\n"; + + let substr_defs_array = &self.substrs_defs.substr_defs_array; + for (idx, defs) in substr_defs_array.into_iter().enumerate() { + let num_defs = defs.len(); + circom += &format!("\tsignal is_substr{}[msg_bytes][{}];\n", idx, num_defs + 1); + circom += &format!("\tsignal is_reveal{}[msg_bytes];\n", idx); + circom += &format!("\tsignal output reveal{}[msg_bytes];\n", idx); + circom += "\tfor (var i = 0; i < msg_bytes; i++) {\n"; + circom += &format!("\t\tis_substr{}[i][0] <== 0;\n", idx); + for (j, (cur, next)) in defs.iter().enumerate() { + circom += &format!( + "\t\tis_substr{}[i][{}] <== is_substr{}[i][{}] + ", + idx, + j + 1, + idx, + j + ); + circom += &format!("states[i+1][{}] * states[i+2][{}];\n", cur, next); + // if j != defs.len() - 1 { + // circom += " + "; + // } else { + // circom += ";\n"; + // } + } + circom += &format!( + "\t\tis_reveal{}[i] <== is_substr{}[i][{}] * is_consecutive[i][1];\n", + idx, idx, num_defs + ); + circom += &format!("\t\treveal{}[i] <== in[i+1] * is_reveal{}[i];\n", idx, idx); + circom += "\t}\n"; + } + circom += "}"; + let mut circom_file = File::create(circom_path)?; + write!(circom_file, "{}", circom)?; + circom_file.flush()?; + Ok(()) + } +} diff --git a/packages/compiler/src/gen_circom.js b/packages/compiler/src/gen_circom.js new file mode 100644 index 0000000..31f7ce5 --- /dev/null +++ b/packages/compiler/src/gen_circom.js @@ -0,0 +1,233 @@ +function genCircomAllstr(graph_json, template_name) { + const N = graph_json.length; + // const graph = Array(N).fill({}); + const rev_graph = []; + const to_init_graph = []; + let init_going_state = null; + for (let i = 0; i < N; i++) { + rev_graph.push({}); + to_init_graph.push([]); + } + let accept_nodes = new Set(); + for (let i = 0; i < N; i++) { + for (let k in graph_json[i]["edges"]) { + const v = graph_json[i]["edges"][k]; + rev_graph[v][i] = Array.from(JSON.parse(k)).map(c => c.charCodeAt()); + if (i == 0) { + const index = rev_graph[v][i].indexOf(94); + if (index != -1) { + init_going_state = v; + rev_graph[v][i][index] = 128; + } + for (let j = 0; j < rev_graph[v][i].length; j++) { + if (rev_graph[v][i][j] == 128) { + continue; + } + to_init_graph[v].push(rev_graph[v][i][j]); + } + } + } + if (graph_json[i]["type"] == "accept") { + accept_nodes.add(i); + } + } + if (init_going_state != null) { + for (const [going_state, chars] of Object.entries(to_init_graph)) { + if (chars.length == 0) { + continue; + } + if (rev_graph[going_state][init_going_state] == null) { + rev_graph[going_state][init_going_state] = []; + } + rev_graph[going_state][init_going_state] = rev_graph[going_state][init_going_state].concat(chars); + } + } + + if (accept_nodes[0] != null) { + throw new Error("accept node must not be 0"); + } + accept_nodes = [...accept_nodes]; + if (accept_nodes.length != 1) { + throw new Error("the size of accept nodes must be one"); + } + + let eq_i = 0; + let lt_i = 0; + let and_i = 0; + let multi_or_i = 0; + + let lines = []; + lines.push("\tfor (var i = 0; i < num_bytes; i++) {"); + + const uppercase = new Set(Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZ").map(c => c.charCodeAt())); + const lowercase = new Set(Array.from("abcdefghijklmnopqrstuvwxyz").map(c => c.charCodeAt())); + const digits = new Set(Array.from("0123456789").map(c => c.charCodeAt())); + const symbols1 = new Set([":", ";", "<", "=", ">", "?", "@"].map(c => c.charCodeAt())); + const symbols2 = new Set(["[", "\\", "]", "^", "_", "`"].map(c => c.charCodeAt())); + const symbols3 = new Set(["{", "|", "}", "~"].map(c => c.charCodeAt())); + lines.push(`\t\tstate_changed[i] = MultiOR(${N - 1});`); + for (let i = 1; i < N; i++) { + const outputs = []; + for (let prev_i of Object.keys(rev_graph[i])) { + const k = rev_graph[i][prev_i]; + const eq_outputs = []; + const vals = new Set(k); + if (vals.size == 0) { + continue; + } + const min_maxs = []; + for (let subsets of [ + [digits, 47, 58], + [symbols1, 57, 65], + [uppercase, 64, 91], + [symbols2, 90, 97], + [lowercase, 96, 123], + [symbols3, 122, 127] + ]) { + const subset = subsets[0]; + const min = subsets[1]; + const max = subsets[2]; + if (vals.isSuperset(subset)) { + vals.difference(subset); + if (min_maxs.length == 0) { + min_maxs.push([min, max]); + } else { + const last = min_maxs[min_maxs.length - 1]; + if (last[1] - 1 == min) { + min_maxs[min_maxs.length - 1][1] = max; + } else { + min_maxs.push([min, max]); + } + } + } + } + + for (let min_max of min_maxs) { + lines.push(`\t\tlt[${lt_i}][i] = LessThan(8);`); + lines.push(`\t\tlt[${lt_i}][i].in[0] <== ${min_max[0]};`); + lines.push(`\t\tlt[${lt_i}][i].in[1] <== in[i];`); + + lines.push(`\t\tlt[${lt_i + 1}][i] = LessThan(8);`); + lines.push(`\t\tlt[${lt_i + 1}][i].in[0] <== in[i];`); + lines.push(`\t\tlt[${lt_i + 1}][i].in[1] <== ${min_max[1]};`); + + lines.push(`\t\tand[${and_i}][i] = AND();`); + lines.push(`\t\tand[${and_i}][i].a <== lt[${lt_i}][i].out;`); + lines.push(`\t\tand[${and_i}][i].b <== lt[${lt_i + 1}][i].out;`); + + eq_outputs.push(['and', and_i]); + lt_i += 2 + and_i += 1 + } + + for (let code of vals) { + lines.push(`\t\teq[${eq_i}][i] = IsEqual();`); + lines.push(`\t\teq[${eq_i}][i].in[0] <== in[i];`); + lines.push(`\t\teq[${eq_i}][i].in[1] <== ${code};`); + eq_outputs.push(['eq', eq_i]); + eq_i += 1 + } + + lines.push(`\t\tand[${and_i}][i] = AND();`); + lines.push(`\t\tand[${and_i}][i].a <== states[i][${prev_i}];`); + if (eq_outputs.length == 1) { + lines.push(`\t\tand[${and_i}][i].b <== ${eq_outputs[0][0]}[${eq_outputs[0][1]}][i].out;`); + } else if (eq_outputs.length > 1) { + lines.push(`\t\tmulti_or[${multi_or_i}][i] = MultiOR(${eq_outputs.length});`); + for (let output_i = 0; output_i < eq_outputs.length; output_i++) { + lines.push(`\t\tmulti_or[${multi_or_i}][i].in[${output_i}] <== ${eq_outputs[output_i][0]}[${eq_outputs[output_i][1]}][i].out;`); + } + lines.push(`\t\tand[${and_i}][i].b <== multi_or[${multi_or_i}][i].out;`); + multi_or_i += 1 + } + + outputs.push(and_i); + and_i += 1; + } + + if (outputs.length == 1) { + lines.push(`\t\tstates[i+1][${i}] <== and[${outputs[0]}][i].out;`); + } else if (outputs.length > 1) { + lines.push(`\t\tmulti_or[${multi_or_i}][i] = MultiOR(${outputs.length});`); + for (let output_i = 0; output_i < outputs.length; output_i++) { + lines.push(`\t\tmulti_or[${multi_or_i}][i].in[${output_i}] <== and[${outputs[output_i]}][i].out;`); + } + lines.push(`\t\tstates[i+1][${i}] <== multi_or[${multi_or_i}][i].out;`); + multi_or_i += 1 + } + lines.push(`\t\tstate_changed[i].in[${i - 1}] <== states[i+1][${i}];`); + } + lines.push(`\t\tstates[i+1][0] <== 1 - state_changed[i].out;`); + lines.push("\t}"); + + + const declarations = []; + declarations.push(`pragma circom 2.1.5;\n`); + declarations.push(`include "zk-regex-circom/circuits/regex_helpers.circom";\n`); + // declarations.push(`pragma circom 2.1.5;\ninclude "@zk-email/circuits/regexes/regex_helpers.circom";\n`); + declarations.push(`template ${template_name}(msg_bytes) {`); + declarations.push(`\tsignal input msg[msg_bytes];`); + declarations.push(`\tsignal output out;\n`); + declarations.push(`\tvar num_bytes = msg_bytes+1;`); + declarations.push(`\tsignal in[num_bytes];`); + declarations.push(`\tin[0]<==128;`); + declarations.push(`\tfor (var i = 0; i < msg_bytes; i++) {`); + declarations.push(`\t\tin[i+1] <== msg[i];`); + declarations.push(`\t}\n`); + if (eq_i > 0) { + declarations.push(`\tcomponent eq[${eq_i}][num_bytes];`); + } + if (lt_i > 0) { + declarations.push(`\tcomponent lt[${lt_i}][num_bytes];`); + } + if (and_i > 0) { + declarations.push(`\tcomponent and[${and_i}][num_bytes];`); + } + if (multi_or_i > 0) { + declarations.push(`\tcomponent multi_or[${multi_or_i}][num_bytes];`); + } + declarations.push(`\tsignal states[num_bytes+1][${N}];`); + declarations.push(`\tcomponent state_changed[num_bytes];`); + declarations.push(""); + + const init_code = []; + init_code.push(`\tstates[0][0] <== 1;`); + init_code.push(`\tfor (var i = 1; i < ${N}; i++) {`); + init_code.push(`\t\tstates[0][i] <== 0;`); + init_code.push("\t}"); + init_code.push(""); + + lines = declarations.concat(init_code).concat(lines); + + const accept_node = accept_nodes[0]; + const accept_lines = [""]; + accept_lines.push("\tcomponent final_state_result = MultiOR(num_bytes+1);"); + accept_lines.push("\tfor (var i = 0; i <= num_bytes; i++) {"); + accept_lines.push(`\t\tfinal_state_result.in[i] <== states[i][${accept_node}];`); + accept_lines.push("\t}"); + accept_lines.push("\tout <== final_state_result.out;"); + + lines = lines.concat(accept_lines); + let string = lines.reduce((res, line) => res + line + "\n", ""); + return string; +} + + + +Set.prototype.isSuperset = function (subset) { + if (this.size == 0) { + return false; + } + for (var elem of subset) { + if (!this.has(elem)) { + return false; + } + } + return true; +} + +Set.prototype.difference = function (setB) { + for (let elem of setB) { + this.delete(elem) + } +} diff --git a/packages/compiler/src/halo2.rs b/packages/compiler/src/halo2.rs new file mode 100644 index 0000000..ab6289e --- /dev/null +++ b/packages/compiler/src/halo2.rs @@ -0,0 +1,104 @@ +use crate::js_caller::*; +use crate::*; +use fancy_regex::Regex; +use itertools::Itertools; +use petgraph::prelude::*; +use serde::{Deserialize, Serialize}; +use serde_json::Value; +use std::collections::HashSet; +use std::io::BufWriter; +use std::io::Write; +use std::iter::FromIterator; +use std::path::PathBuf; +use std::{collections::HashMap, fs::File}; +use thiserror::Error; + +impl RegexAndDFA { + pub fn gen_halo2_tables( + &self, + allstr_file_path: &PathBuf, + substr_file_pathes: &[PathBuf], + gen_substrs: bool, + ) -> Result<(), CompilerError> { + let regex_text = self.dfa_to_regex_def_text()?; + let mut regex_file = File::create(allstr_file_path)?; + write!(regex_file, "{}", regex_text)?; + regex_file.flush()?; + if !gen_substrs { + return Ok(()); + } + let substr_endpoints_array = self.substrs_defs.substr_endpoints_array.as_ref().unwrap(); + let max_bytes = self.substrs_defs.max_bytes.as_ref().unwrap(); + for (idx, defs) in self.substrs_defs.substr_defs_array.iter().enumerate() { + let mut writer = BufWriter::new(File::create(&substr_file_pathes[idx])?); + let max_size = max_bytes[idx]; + writer.write_fmt(format_args!("{}\n", &max_size))?; + writer.write_fmt(format_args!("0\n{}\n", self.max_byte_size - 1))?; + let mut starts_str = "".to_string(); + let starts = substr_endpoints_array[idx] + .0 + .iter() + .sorted_by(|a, b| a.cmp(b)); + for start in starts { + starts_str += &format!("{} ", start); + } + writer.write_fmt(format_args!("{}\n", starts_str))?; + let mut ends_str = "".to_string(); + let ends = substr_endpoints_array[idx] + .1 + .iter() + .sorted_by(|a, b| a.cmp(b)); + for end in ends { + ends_str += &format!("{} ", end); + } + writer.write_fmt(format_args!("{}\n", ends_str))?; + let mut defs = defs.iter().collect::>(); + defs.sort_by(|a, b| { + let start_cmp = a.0.cmp(&b.0); + let end_cmp = a.1.cmp(&b.1); + if start_cmp == std::cmp::Ordering::Equal { + end_cmp + } else { + start_cmp + } + }); + for (cur, next) in defs.iter() { + writer.write_fmt(format_args!("{} {}\n", cur, next))?; + } + } + Ok(()) + } + + pub fn dfa_to_regex_def_text(&self) -> Result { + let accepted_state = + get_accepted_state(&self.dfa_val).ok_or(JsCallerError::NoAcceptedState)?; + let max_state = get_max_state(&self.dfa_val)?; + let mut text = "0\n".to_string(); + text += &format!("{}\n", accepted_state.to_string()); + text += &format!("{}\n", max_state.to_string()); + for (i, val) in self.dfa_val.iter().enumerate() { + for (key, next_node_val) in val["edges"] + .as_object() + .ok_or(JsCallerError::InvalidEdges(val["edges"].clone()))? + .iter() + { + let key_list: Vec = serde_json::from_str(&key)?; + for key_char in key_list.iter() { + let key_char: char = key_char.chars().collect::>()[0]; + let next_node = next_node_val + .as_u64() + .ok_or(JsCallerError::InvalidNodeValue(next_node_val.clone()))? + as usize; + // println!("i {} next {} char {}", i, next_node, key_char as u8); + text += &format!( + "{} {} {}\n", + i.to_string(), + next_node.to_string(), + (key_char as u8).to_string() + ); + } + } + } + Ok(text) + } +} diff --git a/packages/compiler/src/js_caller.rs b/packages/compiler/src/js_caller.rs new file mode 100644 index 0000000..10e64b4 --- /dev/null +++ b/packages/compiler/src/js_caller.rs @@ -0,0 +1,55 @@ +use std::collections::HashMap; + +use js_sandbox::{AnyError, JsError, Script}; +use petgraph::prelude::*; +use serde_json::Value; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum JsCallerError { + #[error("Edges {0} are not object")] + InvalidEdges(Value), + #[error("node value {0} is not u64")] + InvalidNodeValue(Value), + #[error("No accepted state")] + NoAcceptedState, + #[error(transparent)] + JsError(#[from] JsError), + #[error(transparent)] + JsonError(#[from] serde_json::Error), +} + +pub fn catch_all_regex_str() -> Result { + let code: &'static str = include_str!("regex.js"); + let mut script = Script::from_string(code)?; + let result: String = script.call("catchAllRegexStr", ())?; + Ok(result) +} + +pub fn text_context_prefix() -> Result { + let code: &'static str = include_str!("regex.js"); + let mut script = Script::from_string(code)?; + let result: String = script.call("textContextPrefix", ())?; + Ok(result) +} + +// pub fn format_regex_printable(regex: &str) -> Result { +// let code: &'static str = include_str!("regex.js"); +// let mut script = Script::from_string(code)?; +// let result: String = script.call("formatRegexPrintable", (regex,))?; +// Ok(result) +// } + +pub fn regex_to_dfa(regex: &str) -> Result, JsCallerError> { + let code: &'static str = include_str!("regex.js"); + let mut script = Script::from_string(code)?; + let result: String = script.call("regexToDfa", (regex,))?; + Ok(serde_json::from_str(&result)?) +} + +pub fn gen_circom_allstr(graph: &[Value], template_name: &str) -> Result { + let code: &'static str = include_str!("gen_circom.js"); + let mut script = Script::from_string(code)?; + let result: String = script.call("genCircomAllstr", (graph, template_name))?; + Ok(result) +} diff --git a/packages/compiler/src/lib.rs b/packages/compiler/src/lib.rs new file mode 100644 index 0000000..258bb9b --- /dev/null +++ b/packages/compiler/src/lib.rs @@ -0,0 +1,470 @@ +use std::iter::FromIterator; +use std::{collections::HashMap, fs::File}; +pub mod circom; +pub mod halo2; +pub mod js_caller; + +#[cfg(feature = "node")] +pub mod node; +#[cfg(feature = "node")] +use crate::node::*; +#[cfg(feature = "node")] +use neon; + +use crate::js_caller::*; +use fancy_regex::Regex; +use itertools::Itertools; +use petgraph::prelude::*; +use serde::{Deserialize, Serialize}; +use serde_json::Value; +use std::collections::HashSet; +use std::path::PathBuf; +use thiserror::Error; + +/// Error definitions of the compiler. +#[derive(Error, Debug)] +pub enum CompilerError { + #[error("No edge from {:?} to {:?} in the graph",.0,.1)] + NoEdge(NodeIndex, NodeIndex), + #[error(transparent)] + JsCallerError(#[from] JsCallerError), + #[error(transparent)] + IoError(#[from] std::io::Error), + #[error(transparent)] + RegexError(#[from] fancy_regex::Error), +} + +/// A configuration of decomposed regexes. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct DecomposedRegexConfig { + /// Maximum byte size of the input string. + pub max_byte_size: usize, + /// A vector of decomposed regexes. + pub parts: Vec, +} + +/// Decomposed regex part. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct RegexPartConfig { + /// A flag indicating whether the substring matching with `regex_def` should be exposed. + pub is_public: bool, + /// A regex string. + pub regex_def: String, + /// Maximum byte size of the substring in this part. + pub max_size: usize, + /// (Optional) A solidity type of the substring in this part, e.g., "String", "Int", "Decimal". + pub solidity: Option, +} +/// Solidity type of the substring. +#[derive(Debug, Clone, Copy, Serialize, Deserialize)] +#[serde(tag = "type")] +pub enum SoldityType { + String, + Uint, + Decimal, +} + +#[derive(Debug, Clone)] +pub struct RegexAndDFA { + pub max_byte_size: usize, + pub all_regex: String, + pub dfa_val: Vec, + pub substrs_defs: SubstrsDefs, +} + +#[derive(Debug, Clone)] +pub struct SubstrsDefs { + pub substr_defs_array: Vec>, + pub substr_endpoints_array: Option, HashSet)>>, + pub max_bytes: Option>, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct SubstrsDefsJson { + pub transitions: Vec>, +} + +impl DecomposedRegexConfig { + pub fn to_regex_and_dfa(&self) -> Result { + let mut all_regex = String::new(); + let part_configs = &self.parts; + for config in part_configs.iter() { + all_regex += &config.regex_def; + } + let dfa_val = regex_to_dfa(&all_regex)?; + let substrs_defs = self.extract_substr_ids(&dfa_val)?; + Ok(RegexAndDFA { + max_byte_size: self.max_byte_size, + all_regex, + dfa_val, + substrs_defs, + }) + } + + pub fn extract_substr_ids(&self, dfa_val: &[Value]) -> Result { + let part_configs = &self.parts; + let mut graph = Graph::::with_capacity(0, 0); + let max_state = get_max_state(dfa_val)?; + add_graph_nodes(dfa_val, &mut graph, None, max_state)?; + let accepted_state = get_accepted_state(dfa_val).ok_or(JsCallerError::NoAcceptedState)?; + let accepted_state_index = NodeIndex::from(accepted_state); + let mut pathes = Vec::>>::new(); + let mut stack = Vec::<(NodeIndex, Vec>)>::new(); + stack.push((accepted_state_index, vec![accepted_state_index])); + let mut self_nodes = HashSet::new(); + let mut self_nodes_char = HashMap::new(); + for state in 0..=max_state { + let node = NodeIndex::from(state); + if let Some(edge) = graph.find_edge(node, node) { + let str = graph.edge_weight(edge).unwrap().as_str(); + let bytes = str.as_bytes(); + self_nodes_char.insert(node.index(), bytes[0]); + } + } + + while stack.len() != 0 { + let (node, path) = stack.pop().unwrap(); + let mut parents = graph.neighbors(node).detach(); + while let Some((edge, parent)) = parents.next(&graph) { + if parent.index() == node.index() { + self_nodes.insert(node.index()); + graph.remove_edge(edge).unwrap(); + continue; + } + if !path.contains(&parent) { + if parent.index() == 0 { + pathes.push(path.to_vec()); + continue; + } + stack.push((parent, vec![path.clone(), vec![parent]].concat())); + } + } + } + + let mut public_config_indexes: Vec = vec![]; + let mut part_regexes = vec![]; + for (idx, config) in part_configs.iter().enumerate() { + if config.is_public { + public_config_indexes.push(idx); + } + if idx == 0 { + let regex_def = config.regex_def.replace("^", "\\^"); + part_regexes.push(Regex::new(®ex_def)?); + } else { + let pre_regex = part_regexes[idx - 1].to_string(); + part_regexes.push(Regex::new(&(pre_regex + &config.regex_def))?); + } + } + let num_public_parts = public_config_indexes.len(); + let mut substr_defs_array = (0..num_public_parts) + .map(|_| HashSet::<(usize, usize)>::new()) + .collect_vec(); + let mut substr_endpoints_array = (0..num_public_parts) + .map(|_| (HashSet::::new(), HashSet::::new())) + .collect_vec(); + for path in pathes.iter_mut() { + let n = path.len(); + path.append(&mut vec![NodeIndex::from(0)]); + let edges = (0..n) + .map(|idx| { + graph + .find_edge(path[idx], path[idx + 1]) + .ok_or(CompilerError::NoEdge(path[idx], path[idx + 1])) + }) + .collect::>, CompilerError>>()?; + let string_vec = edges + .iter() + .map(|edge| graph.edge_weight(*edge).unwrap().as_str()) + .collect::>(); + let path_states = path + .into_iter() + .rev() + .map(|node| node.index()) + .collect::>(); + let path_strs = string_vec + .iter() + .rev() + .map(|s| s.to_string()) + .collect::>(); + let substr_states = self.get_substr_defs_from_path( + &path_states, + &path_strs, + &part_regexes, + &public_config_indexes, + )?; + for (substr_idx, (path_states, substr)) in substr_states.into_iter().enumerate() { + let defs = &mut substr_defs_array[substr_idx]; + substr_endpoints_array[substr_idx].0.insert(path_states[0]); + substr_endpoints_array[substr_idx] + .1 + .insert(path_states[path_states.len() - 1]); + for path_idx in 0..(path_states.len() - 1) { + defs.insert((path_states[path_idx], path_states[path_idx + 1])); + if self_nodes.contains(&path_states[path_idx]) { + defs.insert((path_states[path_idx], path_states[path_idx])); + } + for pre_path_idx in 0..=path_idx { + if graph + .find_edge( + NodeIndex::from(path_states[pre_path_idx]), + NodeIndex::from(path_states[path_idx + 1]), + ) + .is_some() + { + defs.insert((path_states[path_idx + 1], path_states[pre_path_idx])); + } + } + } + if self_nodes.contains(&path_states[path_states.len() - 1]) { + let part_index = public_config_indexes[substr_idx]; + let part_regex = &part_regexes[part_index]; + let byte = self_nodes_char[&path_states[path_states.len() - 1]]; + let substr = substr + &(byte as char).to_string(); + if part_regex.is_match(&substr).unwrap() { + defs.insert(( + path_states[path_states.len() - 1], + path_states[path_states.len() - 1], + )); + } + } + } + } + let max_bytes = public_config_indexes + .iter() + .map(|idx| self.parts[*idx].max_size) + .collect_vec(); + let substrs_defs = SubstrsDefs { + substr_defs_array, + substr_endpoints_array: Some(substr_endpoints_array), + max_bytes: Some(max_bytes), + }; + Ok(substrs_defs) + } + + fn get_substr_defs_from_path( + &self, + path_states: &[usize], + path_strs: &[String], + part_regexes: &[Regex], + public_config_indexes: &[usize], + ) -> Result, String)>, CompilerError> { + debug_assert_eq!(path_states.len(), path_strs.len() + 1); + let mut concat_str = String::new(); + for str in path_strs.into_iter() { + let first_chars = str.as_bytes(); + concat_str += &(first_chars[0] as char).to_string(); + } + let index_ends = part_regexes + .iter() + .map(|regex| { + let found = regex.find(&concat_str).unwrap().unwrap(); + if found.start() == found.end() { + found.end() + 1 + } else { + found.end() + } + }) + .collect_vec(); + let mut substr_results = vec![]; + for index in public_config_indexes.iter() { + let start = if *index == 0 { + 0 + } else { + index_ends[index - 1] + }; + let end = index_ends[*index]; + substr_results.push(( + path_states[(start)..=end].to_vec(), + concat_str[0..=(end - 1)].to_string(), + )); + } + Ok(substr_results) + } +} + +impl RegexAndDFA { + pub fn from_regex_str_and_substr_defs( + max_byte_size: usize, + regex_str: &str, + substrs_defs_json: SubstrsDefsJson, + ) -> Result { + let dfa_val = regex_to_dfa(regex_str)?; + let substr_defs_array = substrs_defs_json + .transitions + .into_iter() + .map(|transitions_array| HashSet::<(usize, usize)>::from_iter(transitions_array)) + .collect_vec(); + let substrs_defs = SubstrsDefs { + substr_defs_array, + substr_endpoints_array: None, + max_bytes: None, + }; + + Ok(RegexAndDFA { + max_byte_size, + all_regex: regex_str.to_string(), + dfa_val, + substrs_defs, + }) + } +} + +pub fn gen_from_decomposed( + decomposed_regex_path: &str, + halo2_dir_path: Option<&str>, + circom_file_path: Option<&str>, + circom_template_name: Option<&str>, + gen_substrs: Option, +) { + let decomposed_regex_config: DecomposedRegexConfig = + serde_json::from_reader(File::open(decomposed_regex_path).unwrap()).unwrap(); + let regex_and_dfa = decomposed_regex_config + .to_regex_and_dfa() + .expect("failed to convert the decomposed regex to dfa"); + let gen_substrs = gen_substrs.unwrap_or(true); + if let Some(halo2_dir_path) = halo2_dir_path { + let halo2_dir_path = PathBuf::from(halo2_dir_path); + let allstr_file_path = halo2_dir_path.join("allstr.txt"); + let mut num_public_parts = 0usize; + for part in decomposed_regex_config.parts.iter() { + if part.is_public { + num_public_parts += 1; + } + } + let substr_file_pathes = (0..num_public_parts) + .map(|idx| halo2_dir_path.join(format!("substr_{}.txt", idx))) + .collect_vec(); + regex_and_dfa + .gen_halo2_tables(&allstr_file_path, &substr_file_pathes, gen_substrs) + .expect("failed to generate halo2 tables"); + } + if let Some(circom_file_path) = circom_file_path { + let circom_file_path = PathBuf::from(circom_file_path); + let circom_template_name = circom_template_name + .expect("circom template name must be specified if circom file path is specified"); + regex_and_dfa + .gen_circom(&circom_file_path, &circom_template_name, gen_substrs) + .expect("failed to generate circom"); + } +} + +pub fn gen_from_raw( + raw_regex: &str, + max_bytes: usize, + substrs_json_path: Option<&str>, + halo2_dir_path: Option<&str>, + circom_file_path: Option<&str>, + circom_template_name: Option<&str>, + gen_substrs: Option, +) { + let substrs_defs_json = if let Some(substrs_json_path) = substrs_json_path { + let substrs_json_path = PathBuf::from(substrs_json_path); + let substrs_defs_json: SubstrsDefsJson = + serde_json::from_reader(File::open(substrs_json_path).unwrap()).unwrap(); + substrs_defs_json + } else { + SubstrsDefsJson { + transitions: vec![vec![]], + } + }; + let num_public_parts = substrs_defs_json.transitions.len(); + let regex_and_dfa = + RegexAndDFA::from_regex_str_and_substr_defs(max_bytes, raw_regex, substrs_defs_json) + .expect("failed to convert the raw regex and state transitions to dfa"); + let gen_substrs = gen_substrs.unwrap_or(true); + if let Some(halo2_dir_path) = halo2_dir_path { + let halo2_dir_path = PathBuf::from(halo2_dir_path); + let allstr_file_path = halo2_dir_path.join("allstr.txt"); + let substr_file_pathes = (0..num_public_parts) + .map(|idx| halo2_dir_path.join(format!("substr_{}.txt", idx))) + .collect_vec(); + regex_and_dfa + .gen_halo2_tables(&allstr_file_path, &substr_file_pathes, gen_substrs) + .expect("failed to generate halo2 tables"); + } + if let Some(circom_file_path) = circom_file_path { + let circom_file_path = PathBuf::from(circom_file_path); + let circom_template_name = circom_template_name + .expect("circom template name must be specified if circom file path is specified"); + regex_and_dfa + .gen_circom(&circom_file_path, &circom_template_name, gen_substrs) + .expect("failed to generate circom"); + } +} + +pub(crate) fn get_accepted_state(dfa_val: &[Value]) -> Option { + for i in 0..dfa_val.len() { + if dfa_val[i]["type"] == "accept" { + return Some(i as usize); + } + } + None +} + +pub(crate) fn get_max_state(dfa_val: &[Value]) -> Result { + let mut max_state = 0; + for (i, val) in dfa_val.iter().enumerate() { + for (_, next_node_val) in val["edges"] + .as_object() + .ok_or(JsCallerError::InvalidEdges(val["edges"].clone()))? + .iter() + { + let next_node = next_node_val + .as_u64() + .ok_or(JsCallerError::InvalidNodeValue(next_node_val.clone()))? + as usize; + if next_node > max_state { + max_state = next_node; + } + } + } + Ok(max_state) +} + +pub(crate) fn add_graph_nodes( + dfa_val: &[Value], + graph: &mut Graph, + last_max_state: Option, + next_max_state: usize, +) -> Result<(), JsCallerError> { + let first_new_state = match last_max_state { + Some(v) => v + 1, + None => 0, + }; + for idx in first_new_state..=next_max_state { + graph.add_node(idx == next_max_state); + } + + for (i, val) in dfa_val.iter().enumerate() { + for (key, next_node_val) in val["edges"] + .as_object() + .ok_or(JsCallerError::InvalidEdges(val["edges"].clone()))? + .iter() + { + let next_node = next_node_val + .as_u64() + .ok_or(JsCallerError::InvalidNodeValue(next_node_val.clone()))? + as usize; + if let Some(max) = last_max_state { + if i <= max && next_node <= max { + continue; + } + } + let key_list: Vec = serde_json::from_str(&key)?; + let mut key_str = String::new(); + for key_char in key_list.iter() { + assert!(key_char.len() == 1); + key_str += key_char; + } + graph.add_edge(NodeIndex::from(next_node), NodeIndex::from(i), key_str); + } + } + Ok(()) +} + +#[cfg(feature = "node")] +#[neon::main] +fn main(mut cx: neon::prelude::ModuleContext) -> neon::prelude::NeonResult<()> { + cx.export_function("genFromDecomposed", gen_from_decomposed_node)?; + Ok(()) +} diff --git a/packages/compiler/src/node.rs b/packages/compiler/src/node.rs new file mode 100644 index 0000000..ddc16e8 --- /dev/null +++ b/packages/compiler/src/node.rs @@ -0,0 +1,35 @@ +use crate::gen_from_decomposed; +use neon::prelude::*; + +pub(crate) fn gen_from_decomposed_node(mut cx: FunctionContext) -> JsResult { + let decomposed_regex_path = cx.argument::(0)?.value(&mut cx); + let halo2_dir_path = cx.argument_opt(1).map(|v| { + v.to_string(&mut cx) + .expect("halo2_dir_path must be null or string") + .value(&mut cx) + }); + let circom_file_path = cx.argument_opt(2).map(|v| { + v.to_string(&mut cx) + .expect("circom_file_path must be null or string") + .value(&mut cx) + }); + let circom_template_name = cx.argument_opt(3).map(|v| { + v.to_string(&mut cx) + .expect("circom_template_name must be null or string") + .value(&mut cx) + }); + let gen_substrs = cx.argument_opt(4).map(|v| { + v.as_value(&mut cx) + .downcast::(&mut cx) + .expect("gen_substrs must be null or boolean") + .value(&mut cx) + }); + gen_from_decomposed( + &decomposed_regex_path, + halo2_dir_path.as_ref().map(|s| s.as_str()), + circom_file_path.as_ref().map(|s| s.as_str()), + circom_template_name.as_ref().map(|s| s.as_str()), + gen_substrs, + ); + Ok(cx.null()) +} diff --git a/compiler/lexical.js b/packages/compiler/src/regex.js similarity index 78% rename from compiler/lexical.js rename to packages/compiler/src/regex.js index 6cdbf46..4eb20bc 100644 --- a/compiler/lexical.js +++ b/packages/compiler/src/regex.js @@ -1,6 +1,15 @@ /* eslint-disable no-prototype-builtins */ /*jslint browser: true*/ +// const a2z_nosep = "abcdefghijklmnopqrstuvwxyz"; +// const A2Z_nosep = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; +// const a2f_nosep = "abcdef"; +// const A2F_nosep = "ABCDEF"; +// const r0to9_nosep = "0123456789"; +// const escapeMap = { n: "\n", r: "\r", t: "\t", v: "\v", f: "\f" }; +// const whitespace = Object.values(escapeMap); +// const slash_s = whitespace.join("|"); + /** * Try parsing simple regular expression to syntax tree. * @@ -26,7 +35,7 @@ function parseRegex(text) { var i, sub, last = 0, - node = {'begin': begin, 'end': end}, + node = { 'begin': begin, 'end': end }, virNode, tempNode, stack = 0, @@ -86,7 +95,7 @@ function parseRegex(text) { if (parts.length === 0) { return 'Error: unexpected * at ' + (begin + i) + '.'; } - tempNode = {'begin': parts[parts.length - 1].begin, 'end': parts[parts.length - 1].end + 1}; + tempNode = { 'begin': parts[parts.length - 1].begin, 'end': parts[parts.length - 1].end + 1 }; tempNode.type = 'star'; tempNode.sub = parts[parts.length - 1]; parts[parts.length - 1] = tempNode; @@ -94,10 +103,10 @@ function parseRegex(text) { if (parts.length === 0) { return 'Error: unexpected + at ' + (begin + i) + '.'; } - virNode = {'begin': parts[parts.length - 1].begin, 'end': parts[parts.length - 1].end + 1}; + virNode = { 'begin': parts[parts.length - 1].begin, 'end': parts[parts.length - 1].end + 1 }; virNode.type = 'star'; virNode.sub = parts[parts.length - 1]; - tempNode = {'begin': parts[parts.length - 1].begin, 'end': parts[parts.length - 1].end + 1}; + tempNode = { 'begin': parts[parts.length - 1].begin, 'end': parts[parts.length - 1].end + 1 }; tempNode.type = 'cat'; tempNode.parts = [parts[parts.length - 1], virNode]; parts[parts.length - 1] = tempNode; @@ -105,24 +114,24 @@ function parseRegex(text) { if (parts.length === 0) { return 'Error: unexpected + at ' + (begin + i) + '.'; } - virNode = {'begin': parts[parts.length - 1].begin, 'end': parts[parts.length - 1].end + 1}; + virNode = { 'begin': parts[parts.length - 1].begin, 'end': parts[parts.length - 1].end + 1 }; virNode.type = 'empty'; virNode.sub = parts[parts.length - 1]; - tempNode = {'begin': parts[parts.length - 1].begin, 'end': parts[parts.length - 1].end + 1}; + tempNode = { 'begin': parts[parts.length - 1].begin, 'end': parts[parts.length - 1].end + 1 }; tempNode.type = 'or'; tempNode.parts = [parts[parts.length - 1], virNode]; parts[parts.length - 1] = tempNode; } else if (text[i] === 'ϵ') { - tempNode = {'begin': begin + i, 'end': begin + i + 1}; + tempNode = { 'begin': begin + i, 'end': begin + i + 1 }; tempNode.type = 'empty'; parts.push(tempNode); } else if (Array.isArray(text[i])) { - tempNode = {'begin': begin + i, 'end': begin + i + 1}; + tempNode = { 'begin': begin + i, 'end': begin + i + 1 }; tempNode.type = 'text'; tempNode.text = text[i][0]; parts.push(tempNode); } else { - tempNode = {'begin': begin + i, 'end': begin + i + 1}; + tempNode = { 'begin': begin + i, 'end': begin + i + 1 }; tempNode.type = 'text'; tempNode.text = text[i]; parts.push(tempNode); @@ -141,7 +150,7 @@ function parseRegex(text) { let i = 0; while (i < text.length) { if (text[i] == '\\') { - new_text.push([text[i+1]]); + new_text.push([text[i + 1]]); i += 2; } else { new_text.push(text[i]); @@ -166,36 +175,36 @@ function regexToNfa(text) { count += 1; } switch (node.type) { - case 'empty': - start.edges.push(['ϵ', end]); - break; - case 'text': - start.edges.push([node.text, end]); - break; - case 'cat': - last = start; - for (i = 0; i < node.parts.length - 1; i += 1) { - temp = {'type': '', 'edges': []}; - count = generateGraph(node.parts[i], last, temp, count); - last = temp; - } - count = generateGraph(node.parts[node.parts.length - 1], last, end, count); - break; - case 'or': - for (i = 0; i < node.parts.length; i += 1) { - tempStart = {'type': '', 'edges': []}; - tempEnd = {'type': '', 'edges': [['ϵ', end]]}; + case 'empty': + start.edges.push(['ϵ', end]); + break; + case 'text': + start.edges.push([node.text, end]); + break; + case 'cat': + last = start; + for (i = 0; i < node.parts.length - 1; i += 1) { + temp = { 'type': '', 'edges': [] }; + count = generateGraph(node.parts[i], last, temp, count); + last = temp; + } + count = generateGraph(node.parts[node.parts.length - 1], last, end, count); + break; + case 'or': + for (i = 0; i < node.parts.length; i += 1) { + tempStart = { 'type': '', 'edges': [] }; + tempEnd = { 'type': '', 'edges': [['ϵ', end]] }; + start.edges.push(['ϵ', tempStart]); + count = generateGraph(node.parts[i], tempStart, tempEnd, count); + } + break; + case 'star': + tempStart = { 'type': '', 'edges': [] }; + tempEnd = { 'type': '', 'edges': [['ϵ', tempStart], ['ϵ', end]] }; start.edges.push(['ϵ', tempStart]); - count = generateGraph(node.parts[i], tempStart, tempEnd, count); - } - break; - case 'star': - tempStart = {'type': '', 'edges': []}; - tempEnd = {'type': '', 'edges': [['ϵ', tempStart], ['ϵ', end]]}; - start.edges.push(['ϵ', tempStart]); - start.edges.push(['ϵ', end]); - count = generateGraph(node.sub, tempStart, tempEnd, count); - break; + start.edges.push(['ϵ', end]); + count = generateGraph(node.sub, tempStart, tempEnd, count); + break; } if (!end.hasOwnProperty('id')) { end.id = count; @@ -204,8 +213,8 @@ function regexToNfa(text) { return count; } var ast = parseRegex(text), - start = {'type': 'start', 'edges': []}, - accept = {'type': 'accept', 'edges': []}; + start = { 'type': 'start', 'edges': [] }, + accept = { 'type': 'accept', 'edges': [] }; if (typeof ast === 'string') { return ast; } @@ -532,20 +541,14 @@ function toNature(col) { // '(\r\n|\x80)(to|from):([A-Za-z0-9 _."@-]+<)?[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.]+>?\r\n'; // let regex = '(\r\n|\x80)(to|from):((a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9| |_|.|"|@|-)+<)?(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_|.|-)+@(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_|.|-)+>?\r\n'; -const key_chars = '(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)'; -const catch_all = '(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|"|#|$|%|&|\'|\\(|\\)|\\*|\\+|,|-|.|/|:|;|<|=|>|\\?|@|[|\\\\|]|^|_|`|{|\\||}|~| |\t|\n|\r|\x0b|\x0c)'; -const catch_all_without_semicolon = '(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|"|#|$|%|&|\'|\\(|\\)|\\*|\\+|,|-|.|/|:|<|=|>|\\?|@|[|\\\\|]|^|_|`|{|\\||}|~| |\t|\n|\r|\x0b|\x0c)'; -const base_64 = '(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\+|/|=)'; -const word_char = '(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_)'; +// const key_chars = '(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)'; +// const catch_all = '(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|"|#|$|%|&|\'|\\(|\\)|\\*|\\+|,|-|.|/|:|;|<|=|>|\\?|@|[|\\\\|]|^|_|`|{|\\||}|~| |\t|\n|\r|\x0b|\x0c)'; +// const catch_all_without_semicolon = '(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|"|#|$|%|&|\'|\\(|\\)|\\*|\\+|,|-|.|/|:|<|=|>|\\?|@|[|\\\\|]|^|_|`|{|\\||}|~| |\t|\n|\r|\x0b|\x0c)'; +// const base_64 = '(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\+|/|=)'; +// const word_char = '(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_)'; -function compile(regex) { - // let regex = `\r\ndkim-signature:(${key_chars}=${catch_all_without_semicolon}+; )+bh=${base_64}+; `; - - // console.log(regex); - // console.log(Buffer.from(regex).toString('base64')); - - // let regex = 'hello(0|1|2|3|4|5|6|7|8|9)+world'; +function regexToDfa(regex) { let nfa = regexToNfa(regex); let dfa = minDfa(nfaToDfa(nfa)); @@ -582,20 +585,45 @@ function compile(regex) { curr.edges = {}; for (let j = 0; j < symbols.length; j += 1) { if (nodes[i].trans.hasOwnProperty(symbols[j])) { - curr.edges[symbols[j]] = nodes[i].trans[symbols[j]].nature-1; + curr.edges[symbols[j]] = nodes[i].trans[symbols[j]].nature - 1; } } - graph[nodes[i].nature-1] = curr; + graph[nodes[i].nature - 1] = curr; } - return graph; + return JSON.stringify(graph); } -module.exports = { - compile, - key_chars, - base_64, - word_char, - catch_all, - catch_all_without_semicolon, -}; \ No newline at end of file + +function catchAllRegexStr() { + return "(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|\"|#|$|%|&|'|\\(|\\)|\\*|\\+|,|-|.|/|:|;|<|=|>|\\?|@|[|\\\\|]|^|_|`|{|\\||}|~| |\t|\n|\r|\x0b|\x0c)"; +} + +function catchAllWithoutRNRegexStr() { + return "(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|\"|#|$|%|&|'|\\(|\\)|\\*|\\+|,|-|.|/|:|;|<|=|>|\\?|@|[|\\\\|]|^|_|`|{|\\||}|~| |\t|\x0b|\x0c)"; +} + +function textContextPrefix() { + return `Content-Type: text/plain; charset="UTF-8"\r\n\r\n`; +} + +// function formatRegexPrintable(s) { +// const escaped_string_json = JSON.stringify(s); +// const escaped_string = escaped_string_json.slice(1, escaped_string_json.length - 1); +// return escaped_string +// .replaceAll("\\\\\\\\", "\\") +// .replaceAll("\\\\", "\\") +// .replaceAll("/", "\\/") +// .replaceAll("\u000b", "\\♥") +// .replaceAll("^", "\\^") +// .replaceAll("$", "\\$") +// .replaceAll("|[|", "|\\[|") +// .replaceAll("|]|", "|\\]|") +// .replaceAll("|.|", "|\\.|") +// .replaceAll("|$|", "|\\$|") +// .replaceAll("|^|", "|\\^|"); +// } + +// module.exports = { +// regexToDfa +// }; \ No newline at end of file diff --git a/test/circuits/test_regex_compiler_group_0.circom b/test/circuits/test_regex_compiler_group_0.circom deleted file mode 100644 index 8ffc84a..0000000 --- a/test/circuits/test_regex_compiler_group_0.circom +++ /dev/null @@ -1,10 +0,0 @@ -pragma circom 2.0.2; - -include "../../build/compiled.circom"; - -component main { - public [ - msg, - match_idx - ] -} = Regex(1536, 44, 0); diff --git a/test/circuits/test_regex_compiler_group_1.circom b/test/circuits/test_regex_compiler_group_1.circom deleted file mode 100644 index fcddc71..0000000 --- a/test/circuits/test_regex_compiler_group_1.circom +++ /dev/null @@ -1,10 +0,0 @@ -pragma circom 2.0.2; - -include "../../build/compiled.circom"; - -component main { - public [ - msg, - match_idx - ] -} = Regex(1536, 44, 1); diff --git a/test/circuits/test_regex_compiler_group_2.circom b/test/circuits/test_regex_compiler_group_2.circom deleted file mode 100644 index e75bd4c..0000000 --- a/test/circuits/test_regex_compiler_group_2.circom +++ /dev/null @@ -1,10 +0,0 @@ -pragma circom 2.0.2; - -include "../../build/compiled.circom"; - -component main { - public [ - msg, - match_idx - ] -} = Regex(1536, 44, 2); diff --git a/test/circuits/test_regex_compiler_group_3.circom b/test/circuits/test_regex_compiler_group_3.circom deleted file mode 100644 index eedd74c..0000000 --- a/test/circuits/test_regex_compiler_group_3.circom +++ /dev/null @@ -1,10 +0,0 @@ -pragma circom 2.0.2; - -include "../../build/compiled.circom"; - -component main { - public [ - msg, - match_idx - ] -} = Regex(1536, 44, 3); diff --git a/test/header.fixture.txt b/test/header.fixture.txt deleted file mode 100644 index e50b9f4..0000000 --- a/test/header.fixture.txt +++ /dev/null @@ -1,7 +0,0 @@ -Date: Sat, 24 Dec 2022 07:12:37 +0000 -from: Twitter -to: test -Subject: Password reset request -MIME-Version: 1.0 -Content-Type: multipart/alternative; - \ No newline at end of file diff --git a/test/regex-compiler.test.js b/test/regex-compiler.test.js deleted file mode 100644 index 173d902..0000000 --- a/test/regex-compiler.test.js +++ /dev/null @@ -1,214 +0,0 @@ -const fs = require('fs'); -const {expect} = require('chai'); -const path = require('path'); -const circom_tester = require('circom_tester'); -const generator = require('../compiler/gen'); -const wasm_tester = circom_tester.wasm; - -describe('regex compiler tests', function () { - [ - [ - ['1=(a|b) (2=(b|c)+ )+d', 0], - [ - [ - '1 entire match and 1st sub-group match', - convertMsg('1=a 2=b 2=bc 2=c d'), - 0, - (signals) => { - expect(signals.main.entire_count).to.equal(1n); - expect(signals.main.group_match_count).to.equal(1n); - expect(signals.main.start_idx).to.equal(2n); - const expected_reveal = encodeString('a'); - assert_reveal(signals, expected_reveal); - } - ], - ] - ], - [ - ['1=(a|b) (2=(b|c)+ )+d', 1], - [ - [ - '1 entire match and 1st sub-group match', - convertMsg('1=a 2=b 2=bc 2=c d'), - 0, - (signals) => { - expect(signals.main.entire_count).to.equal(1n); - expect(signals.main.group_match_count).to.equal(3n); - expect(signals.main.start_idx).to.equal(6n); - const expected_reveal = encodeString('b'); - assert_reveal(signals, expected_reveal); - } - ], - [ - '1 entire match and 2nd sub-group match', - convertMsg('1=a 2=b 2=bc 2=c d'), - 1, - (signals) => { - expect(signals.main.entire_count).to.equal(1n); - expect(signals.main.group_match_count).to.equal(3n); - expect(signals.main.start_idx).to.equal(10n); - const expected_reveal = encodeString('bc'); - assert_reveal(signals, expected_reveal); - } - ], - [ - '1 entire match and 3rd sub-group match', - convertMsg('1=a 2=b 2=bc 2=c d'), - 2, - (signals) => { - expect(signals.main.entire_count).to.equal(1n); - expect(signals.main.group_match_count).to.equal(3n); - expect(signals.main.start_idx).to.equal(15n); - const expected_reveal = encodeString('c'); - assert_reveal(signals, expected_reveal); - } - ], - [ - '0 entire match and 2 group matches', - convertMsg('1=a 2=b 2=bc 2=e d'), - 1, - (signals) => { - expect(signals.main.entire_count).to.equal(0n); - expect(signals.main.group_match_count).to.equal(2n); - } - ], - [ - '2 entire match and 2nd sub-group match', - convertMsg('1=a 2=b 2=bc 2=c da 1=a 2=cb 2=c 2=b dd'), - 1, - (signals) => { - expect(signals.main.entire_count).to.equal(2n); - expect(signals.main.group_match_count).to.equal(6n); - expect(signals.main.start_idx).to.equal(10n); - const expected_reveal = encodeString('bc'); - assert_reveal(signals, expected_reveal); - } - ], - // todo TOFIX - // [ - // '1 entire match and 1+ group matches with no trails behind the last group', - // convertMsg(`1=a 2=b 2=bc 2=c `), - // [`1=(a|b) (2=(b|c)+ )+`, 1, 1], - // (signals) => { - // for (let i = 0; i < signals.main.states.length; i++) { - // console.log(signals.main.states[i][8]) - // } - // expect(signals.main.entire_count).to.equal(1n) - // expect(signals.main.group_match_count).to.equal(3n) - // expect(signals.main.start_idx).to.equal(10n) - // const expected_reveal = 'bc'.split('').map((x) => BigInt(x.charCodeAt(0))) - // assert_reveal(signals, expected_reveal); - // } - // ], - ] - ], - [ - ['(\r\n|\x80)(to|from):((a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9| |_|.|"|@|-)+<)?(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_|.|-)+@(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_|.|-)+>?\r\n', 2], - [ - [ - 'from to email header', - convertMsg(fs.readFileSync(path.join(__dirname, 'header.fixture.txt'), 'utf8')), - 0, - (signals) => { - expect(signals.main.entire_count).to.equal(2n); - expect(signals.main.group_match_count).to.equal(2n); - expect(signals.main.start_idx).to.equal(54n); - const expected_reveal = encodeString('verify'); - assert_reveal(signals, expected_reveal); - } - ], - ] - ], - [ - ['dkim-signature:((a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)=(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|"|#|$|%|&|\'|\\(|\\)|\\*|\\+|,|-|.|\\/|:|<|=|>|\\?|@|\\[|\\\\|\\]|^|_|`|{|\\||}|~| |\t|\n' + - '|\r|\x0B|\f)+; )+bh=(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\+|\\/|=)+; ', 2], - [ - [ - 'assert body hash', - convertMsg('\r\ndkim-signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=twitter.com; s=dkim-201406; t=1671865957; bh=hEMyi6n9V0N6aGtz3lEc6fQBlZRVUok/tkwpRCmrnaa=; h=Date:From:To:Subject:MIME-Version:Content-Type:Message-ID; b='), - 0, - (signals) => { - expect(signals.main.entire_count).to.equal(1n); - expect(signals.main.group_match_count).to.equal(1n); - const expected_reveal = encodeString('hEMyi6n9V0N6aGtz3lEc6fQBlZRVUok/tkwpRCmrnaa='); - assert_reveal(signals, expected_reveal); - } - ] - ] - ], - ] - .forEach((regexSuite) => { - const regex = regexSuite[0][0]; - const group_idx = regexSuite[0][1]; - const tests = regexSuite[1]; - - const testCircomFile = `test_regex_compiler_group_${group_idx}.circom`; - let circuit; - describe(`/${regex}/ > group idx: ${group_idx} > ${testCircomFile}`, () => { - before(async function () { - await generator.generateCircuit( - regex, - '../circuits' - ); - circuit = await wasm_tester( - path.join(__dirname, 'circuits', testCircomFile), - {recompile: process.env.NO_COMPILE ? false : true, output: `${__dirname}/../build/`, O: 0} - ); - }); - tests.forEach((test) => { - const name = test[0]; - const content = test[1]; - const match_idx = test[2]; - const checkSignals = test[3]; - - describe(name, () => { - it('checks witness', async function() { - let witness = await circuit.calculateWitness({msg: content, match_idx}); - const signals = await circuit.getJSONOutput('main', witness); - checkSignals(signals); - await circuit.checkConstraints(witness); - }); - }); - }); - }); - }); - - describe('exceptions', () => { - it('character class not supported', async () => { - try { - await generator.generateCircuit( - '[a-z]', - '../circuits' - ); - } - catch (e) { - expect(e.message).to.equal('CharacterClass not supported'); - return; - } - - expect.fail('should have thrown'); - }); - }); -}); - -function encodeString(str) { - return str.split('').map((x) => BigInt(x.charCodeAt(0))); -} - -function convertMsg(msg, maxLen = 1536) { - let msgEncoded = msg.split('').map((x) => x.charCodeAt(0)); - while (msgEncoded.length < maxLen) { - msgEncoded.push(0); - } - msgEncoded = msgEncoded.map((x) => `${x}`); - return msgEncoded; -} - -function assert_reveal(signals, expected_reveal) { - for (let m in signals.main.reveal_shifted) { - const value = signals.main.reveal_shifted[m]; - if (expected_reveal[m]) { - expect(value).to.equal(expected_reveal[m]); - } - } -} diff --git a/test/regex-compiler.test.ts b/test/regex-compiler.test.ts deleted file mode 100644 index 2c3d9a1..0000000 --- a/test/regex-compiler.test.ts +++ /dev/null @@ -1,218 +0,0 @@ -const fs = require('fs'); -import { expect } from 'chai'; -const path = require('path') -const circom_tester = require('circom_tester'); -const generator = require('../compiler/gen') -const wasm_tester = circom_tester.wasm; - -describe("regex compiler tests", function () { - [ - [ - [`1=(a|b) (2=(b|c)+ )+d`, 0], - [ - [ - '1 entire match and 1st sub-group match', - convertMsg(`1=a 2=b 2=bc 2=c d`), - 0, - (signals: any) => { - expect(signals.main.entire_count).to.equal(1n) - expect(signals.main.group_match_count).to.equal(1n) - expect(signals.main.start_idx).to.equal(2n) - const expected_reveal = encodeString('a') - assert_reveal(signals, expected_reveal); - } - ], - ] - ], - [ - [`1=(a|b) (2=(b|c)+ )+d`, 1], - [ - [ - '1 entire match and 1st sub-group match', - convertMsg(`1=a 2=b 2=bc 2=c d`), - 0, - (signals: any) => { - expect(signals.main.entire_count).to.equal(1n) - expect(signals.main.group_match_count).to.equal(3n) - expect(signals.main.start_idx).to.equal(6n) - const expected_reveal = encodeString('b') - assert_reveal(signals, expected_reveal); - } - ], - [ - '1 entire match and 2nd sub-group match', - convertMsg(`1=a 2=b 2=bc 2=c d`), - 1, - (signals: any) => { - expect(signals.main.entire_count).to.equal(1n) - expect(signals.main.group_match_count).to.equal(3n) - expect(signals.main.start_idx).to.equal(10n) - const expected_reveal = encodeString('bc') - assert_reveal(signals, expected_reveal); - } - ], - [ - '1 entire match and 3rd sub-group match', - convertMsg(`1=a 2=b 2=bc 2=c d`), - 2, - (signals: any) => { - expect(signals.main.entire_count).to.equal(1n) - expect(signals.main.group_match_count).to.equal(3n) - expect(signals.main.start_idx).to.equal(15n) - const expected_reveal = encodeString('c') - assert_reveal(signals, expected_reveal); - } - ], - [ - '0 entire match and 2 group matches', - convertMsg(`1=a 2=b 2=bc 2=e d`), - 1, - (signals: any) => { - expect(signals.main.entire_count).to.equal(0n) - expect(signals.main.group_match_count).to.equal(2n) - } - ], - [ - '2 entire match and 2nd sub-group match', - convertMsg(`1=a 2=b 2=bc 2=c da 1=a 2=cb 2=c 2=b dd`), - 1, - (signals: any) => { - expect(signals.main.entire_count).to.equal(2n) - expect(signals.main.group_match_count).to.equal(6n) - expect(signals.main.start_idx).to.equal(10n) - const expected_reveal = encodeString('bc') - assert_reveal(signals, expected_reveal); - } - ], - // todo TOFIX - // [ - // '1 entire match and 1+ group matches with no trails behind the last group', - // convertMsg(`1=a 2=b 2=bc 2=c `), - // [`1=(a|b) (2=(b|c)+ )+`, 1, 1], - // (signals: any) => { - // for (let i = 0; i < signals.main.states.length; i++) { - // console.log(signals.main.states[i][8]) - // } - // expect(signals.main.entire_count).to.equal(1n) - // expect(signals.main.group_match_count).to.equal(3n) - // expect(signals.main.start_idx).to.equal(10n) - // const expected_reveal = 'bc'.split('').map((x: any) => BigInt(x.charCodeAt(0))) - // assert_reveal(signals, expected_reveal); - // } - // ], - ] - ], - [ - ['(\r\n|\x80)(to|from):((a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9| |_|.|"|@|-)+<)?(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_|.|-)+@(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|_|.|-)+>?\r\n', 2], - [ - [ - 'from to email header', - convertMsg(fs.readFileSync(path.join(__dirname, 'header.fixture.txt'), 'utf8')), - 0, - (signals: any) => { - expect(signals.main.entire_count).to.equal(2n) - expect(signals.main.group_match_count).to.equal(2n) - expect(signals.main.start_idx).to.equal(54n) - const expected_reveal = encodeString('verify') - assert_reveal(signals, expected_reveal); - } - ], - ] - ], - [ - ['dkim-signature:((a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)=(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|!|"|#|$|%|&|\'|\\(|\\)|\\*|\\+|,|-|.|\\/|:|<|=|>|\\?|@|\\[|\\\\|\\]|^|_|`|{|\\||}|~| |\t|\n' + - '|\r|\x0B|\f)+; )+bh=(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9|\\+|\\/|=)+; ', 2], - [ - [ - 'assert body hash', - convertMsg("\r\ndkim-signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=twitter.com; s=dkim-201406; t=1671865957; bh=hEMyi6n9V0N6aGtz3lEc6fQBlZRVUok/tkwpRCmrnaa=; h=Date:From:To:Subject:MIME-Version:Content-Type:Message-ID; b="), - 0, - (signals: any) => { - expect(signals.main.entire_count).to.equal(1n) - expect(signals.main.group_match_count).to.equal(1n) - const expected_reveal = encodeString('hEMyi6n9V0N6aGtz3lEc6fQBlZRVUok/tkwpRCmrnaa=') - assert_reveal(signals, expected_reveal); - } - ] - ] - ], - ] - .forEach((regexSuite: any) => { - const regex = regexSuite[0][0] - const group_idx = regexSuite[0][1] - const tests: any = regexSuite[1] - - const testCircomFile = `test_regex_compiler_group_${group_idx}.circom` - let circuit: any; - describe(`/${regex}/ > group idx: ${group_idx} > ${testCircomFile}`, () => { - before(async function () { - await generator.generateCircuit( - regex, - '../circuits' - ) - circuit = await wasm_tester( - path.join(__dirname, "circuits", testCircomFile), - {recompile: process.env.NO_COMPILE ? false : true, output: `${__dirname}/../build/`, O: 0} - ); - }); - tests.forEach((test: any) => { - //@ts-ignore - const name: string = test[0] - //@ts-ignore - const content: string = test[1] - //@ts-ignore - const match_idx: number = test[2] - //@ts-ignore - const checkSignals: Function = test[3] - - describe(name, () => { - it('checks witness', async function() { - let witness = await circuit.calculateWitness({msg: content, match_idx}); - const signals = await circuit.getJSONOutput('main', witness); - checkSignals(signals) - await circuit.checkConstraints(witness); - }); - }); - }) - }); - }) - - describe('exceptions', () => { - it('character class not supported', async () => { - try { - await generator.generateCircuit( - '[a-z]', - '../circuits' - ) - } - catch (e: any) { - expect(e.message).to.equal('CharacterClass not supported') - return - } - - expect.fail('should have thrown') - }); - }); -}); - -function encodeString(str: string) { - return str.split('').map((x: any) => BigInt(x.charCodeAt(0))); -} - -function convertMsg(msg: string, maxLen: number = 1536) { - let msgEncoded = msg.split('').map((x: any) => x.charCodeAt(0)); - while (msgEncoded.length < maxLen) { - msgEncoded.push(0); - } - msgEncoded = msgEncoded.map((x: any) => `${x}`); - return msgEncoded; -} - -function assert_reveal(signals: any, expected_reveal: bigint[]) { - for (let m in signals.main.reveal_shifted) { - const value = signals.main.reveal_shifted[m]; - if (expected_reveal[m as any]) { - expect(value).to.equal(expected_reveal[m as any]); - } - } -} diff --git a/yarn.lock b/yarn.lock index 93de7ba..2b715c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,84 +2,1371 @@ # yarn lockfile v1 -"@babel/code-frame@^7.12.13": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" + integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.22.5": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" + integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== dependencies: - "@babel/highlight" "^7.18.6" + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.23.0", "@babel/generator@^7.7.2": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" -"@babel/helper-validator-identifier@^7.18.6": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" + integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.23.0": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" + integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== dependencies: - "@jridgewell/trace-mapping" "0.3.9" + "@babel/helper-plugin-utils" "^7.22.5" -"@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== dependencies: - eslint-visitor-keys "^3.3.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" -"@eslint-community/regexpp@^4.4.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" - integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" -"@eslint/eslintrc@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" - integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.5.1" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" -"@eslint/js@8.37.0": - version "8.37.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.37.0.tgz#cf1b5fa24217fe007f6487a26d765274925efa7d" - integrity sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A== +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" + "@babel/helper-plugin-utils" "^7.8.0" -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@babel/plugin-syntax-import-assertions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" + integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" + integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz#3b153af4a6b779f340d5b80d3f634f55820aefa3" + integrity sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== + dependencies: + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + +"@babel/plugin-transform-block-scoped-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" + integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" + +"@babel/plugin-transform-destructuring@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" + integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" + integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" + integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== + dependencies: + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.22.5": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== + dependencies: + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.22.15", "@babel/plugin-transform-modules-commonjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.22.11": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" + integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" + integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.15" + +"@babel/plugin-transform-object-super@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + +"@babel/plugin-transform-optional-catch-binding@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" + integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" + integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" + integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/types" "^7.22.15" + +"@babel/plugin-transform-react-pure-annotations@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" + integrity sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" + integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-shorthand-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" + integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" + integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" + integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + +"@babel/plugin-transform-unicode-escapes@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" + integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" + integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" + integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.22.2": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.20.tgz#de9e9b57e1127ce0a2f580831717f7fb677ceedb" + integrity sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg== + dependencies: + "@babel/compat-data" "^7.22.20" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.15" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.22.15" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.11" + "@babel/plugin-transform-classes" "^7.22.15" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.22.15" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.11" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-for-of" "^7.22.15" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.11" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.15" + "@babel/plugin-transform-modules-systemjs" "^7.22.11" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-numeric-separator" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.10" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.10" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "0.1.6-no-external-plugins" + "@babel/types" "^7.22.19" + babel-plugin-polyfill-corejs2 "^0.4.5" + babel-plugin-polyfill-corejs3 "^0.8.3" + babel-plugin-polyfill-regenerator "^0.5.2" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.22.0": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" + integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.22.5" + +"@babel/preset-typescript@^7.21.5": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz#cc6602d13e7e5b2087c811912b87cf937a9129d9" + integrity sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-typescript" "^7.22.15" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.8.4": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" + integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" + integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" "@iden3/bigarray@0.0.2": version "0.0.2" @@ -94,109 +1381,313 @@ fastfile "0.0.20" ffjavascript "^0.2.48" -"@jest/expect-utils@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.3.1.tgz#531f737039e9b9e27c42449798acb5bba01935b6" - integrity sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== dependencies: - jest-get-type "^29.2.0" + jest-get-type "^29.6.3" -"@jest/schemas@^29.0.0": - version "29.0.0" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" - integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== dependencies: - "@sinclair/typebox" "^0.24.1" + expect "^29.7.0" + jest-snapshot "^29.7.0" -"@jest/types@^29.3.1": - version "29.3.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.3.1.tgz#7c5a80777cb13e703aeec6788d044150341147e3" - integrity sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA== +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: - "@jest/schemas" "^29.0.0" + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.19" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" -"@nodelib/fs.stat@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" + type-detect "4.0.8" -"@sinclair/typebox@^0.24.1": - version "0.24.51" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" - integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== - -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== +"@solidity-parser/parser@^0.16.0": + version "0.16.1" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.1.tgz#f7c8a686974e1536da0105466c4db6727311253c" + integrity sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw== + dependencies: + antlr4ts "^0.5.0-alpha.4" -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== +"@types/babel__core@^7.1.14": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" + integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.5" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" + integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + dependencies: + "@babel/types" "^7.0.0" -"@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== +"@types/babel__template@*": + version "7.4.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" + integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" -"@types/chai@^4.3.0": - version "4.3.4" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4" - integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw== +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" + integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + dependencies: + "@babel/types" "^7.20.7" -"@types/expect@^24.3.0": - version "24.3.0" - resolved "https://registry.yarnpkg.com/@types/expect/-/expect-24.3.0.tgz#d7cab8b3c10c2d92a0cbb31981feceb81d3486f1" - integrity sha512-aq5Z+YFBz5o2b6Sp1jigx5nsmoZMK5Ceurjwy6PZmRv7dEi1jLtkARfvB1ME+OXJUG+7TZUDcv3WoCr/aor6dQ== +"@types/graceful-fs@^4.1.3": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" + integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== dependencies: - expect "*" + "@types/node" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== @@ -215,15 +1706,18 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/mocha@^9.0.0": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" - integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== +"@types/jest@^29.5.4": + version "29.5.5" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.5.tgz#727204e06228fe24373df9bae76b90f3e8236a2a" + integrity sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" "@types/node@*": - version "18.11.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" - integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== + version "20.6.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258" + integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w== "@types/stack-utils@^2.0.0": version "2.0.1" @@ -231,57 +1725,34 @@ integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + version "21.0.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" + integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== "@types/yargs@^17.0.8": - version "17.0.19" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.19.tgz#8dbecdc9ab48bee0cb74f6e3327de3fa0d0c98ae" - integrity sha512-cAx3qamwaYX9R0fzOIZAlFpo4A+1uBVCxqpKz9D26uTF4srRXaGTTsikQmaotCtNdbhzyUH7ft6p9ktz9s6UNQ== + version "17.0.25" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.25.tgz#3edd102803c97356fb4c805b2bbaf7dfc9ab6abc" + integrity sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg== dependencies: "@types/yargs-parser" "*" -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.4.1: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== - -acorn@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -306,7 +1777,12 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -anymatch@~3.1.2: +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== + +anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -314,10 +1790,12 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" argparse@^2.0.1: version "2.0.1" @@ -340,23 +1818,113 @@ available-typed-arrays@^1.0.5: integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== b4a@^1.0.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.1.tgz#9effac93a469a868d024e16fd77162c653544cbd" - integrity sha512-AsKjNhz72yxteo/0EtQEiwkMUgk/tGmycXlbG4g3Ard2/ULtNLUykGOkeK0egmN27h0xMAhb76jYccW+XTBExA== + version "1.6.4" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9" + integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw== + +babel-jest@^29.5.0, babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-polyfill-corejs2@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" + integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz#1fac2b1dcef6274e72b3c72977ed8325cb330591" + integrity sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + core-js-compat "^3.32.2" + +babel-plugin-polyfill-regenerator@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" + integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.5.0, babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + bfj@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" - integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + version "7.1.0" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.1.0.tgz#c5177d522103f9040e1b12980fe8c38cf41d3f8b" + integrity sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw== dependencies: - bluebird "^3.5.5" - check-types "^11.1.1" + bluebird "^3.7.2" + check-types "^11.2.3" hoopy "^0.1.4" + jsonpath "^1.1.1" tryer "^1.0.1" binary-extensions@^2.0.0: @@ -364,6 +1932,15 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +blake-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/blake-hash/-/blake-hash-2.0.0.tgz#af184dce641951126d05b7d1c3de3224f538d66e" + integrity sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w== + dependencies: + node-addon-api "^3.0.0" + node-gyp-build "^4.2.2" + readable-stream "^3.6.0" + blake2b-wasm@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz#9115649111edbbd87eb24ce7c04b427e4e2be5be" @@ -372,11 +1949,29 @@ blake2b-wasm@^2.4.0: b4a "^1.0.1" nanoassert "^2.0.0" -bluebird@^3.5.5: +blake2b@^2.1.3: + version "2.1.4" + resolved "https://registry.yarnpkg.com/blake2b/-/blake2b-2.1.4.tgz#817d278526ddb4cd673bfb1af16d1ad61e393ba3" + integrity sha512-AyBuuJNI64gIvwx13qiICz6H6hpmjvYS5DGkG6jbXMOT8Z3WUJ3V1X0FlhIoT1b/5JtHE3ki+xjtMvu1nn+t9A== + dependencies: + blake2b-wasm "^2.4.0" + nanoassert "^2.0.0" + +bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -399,11 +1994,45 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +browserslist@^4.21.10, browserslist@^4.21.9: + version "4.21.11" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.11.tgz#35f74a3e51adc4d193dcd76ea13858de7b8fecb8" + integrity sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ== + dependencies: + caniuse-lite "^1.0.30001538" + electron-to-chromium "^1.4.526" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -417,15 +2046,30 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^6.0.0: +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -chai@^4.3.4, chai@^4.3.6: - version "4.3.7" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" - integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== +caniuse-lite@^1.0.30001538: + version "1.0.30001539" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001539.tgz#325a387ab1ed236df2c12dc6cd43a4fff9903a44" + integrity sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA== + +cargo-cp-artifact@^0.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/cargo-cp-artifact/-/cargo-cp-artifact-0.1.8.tgz#353814f49f6aa76601a4bcb3ea5f3071180b90de" + integrity sha512-3j4DaoTrsCD1MRkTF2Soacii0Nx7UHCce0EwUf4fHnggwiE4fbmF2AbnfzayR36DF8KGadfh7M/Yfy625kgPlA== + +chai@^4.3.6, chai@^4.3.7: + version "4.3.8" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.8.tgz#40c59718ad6928da6629c70496fe990b2bb5b17c" + integrity sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ== dependencies: assertion-error "^1.1.0" check-error "^1.0.2" @@ -435,7 +2079,7 @@ chai@^4.3.4, chai@^4.3.6: pathval "^1.1.1" type-detect "^4.0.5" -chalk@^2.0.0: +chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -452,15 +2096,20 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== -check-types@^11.1.1: - version "11.2.2" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.2.tgz#7afc0b6a860d686885062f2dba888ba5710335b4" - integrity sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA== +check-types@^11.2.3: + version "11.2.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71" + integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== child_process@^1.0.2: version "1.0.2" @@ -483,9 +2132,9 @@ chokidar@3.5.3: fsevents "~2.3.2" ci-info@^3.2.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.1.tgz#708a6cdae38915d597afdf3b145f2f8e1ff55f3f" - integrity sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w== + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== circom_runtime@0.1.21: version "0.1.21" @@ -494,9 +2143,17 @@ circom_runtime@0.1.21: dependencies: ffjavascript "0.2.56" -circom_tester@katat/circom_tester#feat/signal-json: +circom_runtime@0.1.24: + version "0.1.24" + resolved "https://registry.yarnpkg.com/circom_runtime/-/circom_runtime-0.1.24.tgz#60ca8a31c3675802fbab5a0bcdeb02556e510733" + integrity sha512-H7/7I2J/cBmRnZm9docOCGhfxzS61BEm4TMCWcrZGsWNBQhePNfQq88Oj2XpUfzmBTCd8pRvRb3Mvazt3TMrJw== + dependencies: + ffjavascript "0.2.60" + +circom_tester@^0.0.19: version "0.0.19" - resolved "https://codeload.github.com/katat/circom_tester/tar.gz/8b38a250bad9e0c2d547f9207d833a60a134d58d" + resolved "https://registry.yarnpkg.com/circom_tester/-/circom_tester-0.0.19.tgz#e8bed494d080f8186bd0ac6571755d00ccec83bd" + integrity sha512-SNHaBsGxcBH6XsVWfsRbRPA7NF8m8AMKJI9dtJJCFGUtOTT2+zsoIqAwi50z6XCnO4TtjyXq7AeXa1PLHqT0tw== dependencies: chai "^4.3.6" child_process "^1.0.2" @@ -507,11 +2164,26 @@ circom_tester@katat/circom_tester#feat/signal-json: tmp-promise "^3.0.3" util "^0.12.4" -circomlib@^2.0.2: +circomlib@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/circomlib/-/circomlib-2.0.5.tgz#183c703e53ed7d011811842dbeeeb9819f4cc1d6" integrity sha512-O7NQ8OS+J4eshBuoy36z/TwQU0YHw8W3zxZcs4hVwpEll3e4hDm3mgkIPqItN8FDeLEKZFK3YeT/+k8TiLF3/A== +circomlibjs@^0.1.2: + version "0.1.7" + resolved "https://registry.yarnpkg.com/circomlibjs/-/circomlibjs-0.1.7.tgz#9f5a7d9a23323744b11ee456b05b0cd81f48b554" + integrity sha512-GRAUoAlKAsiiTa+PA725G9RmEmJJRc8tRFxw/zKktUxlQISGznT4hH4ESvW8FNTsrGg/nNd06sGP/Wlx0LUHVg== + dependencies: + blake-hash "^2.0.0" + blake2b "^2.1.3" + ethers "^5.5.1" + ffjavascript "^0.2.45" + +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -521,6 +2193,25 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -545,22 +2236,47 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -commander@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.0.tgz#71797971162cd3cf65f0b9d24eb28f8d303acdf1" - integrity sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA== +commander@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67" + integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +convert-source-map@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cross-spawn@^7.0.2: +core-js-compat@^3.31.0, core-js-compat@^3.32.2: + version "3.32.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" + integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + dependencies: + browserslist "^4.21.10" + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -569,14 +2285,7 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -debug@4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@^4.1.1, debug@^4.3.2: +debug@4.3.4, debug@^4.1.0, debug@^4.1.1: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -588,6 +2297,11 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== + deep-eql@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" @@ -595,51 +2309,79 @@ deep-eql@^4.1.2: dependencies: type-detect "^4.0.0" -deep-is@^0.1.3: +deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -diff-sequences@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" - integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - ejs@^3.1.6: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" +electron-to-chromium@^1.4.526: + version "1.4.528" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz#7c900fd73d9d2e8bb0dab0e301f25f0f4776ef2c" + integrity sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA== + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: +escape-string-regexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== @@ -654,120 +2396,111 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" - integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== - -eslint@^8.34.0: - version "8.37.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.37.0.tgz#1f660ef2ce49a0bfdec0b0d698e0b8b627287412" - integrity sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.2" - "@eslint/js" "8.37.0" - "@humanwhocodes/config-array" "^0.11.8" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-visitor-keys "^3.4.0" - espree "^9.5.1" - esquery "^1.4.2" +escodegen@^1.8.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-sdsl "^4.1.4" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" -espree@^9.5.1: - version "9.5.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" - integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.0" +esprima@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.2.tgz#76a0fd66fcfe154fd292667dc264019750b1657b" + integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esrecurse@^4.3.0: +estraverse@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -expect@*: - version "29.3.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.3.1.tgz#92877aad3f7deefc2e3f6430dd195b92295554a6" - integrity sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA== +ethers@^5.5.1: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== dependencies: - "@jest/expect-utils" "^29.3.1" - jest-get-type "^29.2.0" - jest-matcher-utils "^29.3.1" - jest-message-util "^29.3.1" - jest-util "^29.3.1" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6: +fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== @@ -777,12 +2510,12 @@ fastfile@0.0.20: resolved "https://registry.yarnpkg.com/fastfile/-/fastfile-0.0.20.tgz#794a143d58cfda2e24c298e5ef619c748c8a1879" integrity sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA== -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: - reusify "^1.0.4" + bser "2.1.1" ffjavascript@0.2.56: version "0.2.56" @@ -793,23 +2526,16 @@ ffjavascript@0.2.56: wasmcurves "0.2.0" web-worker "^1.2.0" -ffjavascript@^0.2.48, ffjavascript@^0.2.56: - version "0.2.57" - resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.57.tgz#ba1be96015b2688192e49f2f4de2cc5150fd8594" - integrity sha512-V+vxZ/zPNcthrWmqfe/1YGgqdkTamJeXiED0tsk7B84g40DKlrTdx47IqZuiygqAVG6zMw4qYuvXftIJWsmfKQ== +ffjavascript@0.2.60, ffjavascript@^0.2.45, ffjavascript@^0.2.48, ffjavascript@^0.2.56, ffjavascript@^0.2.59: + version "0.2.60" + resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.60.tgz#4d8ae613d6bf4e98b3cc29ba10c626f5853854cf" + integrity sha512-T/9bnEL5xAZRDbQoEMf+pM9nrhK+C3JyZNmqiWub26EQorW7Jt+jR54gpqDhceA4Nj0YctPQwYnl8xa52/A26A== dependencies: wasmbuilder "0.0.16" - wasmcurves "0.2.0" + wasmcurves "0.2.2" web-worker "^1.2.0" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -filelist@^1.0.1: +filelist@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== @@ -823,7 +2549,7 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@5.0.0, find-up@^5.0.0: +find-up@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== @@ -831,24 +2557,19 @@ find-up@5.0.0, find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" + locate-path "^5.0.0" + path-exists "^4.0.0" flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - fnv-plus@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/fnv-plus/-/fnv-plus-1.3.1.tgz#c34cb4572565434acb08ba257e4044ce2b006d67" @@ -866,16 +2587,21 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -887,20 +2613,24 @@ get-func-name@^2.0.0: integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== get-intrinsic@^1.0.2, get-intrinsic@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" - integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: function-bind "^1.1.1" has "^1.0.3" + has-proto "^1.0.1" has-symbols "^1.0.3" -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== glob-parent@~5.1.2: version "5.1.2" @@ -921,7 +2651,7 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3: +glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -933,12 +2663,10 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== - dependencies: - type-fest "^0.20.2" +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== gopd@^1.0.1: version "1.0.1" @@ -948,19 +2676,9 @@ gopd@^1.0.1: get-intrinsic "^1.1.3" graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== has-flag@^3.0.0: version "3.0.0" @@ -972,6 +2690,11 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -991,28 +2714,50 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hoopy@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== -ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" imurmurhash@^0.1.4: version "0.1.4" @@ -1027,7 +2772,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1040,6 +2785,11 @@ is-arguments@^1.0.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -1052,6 +2802,13 @@ is-callable@^1.1.3: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -1062,6 +2819,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" @@ -1069,7 +2831,7 @@ is-generator-function@^1.0.7: dependencies: has-tostringtag "^1.0.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -1081,105 +2843,455 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-typed-array@^1.1.10, is-typed-array@^1.1.3: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-typed-array@^1.1.3: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" + which-typed-array "^1.1.11" is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8" + integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jake@^10.8.5: + version "10.8.7" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" -jest-diff@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527" - integrity sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw== +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: + "@jest/types" "^29.6.3" chalk "^4.0.0" - diff-sequences "^29.3.1" - jest-get-type "^29.2.0" - pretty-format "^29.3.1" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" -jest-get-type@^29.2.0: - version "29.2.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" - integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-matcher-utils@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572" - integrity sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ== +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== dependencies: chalk "^4.0.0" - jest-diff "^29.3.1" - jest-get-type "^29.2.0" - pretty-format "^29.3.1" - -jest-message-util@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.3.1.tgz#37bc5c468dfe5120712053dd03faf0f053bd6adb" - integrity sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA== + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.3.1" + "@jest/types" "^29.6.3" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^29.3.1" + pretty-format "^29.7.0" slash "^3.0.0" stack-utils "^2.0.3" -jest-util@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1" - integrity sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ== +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: - "@jest/types" "^29.3.1" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -js-sdsl@^4.1.4: - version "4.4.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" - integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.5.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" -js-sha3@^0.8.0: +js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== @@ -1189,30 +3301,79 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@^4.1.0: +js-yaml@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonpath@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901" + integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== + dependencies: + esprima "1.2.2" + static-eval "2.0.2" + underscore "1.12.1" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" + p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" @@ -1221,10 +3382,15 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== log-symbols@4.1.0: version "4.1.0" @@ -1246,11 +3412,44 @@ loupe@^2.3.1: dependencies: get-func-name "^2.0.0" -make-error@^1.1.1: +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@1.x: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -1259,14 +3458,29 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: - brace-expansion "^1.1.7" + brace-expansion "^2.0.1" -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -1274,38 +3488,35 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: brace-expansion "^1.1.7" minimatch@^5.0.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.2.tgz#0939d7d6f0898acbd1508abe534d1929368a8fff" - integrity sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg== + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -mocha@^9.1.3: - version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" - integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== +mocha@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== dependencies: - "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" chokidar "3.5.3" - debug "4.3.3" + debug "4.3.4" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" glob "7.2.0" - growl "1.10.5" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" - minimatch "4.2.1" + minimatch "5.0.1" ms "2.1.3" - nanoid "3.3.1" + nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" + workerpool "6.2.1" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -1325,21 +3536,48 @@ nanoassert@^2.0.0: resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-2.0.0.tgz#a05f86de6c7a51618038a620f88878ed1e490c09" integrity sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA== -nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +node-addon-api@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-gyp-build@^4.2.2: + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" + integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -1347,25 +3585,46 @@ once@^1.3.0: dependencies: wrappy "1" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" + p-try "^2.0.0" -p-limit@^3.0.2: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -1373,12 +3632,20 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: - callsites "^3.0.0" + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" path-exists@^4.0.0: version "4.0.0" @@ -1390,44 +3657,83 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + pathval@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prettier-plugin-solidity@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz#9a35124f578404caf617634a8cab80862d726cba" + integrity sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg== + dependencies: + "@solidity-parser/parser" "^0.16.0" + semver "^7.3.8" + solidity-comments-extractor "^0.0.7" -pretty-format@^29.3.1: - version "29.3.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da" - integrity sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg== +prettier@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" + integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: - "@jest/schemas" "^29.0.0" + "@jest/schemas" "^29.6.3" ansi-styles "^5.0.0" react-is "^18.0.0" -punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +pure-rand@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.3.tgz#3c9e6b53c09e52ac3cedffc85ab7c1c7094b38cb" + integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w== r1csfile@0.0.41, r1csfile@^0.0.41: version "0.0.41" @@ -1439,6 +3745,16 @@ r1csfile@0.0.41, r1csfile@^0.0.41: fastfile "0.0.20" ffjavascript "0.2.56" +r1csfile@0.0.47: + version "0.0.47" + resolved "https://registry.yarnpkg.com/r1csfile/-/r1csfile-0.0.47.tgz#ed95a0dc8e910e9c070253906f7a31bd8c5333c8" + integrity sha512-oI4mAwuh1WwuFg95eJDNDDL8hCaZkwnPuNZrQdLBWvDoRU7EG+L/MOHL7SwPW2Y+ZuYcTLpj3rBkgllBQZN/JA== + dependencies: + "@iden3/bigarray" "0.0.2" + "@iden3/binfileutils" "0.0.11" + fastfile "0.0.20" + ffjavascript "0.2.60" + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -1451,6 +3767,15 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -1458,45 +3783,109 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -regexp-tree@^0.1.24: - version "0.1.24" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d" - integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw== +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.14.2, resolve@^1.20.0: + version "1.22.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.1.0: +safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -1516,6 +3905,16 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -1537,6 +3936,45 @@ snarkjs@0.5.0: logplease "^1.2.15" r1csfile "0.0.41" +snarkjs@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.7.1.tgz#c96ecaf4db8c2eb44d60b17ee02f37ed39c821bb" + integrity sha512-Qs1oxssa135WZkzfARgEp5SuKHKvKNtcspeJbE5je6MurUpBylD1rzcAzQSTGWA/EH/BV/TmUyTaTD64xScvbA== + dependencies: + "@iden3/binfileutils" "0.0.11" + bfj "^7.0.2" + blake2b-wasm "^2.4.0" + circom_runtime "0.1.24" + ejs "^3.1.6" + fastfile "0.0.20" + ffjavascript "0.2.60" + js-sha3 "^0.8.0" + logplease "^1.2.15" + r1csfile "0.0.47" + +solidity-comments-extractor@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz#99d8f1361438f84019795d928b931f4e5c39ca19" + integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -1544,7 +3982,22 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -string-width@^4.1.0, string-width@^4.2.0: +static-eval@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42" + integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg== + dependencies: + escodegen "^1.8.1" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -1553,10 +4006,12 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.fromcodepoint@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz#8d978333c0bc92538f50f383e4888f3e5619d653" - integrity sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg== +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" @@ -1565,12 +4020,22 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@3.1.1, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@8.1.1: +supports-color@8.1.1, supports-color@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -1591,10 +4056,19 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" tmp-promise@^3.0.3: version "3.0.3" @@ -1610,6 +4084,16 @@ tmp@^0.2.0: dependencies: rimraf "^3.0.0" +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -1622,60 +4106,82 @@ tryer@^1.0.1: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== -ts-node@^10.4.0: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== +ts-jest@^29.1.1: + version "29.1.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" + integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "4.x" + make-error "1.x" + semver "^7.5.3" + yargs-parser "^21.0.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: - prelude-ls "^1.2.1" + prelude-ls "~1.1.2" -type-detect@^4.0.0, type-detect@^4.0.5: +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typescript@^4.5.4: - version "4.9.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" - integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== +typescript@^4.5.4, typescript@^4.8.3: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -unescape-js@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unescape-js/-/unescape-js-1.1.4.tgz#4bc6389c499cb055a98364a0b3094e1c3d5da395" - integrity sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g== +underscore@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" + integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - string.fromcodepoint "^0.2.1" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: - punycode "^2.1.0" + escalade "^3.1.1" + picocolors "^1.0.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util@^0.12.4: version "0.12.5" @@ -1688,10 +4194,21 @@ util@^0.12.4: is-typed-array "^1.1.3" which-typed-array "^1.1.2" -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== +v8-to-istanbul@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" wasmbuilder@0.0.16: version "0.0.16" @@ -1705,39 +4222,45 @@ wasmcurves@0.2.0: dependencies: wasmbuilder "0.0.16" +wasmcurves@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/wasmcurves/-/wasmcurves-0.2.2.tgz#ca444f6a6f6e2a5cbe6629d98ff478a62b4ccb2b" + integrity sha512-JRY908NkmKjFl4ytnTu5ED6AwPD+8VJ9oc94kdq7h5bIwbj0L4TDJ69mG+2aLs2SoCmGfqIesMWTEJjtYsoQXQ== + dependencies: + wasmbuilder "0.0.16" + web-worker@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== -which-typed-array@^1.1.2: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== +which-typed-array@^1.1.11, which-typed-array@^1.1.2: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" -which@2.0.2, which@^2.0.1: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== wrap-ansi@^7.0.0: version "7.0.0" @@ -1753,11 +4276,34 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" @@ -1768,6 +4314,11 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^21.0.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + yargs-unparser@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" @@ -1791,10 +4342,18 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" yocto-queue@^0.1.0: version "0.1.0"