diff --git a/.circleci/config.yml b/.circleci/config.yml index d94741b74624..fd14a337dc90 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -804,17 +804,18 @@ jobs: command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local e2e_pending_commitments_contract.test.ts working_directory: yarn-project/end-to-end - uniswap-trade-on-l1-from-l2: - machine: - image: ubuntu-2004:202010-01 - resource_class: large - steps: - - *checkout - - *setup_env - - run: - name: "Test" - command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local uniswap_trade_on_l1_from_l2.test.ts - working_directory: yarn-project/end-to-end + # TODO(AD): Reenable after #1367 + # uniswap-trade-on-l1-from-l2: + # machine: + # image: ubuntu-2004:202010-01 + # resource_class: large + # steps: + # - *checkout + # - *setup_env + # - run: + # name: "Test" + # command: ./scripts/cond_run_script end-to-end $JOB_NAME ./scripts/run_tests_local uniswap_trade_on_l1_from_l2.test.ts + # working_directory: yarn-project/end-to-end integration-archiver-l1-to-l2: machine: @@ -863,7 +864,19 @@ jobs: name: "Test" command: cond_spot_run_tests end-to-end e2e_p2p_network.test.ts - e2e-uniswap-sandbox: + # TODO(AD): Reenable after #1367 + # e2e-uniswap-sandbox: + # docker: + # - image: aztecprotocol/alpine-build-image + # resource_class: small + # steps: + # - *checkout + # - *setup_env + # - run: + # name: "Test" + # command: cond_spot_run_tests end-to-end uniswap_trade_on_l1_from_l2.test.ts docker-compose-e2e-sandbox.yml + + e2e-browser-sandbox: docker: - image: aztecprotocol/alpine-build-image resource_class: small @@ -872,7 +885,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_tests end-to-end uniswap_trade_on_l1_from_l2.test.ts docker-compose-e2e-sandbox.yml + command: cond_spot_run_tests end-to-end e2e_aztec_js_browser.test.ts docker-compose-e2e-sandbox.yml e2e-join: docker: @@ -1146,11 +1159,14 @@ workflows: - e2e-account-contracts: *e2e_test - e2e-escrow-contract: *e2e_test - e2e-pending-commitments-contract: *e2e_test - - uniswap-trade-on-l1-from-l2: *e2e_test + # TODO(AD): Reenable after #1367 + # - uniswap-trade-on-l1-from-l2: *e2e_test - integration-l1-publisher: *e2e_test - integration-archiver-l1-to-l2: *e2e_test - e2e-p2p: *e2e_test - - e2e-uniswap-sandbox: *e2e_test + # TODO(AD): Reenable after #1367 + # - e2e-uniswap-sandbox: *e2e_test + - e2e-browser-sandbox: *e2e_test - e2e-end: requires: @@ -1169,11 +1185,14 @@ workflows: - e2e-account-contracts - e2e-escrow-contract - e2e-pending-commitments-contract - - uniswap-trade-on-l1-from-l2 + # TODO(AD): Reenable after #1367 + # - uniswap-trade-on-l1-from-l2 - integration-l1-publisher - integration-archiver-l1-to-l2 - e2e-p2p - - e2e-uniswap-sandbox + # TODO(AD): Reenable after #1367 + # - e2e-uniswap-sandbox + - e2e-browser-sandbox <<: *defaults - deploy-dockerhub: diff --git a/circuits/cpp/src/aztec3/constants.hpp b/circuits/cpp/src/aztec3/constants.hpp index c9fe9559d376..b53465123220 100644 --- a/circuits/cpp/src/aztec3/constants.hpp +++ b/circuits/cpp/src/aztec3/constants.hpp @@ -45,8 +45,8 @@ constexpr size_t MAX_NEW_NULLIFIERS_PER_CALL = 4; constexpr size_t MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL = 4; constexpr size_t MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL = 4; constexpr size_t MAX_NEW_L2_TO_L1_MSGS_PER_CALL = 2; -constexpr size_t MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL = 4; -constexpr size_t MAX_PUBLIC_DATA_READS_PER_CALL = 4; +constexpr size_t MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL = 8; +constexpr size_t MAX_PUBLIC_DATA_READS_PER_CALL = 8; constexpr size_t MAX_READ_REQUESTS_PER_CALL = 4; @@ -56,8 +56,8 @@ constexpr size_t MAX_NEW_NULLIFIERS_PER_TX = MAX_PRIVATE_CALL_STACK_LENGTH_PER_C constexpr size_t MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX = 8; constexpr size_t MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX = 8; constexpr size_t MAX_NEW_L2_TO_L1_MSGS_PER_TX = 2; -constexpr size_t MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX = 4; -constexpr size_t MAX_PUBLIC_DATA_READS_PER_TX = 4; +constexpr size_t MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX = 8; +constexpr size_t MAX_PUBLIC_DATA_READS_PER_TX = 8; constexpr size_t MAX_NEW_CONTRACTS_PER_TX = 1; constexpr size_t MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX = 4; constexpr size_t MAX_READ_REQUESTS_PER_TX = MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL * MAX_READ_REQUESTS_PER_CALL; @@ -243,7 +243,7 @@ constexpr size_t PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 2 + RETURN_VALUES_LENGTH + // + 1 for args_hash + 1 call_context.hash MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL + MAX_PUBLIC_DATA_READS_PER_CALL + MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL + MAX_NEW_COMMITMENTS_PER_CALL + MAX_NEW_NULLIFIERS_PER_CALL + MAX_NEW_L2_TO_L1_MSGS_PER_CALL + - NUM_FIELDS_PER_SHA256 + // unencrypted_logs_hash + NUM_FIELDS_PER_SHA256 + // unencrypted_logs_hash (being represented by NUM_FIELDS_PER_SHA256) 3; // unencrypted_log_preimages_length + historic_public_data_tree_root + prover_address diff --git a/docs/.gitrepo b/docs/.gitrepo index 26915a8defac..bb8c5aec0ea2 100644 --- a/docs/.gitrepo +++ b/docs/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/AztecProtocol/docs branch = main - commit = 94f3b72e41f70f795194224e98b6939483431bc8 - parent = d70c45b9a27189258daf767f2860bfc3894783a1 + commit = f109839e4698c38c8e37d630bdbebe1cb13c6973 + parent = cb774405e89c71a622e32b51032aa761cd767959 method = merge cmdver = 0.4.6 diff --git a/docs/docs/aztec/developer/wallet-providers/keys.md b/docs/docs/aztec/developer/wallet-providers/keys.md index 98311da228be..606b2cb03a19 100644 --- a/docs/docs/aztec/developer/wallet-providers/keys.md +++ b/docs/docs/aztec/developer/wallet-providers/keys.md @@ -107,7 +107,7 @@ An application in Noir can request a nullifier from the current user for computi ```noir fn compute_nullifier(self) -> Field { - let siloed_note_hash = compute_siloed_note_hash(ValueNoteInterface, self); + let siloed_note_hash = compute_siloed_note_hash(ValueNoteMethods, self); let secret = get_secret_key(self.owner); dep::std::hash::pedersen([siloed_note_hash, secret])[0] } diff --git a/l1-contracts/src/core/libraries/Constants.sol b/l1-contracts/src/core/libraries/Constants.sol index d7e0d2714133..5b8b89cc8e5a 100644 --- a/l1-contracts/src/core/libraries/Constants.sol +++ b/l1-contracts/src/core/libraries/Constants.sol @@ -17,7 +17,7 @@ library Constants { // TODO(962): Make this constant consistent across the codebase. uint256 internal constant COMMITMENTS_PER_TX = 16; uint256 internal constant NULLIFIERS_PER_TX = 16; - uint256 internal constant PUBLIC_DATA_WRITES_PER_TX = 4; + uint256 internal constant PUBLIC_DATA_WRITES_PER_TX = 8; uint256 internal constant CONTRACTS_PER_TX = 1; uint256 internal constant L2_TO_L1_MSGS_PER_TX = 2; uint256 internal constant L1_TO_L2_MSGS_PER_BASE_ROLLUP = 16; diff --git a/l1-contracts/test/Decoder.t.sol b/l1-contracts/test/Decoder.t.sol index 58c06e1eb1cd..65031430de6d 100644 --- a/l1-contracts/test/Decoder.t.sol +++ b/l1-contracts/test/Decoder.t.sol @@ -25,10 +25,10 @@ contract DecoderTest is Test { Rollup internal rollup; bytes internal block_empty_1 = - hex"0000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000020efbe2c7b675f26ab71689279908bbab33a6963e7e0dcb80e4c46583d094113000000002adc67712c2f7afc4e827551236adb46a693d572fbb29f3993dbedbef8d2d87d0000002027378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda54100000000135bc361c9ed85a1b86f54458c343d580d84efb1e147cd568fa6abd4231a402d000000010ef76ed2c9210c834484aa185fdcfe317880955e8594b319f701f39f65846219000000012b72136df9bc7dc9cbfe6b84ec743e8e1d73dd93aecfa79f18afb86be977d3eb27378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda541000000000ef76ed2c9210c834484aa185fdcfe317880955e8594b319f701f39f658462190000000127378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda5410000000020efbe2c7b675f26ab71689279908bbab33a6963e7e0dcb80e4c46583d094113000000402adc67712c2f7afc4e827551236adb46a693d572fbb29f3993dbedbef8d2d87d0000006027378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda541000000040050f7a38e7222792175befc9d6af3433c94309b86f3d2cccb3d9dafb178071a000000022bc197200c41b8fdfb11e86d0670056ce5d36d22815e3acd48f5f8ae9283f119000000022b72136df9bc7dc9cbfe6b84ec743e8e1d73dd93aecfa79f18afb86be977d3eb27378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda541000000102bc197200c41b8fdfb11e86d0670056ce5d36d22815e3acd48f5f8ae9283f11900000002000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000001000000000000000000000000000000000"; + hex"0000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000020efbe2c7b675f26ab71689279908bbab33a6963e7e0dcb80e4c46583d094113000000002adc67712c2f7afc4e827551236adb46a693d572fbb29f3993dbedbef8d2d87d0000002027378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda54100000000135bc361c9ed85a1b86f54458c343d580d84efb1e147cd568fa6abd4231a402d000000010ef76ed2c9210c834484aa185fdcfe317880955e8594b319f701f39f65846219000000012b72136df9bc7dc9cbfe6b84ec743e8e1d73dd93aecfa79f18afb86be977d3eb27378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda541000000000ef76ed2c9210c834484aa185fdcfe317880955e8594b319f701f39f658462190000000100000000000000000000000000000000000000000000000000000000000000000000000020efbe2c7b675f26ab71689279908bbab33a6963e7e0dcb80e4c46583d094113000000402adc67712c2f7afc4e827551236adb46a693d572fbb29f3993dbedbef8d2d87d0000006027378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda541000000040050f7a38e7222792175befc9d6af3433c94309b86f3d2cccb3d9dafb178071a000000022bc197200c41b8fdfb11e86d0670056ce5d36d22815e3acd48f5f8ae9283f119000000022b72136df9bc7dc9cbfe6b84ec743e8e1d73dd93aecfa79f18afb86be977d3eb27378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda541000000102bc197200c41b8fdfb11e86d0670056ce5d36d22815e3acd48f5f8ae9283f1190000000200000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000001000000000000000000000000000000000"; bytes internal block_mixed_1 = - hex"0000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000020efbe2c7b675f26ab71689279908bbab33a6963e7e0dcb80e4c46583d094113000000002adc67712c2f7afc4e827551236adb46a693d572fbb29f3993dbedbef8d2d87d0000002027378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda54100000000135bc361c9ed85a1b86f54458c343d580d84efb1e147cd568fa6abd4231a402d000000010ef76ed2c9210c834484aa185fdcfe317880955e8594b319f701f39f65846219000000012b72136df9bc7dc9cbfe6b84ec743e8e1d73dd93aecfa79f18afb86be977d3eb27378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda541000000000ef76ed2c9210c834484aa185fdcfe317880955e8594b319f701f39f658462190000000127378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda54100000000235f4e41a2440aa28f9ac14e7eed447ddd2e539179cee4c0941e6e408d2443e50000004026f32989eb2870f2ed00774f54a82e8266fc2a2b3392b64e8199aacac71aabea000000600b6abbab461cfb072b267bfc1ecf8dc3c943736341baf11c5c829e345c49b509000000041c1b17b2cb59cc2314fb65fe31dcfdb1b014630fab522a263d9935601ff78a5c000000022d02c42204d7182da24e9ca1e3244fbff1e00efb8c85ee3a1ac9488fe2e3aa9d000000022d9b8d2353587ca56bdf967b4bb8847af3671bd6901e9e28f82c240c6e33129a2fbbd267a1c9b23b3ac1609b2c2a7961a0338c56d62607d5f8d6b6a29e7fe4cb000000101d223d0a7bbe8cd9eace6507ee0fa9dbf84565685a1c6ceb978cdd46c47025ea00000002000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000012100000000000000000000000000000000000000000000000000000000000001220000000000000000000000000000000000000000000000000000000000000123000000000000000000000000000000000000000000000000000000000000012400000000000000000000000000000000000000000000000000000000000001250000000000000000000000000000000000000000000000000000000000000126000000000000000000000000000000000000000000000000000000000000012700000000000000000000000000000000000000000000000000000000000001280000000000000000000000000000000000000000000000000000000000000129000000000000000000000000000000000000000000000000000000000000012a000000000000000000000000000000000000000000000000000000000000012b000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000012d000000000000000000000000000000000000000000000000000000000000012e000000000000000000000000000000000000000000000000000000000000012f0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014100000000000000000000000000000000000000000000000000000000000001420000000000000000000000000000000000000000000000000000000000000143000000000000000000000000000000000000000000000000000000000000014400000000000000000000000000000000000000000000000000000000000001450000000000000000000000000000000000000000000000000000000000000146000000000000000000000000000000000000000000000000000000000000014700000000000000000000000000000000000000000000000000000000000001480000000000000000000000000000000000000000000000000000000000000149000000000000000000000000000000000000000000000000000000000000014a000000000000000000000000000000000000000000000000000000000000014b000000000000000000000000000000000000000000000000000000000000014c000000000000000000000000000000000000000000000000000000000000014d000000000000000000000000000000000000000000000000000000000000014e000000000000000000000000000000000000000000000000000000000000014f0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000001620000000000000000000000000000000000000000000000000000000000000163000000000000000000000000000000000000000000000000000000000000016400000000000000000000000000000000000000000000000000000000000001650000000000000000000000000000000000000000000000000000000000000166000000000000000000000000000000000000000000000000000000000000016700000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000169000000000000000000000000000000000000000000000000000000000000016a000000000000000000000000000000000000000000000000000000000000016b000000000000000000000000000000000000000000000000000000000000016c000000000000000000000000000000000000000000000000000000000000016d000000000000000000000000000000000000000000000000000000000000016e000000000000000000000000000000000000000000000000000000000000016f0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000018100000000000000000000000000000000000000000000000000000000000001820000000000000000000000000000000000000000000000000000000000000183000000000000000000000000000000000000000000000000000000000000018400000000000000000000000000000000000000000000000000000000000001850000000000000000000000000000000000000000000000000000000000000186000000000000000000000000000000000000000000000000000000000000018700000000000000000000000000000000000000000000000000000000000001880000000000000000000000000000000000000000000000000000000000000189000000000000000000000000000000000000000000000000000000000000018a000000000000000000000000000000000000000000000000000000000000018b000000000000000000000000000000000000000000000000000000000000018c000000000000000000000000000000000000000000000000000000000000018d000000000000000000000000000000000000000000000000000000000000018e000000000000000000000000000000000000000000000000000000000000018f000000400000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000022100000000000000000000000000000000000000000000000000000000000002220000000000000000000000000000000000000000000000000000000000000223000000000000000000000000000000000000000000000000000000000000022400000000000000000000000000000000000000000000000000000000000002250000000000000000000000000000000000000000000000000000000000000226000000000000000000000000000000000000000000000000000000000000022700000000000000000000000000000000000000000000000000000000000002280000000000000000000000000000000000000000000000000000000000000229000000000000000000000000000000000000000000000000000000000000022a000000000000000000000000000000000000000000000000000000000000022b000000000000000000000000000000000000000000000000000000000000022c000000000000000000000000000000000000000000000000000000000000022d000000000000000000000000000000000000000000000000000000000000022e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e0000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000052a0000000000000000000000000000000000000000000000000000000000000521000000000000000000000000000000000000000000000000000000000000052b0000000000000000000000000000000000000000000000000000000000000522000000000000000000000000000000000000000000000000000000000000052c0000000000000000000000000000000000000000000000000000000000000523000000000000000000000000000000000000000000000000000000000000052d0000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000541000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000542000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000543000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000560000000000000000000000000000000000000000000000000000000000000056a0000000000000000000000000000000000000000000000000000000000000561000000000000000000000000000000000000000000000000000000000000056b0000000000000000000000000000000000000000000000000000000000000562000000000000000000000000000000000000000000000000000000000000056c0000000000000000000000000000000000000000000000000000000000000563000000000000000000000000000000000000000000000000000000000000056d0000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000581000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000582000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000583000000000000000000000000000000000000000000000000000000000000058d00000008000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003210000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000361000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000003810000000426fcb9639d15aabe6d792e23ab12fb9633046d4be6911a60d64471d7560d3f6809143b7d4943a3485115d37e7596938a16c91b6055f3837640d8c36b8303bb3c06fb5fb553496e5e0b48834087e036acf99d6d935dc2ebf43c82788cb5ed1c6a2f4bd77ac2bb5474d48c2856135d18168cd6f69f77143c60b3cc370319419dac0000000000000000000000000000000000000000000000000000000000001020212121212121212121212121212121212121212100000000000000000000000000000000000000000000000000000000000010404141414141414141414141414141414141414141000000000000000000000000000000000000000000000000000000000000106061616161616161616161616161616161616161610000000000000000000000000000000000000000000000000000000000001080818181818181818181818181818181818181818100000010151de48ca3efbae39f180fe00b8f472ec9f25be10b4f283a87c6d7839353703914c2ea9dedf77698d4afe23bc663263eed0bf9aa3a8b17d9b74812f185610f9e1570cc6641699e3ae87fa258d80a6d853f7b8ccb211dc244d017e2ca6530f8a12806c860af67e9cd50000378411b8c4c4db172ceb2daa862b259b689ccbdc1e005f140c7c95624c8006774279a01ec1ea88617999e4fe6997b6576c4e1c7395a22048b96b586596bd740d0402e15f5577f7ceb5496b65aafc6d89d7c3b34924b0c3f2d50d16279970d682cada30bfa6b29bc0bac0ee2389f6a0444853eccaa932b2a60561da46a58569d71044a84c639e7f88429826e5622581536eb906d9cdd25a2c0a76f7da6924e10751c755227d2535f4ad258b984e78f9f452a853c52300e212d8e2069e4254d81af07744bcbb81121a38f0e2dbed69a523d3fbf85b75c287ca6f33aadbac2e4f058e05924c140d7895a6ed167caf804b710d2ae3ba62b1b51297b3ea37637af6bd56cf33425d95cc5c96e9c2ee3077322fbec86a0c7f32c15d2a888c6cc122e99478c92470a1311635142d82ad7ae67410beeef4ae31f0902ba2fb964922a4610bb18901f7b923885c1d034da5769a48203ae6f0206a92855e2c01ddb3d6553386b5580d681b8230fa4062948668f834f23e0636eaff70aaa64519aafdf4b040bd2f9836e76b9dc13cfec8065dcdf2834d786e06260d10000381000000e00000001bc000000906eb2b444212e7fc5426b585fe92da7a94010f06dc82f8ae57dd4dc91cac317e141462fbe15290e7da75db817402d54bb34c3e36b82b681103e75a06b53742b0b225f76d3e207d15147eb3fa760d364422d4bb6a9ec10df5ac9b8fbedada4b6f97045637edc6c78f389dfd44a466e10e2cbfd84b112515666452a25e6877921275cc60bda20061ed54e6775087bd44cae00000090b3f361eebad14c9843114c3e6e2bd810b17a1381953eb6cbb0920e5412435c42cb36efa2ddf219d289c394700893caed500cb13b1d5724d57cb97922ec555d7fc40c94889a666bced531fbda4f9aff016a6b4267972abbd9f60287f6c1676f6b2b20577f3781e34a8cc4dd36cc6e2725d1b8f6f9aa612fc43358c1fc167a56d9bcb3a463fb9abf152723c36020393f5d00000090e084263ed67cf75ffbcf9f9922716125423be3ae02c0c3729c564a7d4209afe4534a20db0dc79f85a69ec8676eaa7b094857b5af72dbd40346c7bf2f79cb39bbbf37e977fb595639e0585abc2bc6ad67b097c23a286a2c4c62380ee2d496222ddced1e4d329d5fb47a9545927466e8c663e2a559d4fd78af3845efa3c09ebb3d6d01582609371337d6d83ecb704ce2e2000001bc00000090979ac1a9ccb8fa6b9f8d1747232ea8e8864f3cf83ac87f780d923d33e97a85f6265276e47faac640a966272722bbd297083a0c65244eb2af13e1606259957c60a88e03366a96fc328b0702cd760a399e1c3a1aaea86e4dea5ee70213ff3cec470cd54c52097126ba8556b129d085d5e393c78dfb03b4c3626a77cd5b0d2f42acdd3b5e975a06cc2582ce355071364a0f00000090359b86b1136c91f98136d693ca665141f5f7adf0ddc0b3d24ebe39ed6e4e41b9d239e64256b0609710419eff5f183af46cdb7407aec40ff9d3d291befc3e23e65fd6254b68848954eee73e0ff6964789f04ec290cc99421d4e0e56821a8a312a67970a7ebe83173b49ed73d8840b89a9d9cb0dc98fe9f4feaae4fa92b060a935d8c1406da1a627653baba6a8267cc62c00000090c194828fe951f3090d5c36d57dbe3998258d521b01ab426864e64d06e29e126a3ad8bf44eb471f87b57ab7a4ae675696029cd9ebb22d0531b43d8768a2c6426a1dce65ef024e065ea151a865b0c85a176d8c1e6f882fbe4d67d91820b6d412466f0dad365b4a824700c697093f14e8dd6c6262d7d377d014f64c941ebc6cbf9f6edc9d695fde67204b98c24c4975a621000001bc000000904bdaadd47d29131302d4a29451be409a04d7dfef42764e84acea034f5997dcbe37cb01583b3e82cb83e5c6f66818dc340b00d9e3a89c9b43045a69ed33478bf28bb11cce3ef0f7af62f96b40e80bbba69f3672751c10958bc365f2285c16012675d00111f440bdca78403ccc5411412c66e4e4da0e786295bc665b891221254152b8af23424761cdb74b45b4a9da854b000000905ae0304af7a3c27c9ea281ccc1f646de7110b4c4ed43e3739324c42dcc84d93fc6c6b4325bb3c081cd7159315060af0c6b2d1e60956ca9210ef483f7ec880282606f8a6ec48556f3badd07a2a0859bade234daba4801ca7c2b55766a4e62b3492c16e2b4077dcbeb2a3cd33fab95774791d743dba7dd5572d76d58cc65a95161d1c46fe75c05ba2cd1e8a994d9b2caba000000904314d956bc3d4990810346da528a4f7af2994e5a41e969346e41617b8a6cddb91268f8f471847037fc84388c60eb4cac3d15e774a3e243f151cdce2ce60bf348b1fabddb3adeff2f669172cd67eebd8ae153423391241572e335b54922c21f9db35c717babaec2c746ad769603696eaf7f4a7037893de3c4a2d7afbe6f8374ae39f1eb65835c02e41b176cde83fbc469000001bc000000900d2c37ba80eb50fa643e8bb1b2be6abfcb87e67b9a3199aa54911d35fea3f6e918b7d19c876d978c6af8d9416d334a02a380d5067d016d1c38e72efdd1dd82f89fc0ccf03ed4b02ecf0430f19c8f7d036a4ca56654acb8a6cca6aed4ef70e69226a73ff44595e59920650a1b1c4507efeb2540949a053bd59bd3225b7683d04eb845e22b4c2854f4ce3ad69404b8517a0000009046adc2c903a76594df533c486b5f0213e1bfb5ce70b22034e328d2b40b0c3126919fde6536d823bdd4b6429e3418199c5cdaab29240d4bf6466118f526c193d3cd8d7e9ec4e829271c230d3b558c8503b1e22d71a9e72473e18feb31ca5de0d9d57e77fb27c8f28c11b5e07dd8c2254540e3ea20650ef88d221732a4a9164bfdcebfc77a9f2badbba68231f5ef4ea3040000009062878ac127eb51ad6bb82e75f3d0d003c664b2010bcaf68e8b2cc6001a8911b57ac81fa23591d33248c0babdc70b53f53955ba124a852dc866ca6f32db37a4fcb0c39309e80f73c59ab0d76d41671aaed89b54ed6a85d306cef2c65afc2042893d6f858f8c5555a4e64180c3629acaeb813598f7b08328cefb69b413d5583ac0c4c5571e856bf556ba0c01d4af59f5e7000001bc00000090ff2435a0b914f0faebbd91d4473d7c139e093fb7fb5a7fbfd3976a36731bcf8bc1ceee34a855f3646e37f07c05bbfdc304c8b4e4105fe1ba8f620cac6ad84344ae67c9a98270792c376248abc54a3887fed1aa32da71444ef85cb0c5bf6754d067e543b18cfddb2a2bf05782018afc649a8d40cccc2cef80819321359ea87ed2840e321bafe6f6df4ce11895b969230600000090f01ef0a085fcda6760980143ece14b530125bfcd9c38b6ca47961cec36698d684a520168b9092ecb88d0384f90cb0262add2ee8a6c9752a1dab7f73738d95b87c2f4acbc816672097635bfe14f61937cb5baa0574172a2d84271e6c4dab145c3fda63e7099ea0e3949af3642e6d00d41c19d3d48d86455e6f6f168d9009d8780e81d3f9a125f360079aa0ea5774e44cd00000090303d2297696cd74d806fa47bcb234b1224a624737e75db864007d03a4d006c857384de3b141e2f0846f2c4cb2ff4db2cce6d75e727e02ac0d8bcf7185a00d7f177bd856967359edf67dbd6c41097dd03bd51d1b5523c54c2794e4d1323f4ecec113f36c7384b14e3cf95bfa98ff5357be32226a1825968b50fe076821f5afcb320c8ee22da0a669326cdee408481c431000001bc000000906cce662bc89f0e2bfc073f7fb02b5e4554c04245864b2f8602b3b5b8ce869b0b80809dd2abd376f7689aebf4eb9a9ddf4c1b45204f38eca18d00c03a6c1a7ee006b51552f21ef587bf99f532f0b9289f8e9378a8e70c04affcd6653339149435f6392edddd8631fe099e48a14a3f714a636a820243919b24c28af14eb67b949b3efc7bb1fc8592549f7cf417596ff50a00000090cf301578a705479b2c666d95ba9c33e6b446216ce84ebcb5c692cd64b70b5ff911a6a110725e656b5da4f5559c3fdbf660544f979fc6afde525bed51dcecef52e0d7c786c10dae116109ac08d0d42cb2417fe2e221cd8e195f82c859713f535ac972c169759aa3017a916cade68fd0fbf12ab770072571828122daea5e755e47eb2bb9c17858753d6fb7b50465554a58000000905b43550bbfc6b90c6c71e4e852d5c5965fad0bad906e057d7fce52b4931f46162925b802d2c59930528850130a421e5dce1b5a5b31f9dd5856dd11fb1265b64e6df9d3576b9b1b5492752a39f0941556df29a41d1ebd53b6e3a4076034b2b22a4572fbb47811d8cec4d811fb2f44ecba5c9e31ce6f24de219646a85d9535317828aa378309793ecf6d3955aeb9fef712000001bc0000009002d5ac96e04b1354d51222d6d525e6ba31104b2d19e076f1389f8a6cff3ecb73dd21c8161e41b470bb995cad44e7a4f4c61d0ae08c6acb6e4ec4a38c1e4957fe7b0f385a655164401c7a4f6e50de8c0588e83d37df12b64a79acba23f7ee0a6a0a7818fea578680d50ee7e289d911617a42f9728cce2bbc7f4a2cdf22f3e64dc697871edd0c33ce1c9b179b793a89c810000009006dae99b741eb1404deb4f716aa6b153d9e05ee4f1ca76b2495d9559b1d408939bac110c8dbac10957a5f709367885a802c9df7ae0b4dbf29b74e53b1d182639d2ed888a4e8c250ed8a6f4acefeab665e2a8481da550dee1ced20fae158e99d993a034fa78054330793a31574fc1d469b6689ae9d8d54162d82a6982f4ebd239f152ed0c53f962cdc7611a298c1d1592000000904ae4fb51433228123b9b6110d0cf7536ff9c13daba8e88ea129e44d451bafa159ae0c73e148f91b0b7f04e43230dc4860532d8b1bb623d0ef7e5636ea43fc8edf5a31135f50a0eb7b57a0a431c3531a80d354f9f199a9e36ce690946e8ac360a652b68c56c7df4ad623f10d99650ab6bdc95b401657481352a4aa5f48610d76c236f78b2b64e9799a338a7b18993a625000001bc000000903c5e8cf037296bef39b34178fc6704de6be6b9c4c977f13b9040a369b85b7579564bfbc3ef32baf2d59d016be685f44851f43ec4fc7a39417e4bc16278193c97776bc2bc06178d5dad9747e5a6eb8283ff8b3ac8b11299f8022ea8afedfb356c814c3cd9fb989d851d9e6722382e1b184d7fcae98f122dc70dcb57ef5536850a266c6c3061c0bc501a081531abd0335c00000090be24b50850949a6fb272128474fb4c9e44c4e9f21235c43134f06e36a8d5432724daf0258ffb72863d934b189725a9fb2ee95dfacc5d5568d0f70b7de4140befb4496fdf54e02d215e98b06b0fc32ad6ec2f9397b324c153d5d3dc88a988308460fcb61192b89021848e19f0efb11f6de7d9a344d696d292c960c567f4e2f3f3a45d30c7fc1b28b762476e613a45bb0500000090a58b1f5a78bae600267b40964f867160741759b2db895253e6629306741e9629a1d6eca76350864f297ca566a3ba2c707e3f7ac5633178a517de20edf98a9ae237474de5012f88ab0ed68ce79ba0cc9af44313bca966d78c44f76798775ab86123a53224c43805e4d668574646374c3b5d944a8583bbe508cf6516e68f5a21f1bf5f591fd1e965422ac31a07960249ce00000e00000001bc00000090f9e56638daabd6fc1023090b32bedcf471261843722a57589df71ae6a6fb9068fc9f7fd1a2746d7a3696b7e4552c6a6fbf8a709ad295ea66afd3201783748f5fec2ab3f2516703404e1149360415d8166646796b117adb6aa3294c81795dddad2ffc84d88828d21a751619c15d804dfa695b23298f03b1ed6f0b1b5aa5076c284fcf2d268a181c195d62c83cd6bbe15800000090ef28121a593a23b9575a043dbf21b4f7004de19f7f9d8b43b8685911aca0728843c35ea6ec86bf567e12414e458ba0c4eb73ad926d1c9834b0fe095cf0375a736a131bcdb899c59c46c9b6323f8468b118818e941ceca4af4b1235f6eb2fa0d1e9b6f9f5225a424fc95448d3249d3e672fc868b5b9cc2550f0b63ce2932a31e1c15fc4c8bcec304cd7dc5c91b21197b200000090e7812aca513f0efbaeb1f26d0dd854f2d959e8462a3df8510ef9151e027e4f6e0022c0fa5a5ae9b2fe2b07cf9737d5d3e3c14302ee2e0b7f94fb7c5a22b4f0768bfe97c8f292df7746f468569b93071072ee308dfc981df098886e07495f5545e69f5566b6b2049cbce7030decdb2b5cb7b41f0b6dff5cccbb90321752986fd36856a38e466e521fd4b2e0219dc11200000001bc00000090af74c11a88f7c49a1f09874652ba9ff762cf886bdd68768c15dad92b6f9e121e4337f607c653ac7527a675c4ae43fa036b11b3f401c49b0bd4b6c30e21d20ea4145e357279338288fa4f91ea704e8a5cdb739226b24b268f842c062554cdd33272f62fb85bc76c9545a9989dbaf9b7962c56812b8a972fc4142e97d02745b716576ad36e242813eb32b0d78a64a1fba2000000903d20a276fd09c048d101c8d78e69ec6ca4055f68e0b3ff07fda4cf6bfdf4b0be29d235a77951e58ab7c184554ae31f3e50331dba55308646321cf17c473cf2e8fd37f08cc65451a3e498d22256855afa8f1be99c5d7023363fa700f3acdd5a354035fd19633197559766a56f49222704f16ae8755e01aa305077f1ff2e1fb381db6ee2d45d60a2daf03489428defd79800000090561ca53af312ded7a6d1a45f6d93aa1b1079f2de66713b4a6a2c303ce78fd26fe6e9bc0f61b3a86a82e95ff52ea020a581dd45e2dba70bf76b474e752c260fba9b676e9dcd0a84f9aaa993882d584a0aba6282985a46eafba41305ac5767b163ed2a590d84629bc3d402b21f4c2ed4621dbdc432ffab8b2b4591d7ef05bdf11c0a34f9354189dbbd779617c765073876000001bc000000904ce42b5eec11797c1f8afc79114c6ea9cedd82426075ddfd8a6dbbca559c60094fe58300bf1a7107370f8c6bed505cd3bcea1aba6dc2be4367c69f1f79f45514118830b1424fb0e8ce93de8bdcbb95280169924700023e4f98aaf6419da9b08cd1a792c726434a03ef7b3059c4757d6e3e7328b4876b13bd0fcf7dbc7134ec3d92ddfa8846d014f09b04cf7037b901f90000009050b61813c794d0bf68daa228a05a5f6a95456520afed8a5a0c07ebb4ca7242a7594462868b811c95d65bb08a3c369162f6bc6fb1fc8b9267586dc03f411953e700ab00cf55764d79f429d21fac45539dff80233566854493d4159e35cd15d02840fec6cf5eea625b82c390df073898f3854f3c9f19d14a3f155118b91d629098ca8388ad5f260fac5dea06a5449b917a000000904bc2c01e9e4e3a2f2f148a881b87e635785c7b440d634a8ae7f894c732aedeb8f87367117b6b5ebb585282e3dcd53c42362c962af14bd4e370133ce2387ecc5102149a62089aeb02c8ffab68df211bbde384d0d9d5325c8e85de847b5d810eee257d18ddd970cf4ec90396d34725f691d2b21e0b6ca8debb8c2f894980ce2db28fe97c8c00d4182346cd335219d8c014000001bc0000009080d739bf38be185bab1564dc36940e345491b0ba1a0d519301f946ff88cd36c8ab9bae17bae9828c5aa4608851b9ea14cc6de10f8338bfdeef0890a31282fc30d1459e0f43c63ee33e150d9069b090b573857a013db7442b4147639d91768ce87a93e560dafe84e975f24b8967a91009cb5555fb2e3ca35e25ba3246cf307d00d050d906a8f1427da6eb0e49236e66320000009052160a2b2b01d3adb6ace0f043523e0baa2fee091941ff5b95ddf66db5170b22b8ba578f09fd8c8cf127920c5da841bd7c5d439fe6ab222ba2f7cbb69b0e34ca217afd282d4a1d85c76d8a108970528731c1e4f32703e0ee92410eedbd52d0fb7d2d7797c038e887d69c2e4016c56a4cf9a98df0fecdffe16be815b94b1a5cb382fd02c2ad91a49a5d1ec5882cc574ed00000090102ef5abafe1a801f359491349a458cc2b0bc567c7752fcae65a0408230fbc88334098c5c8ae4cde42d383eba6832d71abe6f4c450f5c14b6f56dd9e0c02d818d912a893ac1694dcab0cf9ec29fdb378b95fa3179a82757312ddf0d7852bb9f1a380f20e8851a2b7313900fbea3e07a3ae18e457ddf5639a0b1f3e7dbce05d8e42db93082774587393b3daf59ffbba7b000001bc000000905f9d5406ea0521e54cc2918df8c5b6b97473424f4d0107a32d0aa31ea5453a8bed2f4f455892d61bed404080577e7744bbcdd880f418d4a091b9f8482514ad04674abb41585d5558d36c03be687ea2be36a493ede581eac13fc309f0b3c74a2edc152217cc24c45fcb48bca15ef00900fd62429786c725a99d1b9edb9b03bc7cdb177909c0a8c3e6822f2e32269cc96900000090c927d7dc259777e39ac2a14352dd6a3743403cdd15c154c3d44d15014018603356e926eb1efe597d34708527cd952eba7a9fc1b3c527427d4732ab4830cbfdb10f315e4e11ec1eae6440dc7f5aa4f53b95a2921f19be7a5f9acabeee51d7d73af893305bb86855559e8bf31bdf56cfe732a504e5b4a2005a75c607031da39ec02a783d92222beb4aa8c4ca142d33bb5600000090c1a905e2bb0dd6c444a2f3f909be4e7d338651ed45be1ee8d55caef42b1df59cc1b2324db5fc9c999b94e14b1f0447ce0a42443028e2207f2df5f5a87a3e2f44390755f9908681a74703197b78d7c95d1a2771e8782388975e8e0eefa35a14cd6ea38bbb117632e8d4f3b4ddcffe3dfa4d63b86b51240e7d7d10f437b9495aaaf1270731bffe191410f6a90668f09deb000001bc00000090bab929e7b47f9ffc56a6698a8586afb23a4aa1c135394fc784dae3798fb20ba90a120b82855688b82f24f1ed8786b6364df9a68e2f0798704c17145749e9e1e4be89447f9cae3a4266199652501f57a779ee3649be8adc4c4e515e2bb5eb6b7662688fef126aaa71429e5c7a06c831d6a3b4fe014084e76c332b02be583144528799385b1adb5a227006e516c7c651c200000090b97b9efef32a05892ac56dce7dbd53422e989e83691ca29d8b33c2be35873522fb4618a8670a13922212d7e552915def6c707d8c7d5b7bf2c27eb86c1745bc79ab35f331c2f7d47bbf973f5e4061beab3d0363416bc6d512f1d3bcc01fe8b2200d690392bddeda24b48651ed9fc04fe54af774b6a474e2b4726d50b1068ace093509adcac756800a16af821d54ec7d1c000000909226c5084e16e186bd9e541267ee3d429c15bb43dbf0b763b357d5320de671721292478be795f2161612269c46f198116b4fc074fa67c80f18d1b4e357961645275e12a098aa4c2491c88033e83cec70998c0490b185fadfd1a5ed843b1f67de377a733e70b96f9a283739eb6a6cb91e3a0ad6cef9f36fc79a8c137e391ad860235728abb7d32d359e61a7c81d1d5e9a000001bc00000090cc0215e729382d3444ad0f362c10056bf719c015218de84e473dc849791d970f9eef969e1e029bcf044160e4b86c8de4e86a615a8826a4337775ae718f0c5249da0b7ced10a9097a6f5ce151b7256c2a901b827c57f6f0ce0574c366dbc01cf1349fb660ad93693d4cdeab0936e38498378823c74e1e6c905d503609b1705481589d96412b8dfed83d65f3c6292614f9000000909934e72118bae1be1466cf7aa6a7fff16e7b7ad069e0803caeed5c89fcc2962159bc74a1ac5798d03622e679750b324bd7e046c5b893cfe79b91da241b65800d912434f58bee9fb242c4c99ddbe6694f4f0a8777d7aa71e3bfdf5c207add86e13d6e96b3998ca754b3b1ab566f5b72a8229e85ab4acd20574e82849ab399ad2bbd593a35d2fbb284522ac11d5abd3df700000090896c70456c2b313d7af3ed9a5c2c525bda692a4eaee80933d90db9e96a419f4f7c89fbe5d578a12ff8e9825b245431f76b851f33a8e353f3267f8252bb4522165b6c4bf96fa512302ebdf8ff64bf1cc283236e096edcb7d3b726f96bd1c7cb2e91abcc042e3ec5e06e74d748fe76b432fade0eb0a9cb20b06806f71415fc8a27e3d803bf1ba923c090b509dde7168318000001bc0000009020562ad9bf630b1d12fefc8c620f2a403f54813c295e87c7e90f527ab1a83f2ca6e9e92d4896597a0aebfb3f63059b413b29f61ebd672aee82b842cd1c41c6e56378c332552195c3a924a4fcae0616f117bffd90494105c3358d9aeb389e1350bbae80dfa5b7bbc7c3a30422f177eae6297a332ce4d78ab39383f8983db42d78f7ba2e78137dcb3bad3964a4e287ec02000000908d9737b8984f04ac7c553973a24c6e3b42c916e97512ebb783a07d7cc71f39cc316c89a37a6ac719a050e31867aebf4dc15884ab4aa256e3bd7e85144f9ffaec76c3dddd8326974d55b4fdb20c1d09818c2241bf3094744e5da9d95e931d76d896241d07edf58792c6f272c4b8e67530fe4f05c662ad8b3239ad450cc084ae0eacaea4c928a730d98982773c8a9cfba4000000902d21ea94707238e11327f310cc5a1d61bcf3b230dd8358c66534dd1e61141a3e8f6eb32018fb065de3e271d2f58e93a73d3343ada4788dcbc38458e908a3236ac828b6260f81ba94e4dd8b361c695272575fccc0dbefc5c37ee856177898dfc6bf745e8e856e0bdc0f8ed1460ef0d31600ef32af4a5efa05d3c1dfc71b80087afb2c6356354e92953cb28285632a5e2700000e00000001bc00000090b6b785a893c9c0c4368bcd283bd218703dcc8f2ecc9f721af430d61dabc087c4e0b0c3c575b9dbb67bd9b18eb7ea50838216d8fffce548aefccd802598cf68ec879632163d9d3f424f5cde402f2e90c6aafdbff67f1d76138bdf0f07aa66f218d7fa82d5b71c96c428086521f0a1b3d99f6570c10c1570def6ebb734ce38fba2d31df12e13fafea1903d8059cea3b38a00000090379a72abb0a5df1331e887d28e17eb23e3868c552d316db9d6630362d9a9f0b18eec57ce9854d860a772b2b25bb7138b79bc060c7d426c6c08b3c850d8db8d96500704f9b43ee791c28c24ee4dcf55f66f4205d46208f33365f534f4d24e0240dee79567fa3959bcce06b3e4431d6207a1a01c97d3adbf3383c8ef83618bfa92e87c57b00fc5188b9092bf5ada6ce3200000009057cc225fc73ba28aea06a45d52d711e347438edde7f1cb29eb308515818601cbe5f722ec0e59b1be58a2db33ac0740bd9c726824cc807a0b6f84817c61c339c2fd95fdf0ebf4d31b3e713ad261bf09745821334d718216ea8c2feeb0d21e31bb6f695b6ba86f8ce95af1169727d3c83434305ebf2a5800ef53395addd383aa6a860f2ca133e7c173a02807ea8248f5d8000001bc0000009090438b8cbaa0fe2876ee6560b32b396f688f9a76e7968d1f81350d8ce0a94e0239940ba0c1a79dcff2e7b0894111ae4969f5b82a9d602fba69377f582be4ba8d1dfed2f84574ee6375c6317f8734a547f6dd457c9027e32bb9c807fcdd23d2beebc622ad99659610852a3f3ae3cf55fb4e5689147ca3329931df0ba8d69f44f9db5a2eee4fed51b3602d0ddc2ee2e1b0000000904679f91e736276795fddaa7f672ee5329fb2b2805ccbdd3344ead6beddc96e33cb9ecfd683b9f90997c47f4fdb8d1aa34c9b2e259d778956736a640cc6b3c49f43d012682b8966605d17066d490187f9fb7ec62e0ac58c151365ff968f5672ce87f5152181252407d6cf5fcf72aee330382c05f284c9bfa40048726d829d715675b02b1bbb158099ed76de7732dd87a300000090171df1386679177b3caaf165a29d44b91172ab5ba6e11e73abba018a0712fb7216150d9914802d24af90df73b5d10e5cfeee085ba89dc862e131675351e2fe066b5edab3ef380d47c225134aa6696c96fc979781acd6d92c1bf1d6fe5a22952fce22b40f9abab339e8c824ca182f5b564f852d5022cec42c1e5808063cad2c0a6899dc91f4b4e0f014d41ecf30b0733c000001bc00000090f73cda38e1011799114681aec8676d15cf04e1996f7bebd9620b3899d2a88fadd31bf6c00de4b90d3d33631049e855eb455a0af7b258a3c87c30c737972ac5240c474d9e18fba22dfb6cb19113b7af3646fa5b0c4cc78129e064ed53a5dfce38aee2cef0adc1ecc9526947508a0525ed50dcf5a64a6a34c8035e46f154b3dbc91d3b62396072e48b7927ceaf80a948a500000090a2c90c3fd62e6c3b9236753c545563ab765db750c0d46fb03313eb289c16e21800ea14b8461d404ca2a3c132e15a2eebdcdfda6fb26a53e1c543a9c15b223533b1647f7aca04960a0fe6f18ada9dd4013a0976129cfe596f6de5c0eabd25b48b582fc782a503ba4ec03a1cc0e07213b9a43b13551261e65fb070f85e226b2521ad441db4038781eed1185bc63ce3dc7b00000090e4da73a3e62cfd1e71baef3b802a0b10ccb723bcf26f6115ab679724e6e08d1a589baca7fc9b1088e8bda527540e3d2d37c06341ce746b8c4f4d6133375f7fd13d0ea62b1f99fe88b143a5731be5f648e8db78b0352b87bc7c114676ecbf14790f5e328ad74e914ceb0d87c7dd9908a8e012ae04d037bc0ddc5c582cebf384aa6553fa166b8c639046910afcbd64ad68000001bc00000090857e1aee424f91f5699f41b2b6f3bf426eec3b2aac6f23f18df162c275c5c981a1f1c50cdaaf71172438bf825711ff7ca25c98e693027bc89aabfe189498b4f5a3fb62aebe2428924afd861410d87ef97254e972470c67f4d60a4c4ab6f3619b151ff6384b4d969f41f9ebc7068940b006fc39dac0c91cc0e867a39bfb65b855fa75cce185ecd028ee9ec9e79534a9cf00000090167a6241e3a93f0138b987eac85ae919534d16dc9a80bd86ea97ffdb0b9b6042d75a6fd0db555bb907336f013dc8ebb30c42990c97fb0a770742fb27cec4e37b909788ce1338151890dcbcbc8c5af9916bec77f98d4cd2c358a72f3662eab1dd157fdb71b58ea8c95e44c6f6e842c107ea4042fdabeb88cd7772bb01939449b3a84c95589b7fbfc8b65275af7561537f0000009071d5c3c0bf428b360fa2d5b119e112662503032cddd90044d840d6230cd305bc1ef5629c4bdc326df89baa9b27f8ba45d932d8b193c01ef48659a4706c4f00ee893fc062155c71ee0a07d964106e57f8d4fa6fe30b75d32fc85cbb6bb51bfaf86c24842d317ff4fe76663ab6ab358ccd52d81d4ca5e1f51d2c63269c1667f6788d0a2ef5abee5676692c32c63eab63e8000001bc000000905447d0488946ca5c41b79d52ef05da1889d794eff409b97f7c0ba11327cee35fe4481a454324cddb7dccf17ea311fe6aaf0d7d5a8b813a5ae9796eb447b4e080e5e96420503f3ce734879dd26a945fcf3c0517a8fff0501034a03c12f8fe328dfb4179db4e9ebba66a1a4ec52e63c149159d0c7d85390fd7b458860afb0706bf6a9d4b4cf7bb519b105dcbdb69a8e47e00000090bb17f41eefaebbd2e8a125e590260bd565dd1160b71761a311d35e1fb466be6b4edfe197c926b16b21ec942637a24d5cba7b0a97ed452c8abfbaeea57f84f9147d85059d020805dd39e9a382707c6c50e3db9740a25c1cc806acd0f2b3b348732d0b40d230efd56be31b6c14c8db7f323872f465a8c8c2883d802b537cd033fa22dd2d94d41dffb719209c7066faf76800000090fb1d99c034031173cf99df92d2c1466c06bd9fd2ddf61d80c7764ec2e9b3fc39e3754f8385d47c7cbc91853a2e230d68c43ecbcdc05148c54bf4bdd589c0de19234f13628c5173e59e73a21009df9cb2ed5fb9c2f572f3b6eddbdf12140f810bbd0d43b740b45f16a6571e3890b7d0daf91382c6df2a6cf694f755a3a54f2ad7d4e08a3c34d136981ecbe959a88a10b6000001bc00000090394bd2a4044e0fa016de48eaf444b3166f1155216741ca6cddeb4a8635bf438146dc5d98811ba76954928ed4aca1ae6df227525a888987d4d8ba94b7c8616326ec01b5f37da8c4af05b846737a1ca500cb2865a53eeba6cff09cd48cb1ef61dd56adf08f0d02d6cb792db82dbf92b24b4fb3e6ee985fd11f2521dd4eaf6e208d76998c8d8ee2bcc58382e8e403a6061e00000090ceaebed596c0d16e317d6bbeefc1256611ecc3711ace9376cc4204cacff94326588f0f3114653d57af1d1c72ed28462e6820b3fc7392131938b575e04712c03216f04d2a8fc6d2413ade9058dfec7f5e36cc943ab8a741873017c17c57869929df35739e7b7ff6aa64182ed1d21beecc3c7c884746fb05eff157a60c13da5a04ee701972f5103422b5b20f875ead5fd600000090164177fa3d9453fbd6c7cb4884d3b7a77e056a7e2962273c809411486775c93e06b6e2f067a1b1da7b7deb8d1cb1cb3eaaea0880d2a898591d12e6656c44db58b466489f58567f88f9d5e1f19c26935fa13fc182a358b7067af8a9fad9265d3b05f1220ebda17412e2a5f579d58c7727d5d151d99530c5a68ca290c6014ad665eac46eccf1dd4beab4add602ee4a0b3a000001bc0000009013f0191618599cd9a94329b8941fcdac9e8f2c843cb1ad35077c6312c089d53369b012990d86772aab4184f99dab44d4dabcab6894c540ae40c03f3c97f0739d98dc70c26f3b2ec3ff78621f9e255f095448117aae033cfafd752da06b13bf47db123018a68019c84ea43ac1d534fd8b6ab5b160d5764d920cb896c2ccf492d713d6495a1f5507d26866b8d8ad24fe8e0000009088a2599f38885350473ee05bab6679aec3fd6753be0b0029d3ded6f1a7d781e6828c47a0c800da06454f58c27383aa7e6ca6dbe57453a74ec6effe58b52b0b36e972a1fc5b3d965f8d849dcde51921a6b0755e7e3dd1cb7ff046cf1496f3dded3bbe5bda67b253d6e09ac2ead6ae8d7c2b763831d67bf238756cf9feda6a0078dbf8404268be7c950a2be61e1726ef330000009094d580c24085ec765663c6290fcd6b482893e572d671dd593a8ac82e50c2899db396a0474cfa5ba8d6b8ed16dc32f95af966916ade952275b586589a81d0c7fae4462e5f7569002eee9e419369dd1f7585feab27fd512d387ec76c4a38a3008691bb586210d1f006aecf9f5053362341994b414a0afd445c9192368596000f3528002e99747a94749be62520a9941419000001bc00000090ab299d12da5d4400c0fb7ede1ce9a277dfefb8ac60ef4822a5d3f2e2cece137e0d386dbfc29d9e612821b416028b692eea91374c805d368c233bf6acb49c8ca1d814a95863ef18a0aaa6351550205a065010b875e2802729f30777c6442a9f3a725de94b37025c070de6ce4ec381e6bd2462bc35010939e34a13b802cb58455ea56c994263367e6d9d5c30c94fc3cea10000009085327a7bde96de64cf1ec0dd4ae3f6fe4893bb14ba8a8f210032294c990cf6b8532f184c440f93d61eeb66b7f8f4900026d77e3c7fce28e5e8479aaccdad7fd97792199b48289ee96021f658f9542994ca61997d4e3ce8de1ece2eeddcc76c745b4de2a263246f98a6c120d4c896c1cf1dbfda47b149f41523a6ac90883c32d41a82210ae996907d5215f87c20010a4400000090b9297568777df8232be5498e8608b7244657c6240ec9b869ca97ffbd5cca719f0a18759e2fa4b37a7cf41c753adfd4a4803e2c9439cbfa4420776dba88391c9c5a18c05111fcae73dc406a731e9d2296758d195b6823c5853772b44583059794fee392be61e2523602befa969cd93915e2a2354eaf942a28dee21baf732016656ebe18812de6682dcafd4b43a5ffdb4c00000e00000001bc00000090801ef9c2577ec82636d3cd9bddf8fe9faa1916f076983c1eb61db7cdf5284a554b54c708549f4a16fea0a64a7509a7656d7ff04c0b6dd5b92b76641930d3ecbf22c0c96082a97cad9030dbb6287e5c4c9ac5078e55f4f8a1bdcbd55a42d9c882c1563509b06f4484a793be80ecfe0e42cd3acf1f33fab869b03690d0e2c8995e3fef9bc8a02f4cb7e9d076ba2cb0e8aa00000090c932ad01f8bf981f307cd0678be81a254fcd35fe1dd01d89f4dbc1a08aa1b6d7821e4599904894618943195181dda479755864f7bbb228795182ce13ff45656bbca9f56112e7d630bd48f8490b013067141e69379d4ccc05f08c357f8e54b10bf8ac4731da861cea9b509b90c0f76fdd834371a2de507483b09b9d402065fa038b4591acc7c3a1726616c368d64ef87600000090875924116fbfe13068edea36b4029e0f8684bd7921447fd7cfb85f2ce489b755934b81eb2dfb0d318cb390cefead098c670756c2204a29d8b53f6284618638950529a0c5c6bc9e927efa083b460a275c69923a91038c0089470cbdab7fb51d7ac7b05e20bef690eaf28615d5de31b260257239137bceefac894dd3803070ebcf0a743b06accbe856b7785d0815427796000001bc00000090c1524c555d1de312b4d6dfd4498bb6f0689f10df8814c31dd2cc9f9e47cae78f4cf612c9de50d777cabf50e738f3076a1d4464e3d51631f72adf16337c02d58da83591df58291f8edc2055376691623215a04d791b2f70d724b4999523352553eebeb5a815c66504d1f6be97ae94c778e606d4ff110fad07a919469eba144602ad947f2f1cf21063d666f700bcdc152f00000090a4f0fa4eda04c3269acb3b63bd19447076a8df4d3c7f4ed3775da5c54afd384d84b0dcff3a2afc5dd9d9c604f0716208b997a22a7f0ebc3794dee40ae80031b4ae1e695636fd8675eeea73abe669097e05df866fde70faf4cf15c9d9eb01645ffb7fa40a8ec963802a6b838b47fd91466c838102ea392c72d20d1cd2e2cd525be013551576dffa28bb6fbf2bde78b6e20000009031a6d25d6b5bf8d27fcd97cb17614b487ae1fc7a3296a0e56c34492b7cfe3b52d542b80b0114fb19b7527a8b7fc497a0d88fd8e29e8d86552cf56e773dae95ad63502b0fd6d487cf69b9c23b808698ce7b707a40b5b765da987905f0979b836aaf6fec136f7427c9f53273c7145c1cf8236f43ea369ed0ef4250512935073d11e9f1a2605b9e6fdaf9953c89ebd1296a000001bc000000900f346de1f80bebd75770adeec5e1b40134cbb2c6d8f71bcecaddc6a162646a7dc1b546e104294f9d399e0b07274babe75668f43cf1bc1390c6c7f03479135102d76810e3006c7a1c5691a677f441380b3749e616b1853ae1086c2f9de1ec1158a5966587d30fc7a062a98b77de490774366ac4bd55176ae71ebcf97380e3458f99a64c68858d9a542d787c419407480c00000090afc3a982e9b18074b18f8e9241af438e78e8ac319bd7db91a3cc42b095e12a18dd961b24b8c863a0994234adbfc2d6e7483a79e4d54481048d90cccffc9465218ff5f5d901203764b62af6b4db57e2602543585602e1f94f4c086dd69c5c9b37edbc03abffdfe322f353c5abf54ce07eb8ed5e805a5bec7d59d15256362230beac173d50d74e67226306ffd589b5c0d5000000908c9f222581c07fb644955af88c1a00a64c28e97433755fb8d2b824a045ef3ef9718e05c4ef36217d6bf5167ad0a5f17798cbfc967d8db658d369d2ece607d90374f295103ae9d79a0695c5def30bd3a43c4e04d2d915f347f444225e75f01ad2d68492efd52ecb47064ff9632f5e47a8d35122a170d5d95428aa035584ea80b6ffe3e499ea40492da1d7e469a030ee11000001bc00000090f3aa49be1ef2da782a3a250d14a09a4571b0b2875223e27ecf0701a757e03405d9ec08c8bb839dea797c25693021bb0695d2e5629a2568ddaa8d79b3316a5ff059388a49c33c70e4ff39cbd33dde9f049c3a9aa1dc9f5c0d8143641736d572c1e3486a58835a47adc0d8fb9710f1563229892d45e055aec29e9531fccbe7b46ceb68ea5529ebf9d415a5dbdc86bda1820000009030629b2f31fbdcd559bda5bbc841d7fc7127e1fdcd05b92fef2dd6172ba516b3712c6c0919fea5c19246b15f5ece0e66ee60b84372b840b1e7b8b7e710f105b3406e167774acfa409263e612b92705475118cf88bf9bb02f87bfc8aa22602748f8b4dd0f60ffc56b4569ddfa8b2ea728a18f6de5bb6f67f302eb8284f7ee74b6ceb8343b52bd1bf47d478b3301c7dffc00000090219a86279f2a85edbb4d6f8431b1add2747a087197466d378490c9193749711b0bb59b38cb7fd15898272ca2dbef517963f6086978fda51cf685209158d6222adffc82ce8179e30ea9bf2661e10470f306835488e054e6b3253f78a2fe6959979ba5d7c27e3ce187fc6ad8d39e0575aa6ef7be38938bded99f596d09671890fdf64d98e4ac0c987228b144dcf6d3b3d9000001bc00000090b5680313dd737e26fb80af1b3a2652cab7da5447292c4317006f6699ecea9c48ed7cda8733edb6ceb0467610c4c454eb79779920fb67e1658e5cdbaa43780e0822997aa6341347fdcaa032bf10afc63c3e32c4ab0a79943d9069c2ee16c1ed6c0afb61b3b468e2dc389dc5255e53d29576e823d8a446c27146cf9edddad9cf73f800c123462852b2e5e4262db101a13400000090539c18db539b56c610e0ae6e65aff959cbbe87a2d1265e9641ac1c6e593a61e5430828e9cc6959ba079cd68372f5ebe403db4b3a765e6596118cb67b36ab498e09592873b5f65b5adf7ae22bdb1260a35d66eac4cec5ba2f25ea1aa098a014dc88b399e16d3bcbbdfba407ba23c652b8147e044a93b354b46ae70ff0132864d5da00cd9e3c3a3d3726698cd46813393800000090d689249495b3e90523cd0c7cfa1acd98c279a814ad02cead5651ca56edb9cff526005591fd5c5630035ba8383e59e11fccb45700e3f0f185ffdb7a2d6980e57536dc68d0f3f5ea5af29e04d3ab2a4cb396c6931839b74e6f516c13ab1c1705bce0c8bf55ac11796c0feee88162d3ca18daeb835c13d187dcf4494f582d5013b5b36cdfe0d8a01d2303f68e406643922e000001bc0000009033c59257596f42bcd14cc4931da340546eb7ed481e505983ea174a65f337e3ddd8694b4bc91fb9c6aecc02bb26bf4be45f7781d8c71268b898b0a88ab612969378e8746ededd98c2bf384005f182c002f356dc7e9f441aa18638f7cb970f68ff146335f746322443e427e941d567d8b2704e3369a4b7cafc3857e8f36fd05b3fc655dd4768421fad2db557b6c7c4fc4a000000904632ca5761f5e73e9c7c833817c97164030c0fa8b96816ac0d0240256c0b823ad8f114c1bf1da4785232cefbbaa1eb5c8e7148d795a8507f1878f04e61bc372413360ec0c89a590d82f66db9a7da440f04aac88af5e636d3316d211f44314469fe2bf49a563f73d4bf12b7b318fb30538c3dcbcf254e14cb686177c876e63a4f88868fb35289fa8de8a8d230ad7452a6000000904b24f06233a197ec6bad7cd38cf4bc9fd4268b7e1ec2e5d3e216b44c2fd39b7a091d74e4444021e4b2c34f7f6937c9c5eb60d20c2f5c3826ae13d21bbfdcabd5a1412cfb6e725ef24cfd96657034a248b4f9923f6e7ed377cb8082d928a0948f952eeefca63ad9fb5634dc801fc3d0a1552ce4d63b60f953c560e6a1ccc5dfd2ca0a91873b6dc19b5d16e4db432026c6000001bc00000090145a6a31edfe177e2a1f9722a3aeee99760da5a34a9b69ca0a23c351f41021478ee69c632627166c2e2bcacbfda3ed3e7274b0d71670bda552b51a53c98e334ef07f4f7ce8c1ec45010f4d875cd8a85ebe0af3c7644d564eed7b2909bbc7bfa0be1b43b65e660bd592476fe14e73478ea9e109473a89bce38e34a75d16cd09975a4043763fc1b17cc867e05888af015a00000090fc1864227ec8804b378b445c8d92eaf0935fc6e49a1bb5e62f5df74e576225a3ec1b98b06bff1ca40d896a0b3d1fd5da1592fb129528ba4d58f6f195866c7d6c48b26b475a0f72226099e52a51c2259b7ab9edf7765dba7454cee56064f27eeac649e798bb6353b2258b098cf8ba89f662075b9e3e7d5244df22b9a6f5d6c30e3da30db89aa20dfda1340667907efd3b000000903041f714a8934ad43722f849083e7a6585d66fddeea9be2f423e6d4f9a8b935d1a88c7e0394b53aac5bbe8606742dc2182be3e81be382fa0dc7506a120d7d832832b69f1094d04cd5b2c8613dc858963c5ef897758b5b5deefd5f8eeb76dc92dc996472cff8c2d8d2e840c843a7d7d44a7f7a7461b9819412fa8b93c1923b8a689ae21e8c6bc560cdc13455dd1ca74af000001bc00000090b3e2eec14675cfb9e6fae9e2839f095d822fd6181aea14152a4ea49cf7b89242da9ff57e0bf78e006dd3d83b0b8be5e884cee08bbc965f6953efd4ed3e86e25ea6048f35f4096c0f96503d21aa4990bfc28679707704e3b8a04be7fc25bdf4e509a0584c4772f9e08b1e9436ec371758298cb6a41a65fcfcdb333b12969e112ea444b6b1d1a32ed1f4498b1d3c8d990800000090f69263003adb1ebdadae02462f927195e4012704433ca265ae4302a17056e4ee1fde8ed8a24d804afc735761c06a5a0ed954ff73a9698e88aa68717a8055032cf0bf3d9eb51bf7c90dde3f8e351386c850281bcabe4da59e52582e05d64d74b4969e7480284bf8fd8062912d4cc469193ecad218a32fa941cd63761ed22b637a4401dd09847c9364389a8d780774a67d00000090e5dbafefb9b1634f77bb47a9183ede40562b5c9a0dc801d38d0b90fe57c0af4a5fa2a7a6fd5f079659e22b9aa6b79f9ff124df2ebba44bcf1942de81d7961420889728a12eb054ff6802fd4a20e5bd047addaad41b7d838cac5def04bfbae085b804c2caba0ba79df0230523629e59938442d6659a25d8a1d99e09a1397fa3768f57d79924ee76da4da67d008eaca622000033a000000ce40000012800000090639d486cdf8acd57ef037bd52e740d927260a038bbcbce4a25bde98af3f670bdc7368780be3cda17b9e8e1c825b02518927735957c6c50fc33f6083c635704a9cfe1d511917acf0f63b246303b2d782cc38fc32781d41e450dbea20b50c5cbf1a1b673c6326b538f94430f5db70085f3d9d01b328f165f0e790136b52e7ded86c38eeca0390ffb4463e537ddca0fbe48000000901d83225a50847a2925cb255c507dd38f4645f05d85941db543000b8cbf1252fe12a18668514c4565dea3f9b88f87fffc65a07af88a5f6ab57a79db7be69cc8d52a2064f511c7a2a04a85fff0e2688821b713c3994301835d056346690f9764e5a7d6991083b0484c5cbe7961f4bff6dc46658c8fcf3529e187d781990f2ad7459537733f81e8212205dde6a547409d900000012800000090cbe5f87209419bb150056d00d04fba5e7386c8d0926df7a3c619c1cb7285a80b542d105f55cab4a2929a1fa5fced09fd4391159d41bd97e3c48b8527f1a7fa720786f42e149ff3684b4602e9c721f841729c5240e02fbd72a69334f1fcae9925f661997b5a6f6885fb6fb35215570dc50accd2888b39a6edb340592c186a8f0c60ea6edb1c10fdecb84a6db4cab102f800000090a4057e4da28b2d51b0cb9a14ed984359df78af483ab432f408ed202c48c4b9cfe3d2bfbc69b3158ab635863f0cb918ce6f517be1a986235926174dc9f2e90752b1d4001accb4fd267f5ff6299d1831672848e7f17160c03364fb5a00e29822c884db91413bd63ae112db74a1fee36fd37709c5450548c1f11bd7274b518871cfc02606f22a0f47e2a0caaa158b4df7310000012800000090db4b8cdf217d4e8d5457bee548314bca5d7d83fc27aa60f87d459cfdc6ae82f757614de089da919dbae04ae77f9422bf1b008dce97058dae7a043cf1d9f82f6e3220ac8c8b5f1aced6bcbe786454e2156484dd8449e1633ace23b50b813d312b7be8a33c5e721730483d57a6a2ec3bb08da97a5ca5ca787ae34e4ffff000d9d001228941442dc2f3bcd9871a1dac37ae0000009065d2234018f4d38a5730ec5510036db0a1c6293e5ac5f5c97ee28729e2fe13357c1da0119880138d20e25590e624261b70794267f4433d4711adf2bac4c08757568c52d52e0cd182a40f3181a130fa4964886b5bdf34a102bda3b0e97830ee548a2e4ead76689aacaac714a62f640128165d477057b3c7b6c9b2448613c834decd7e5ef2ab4f50e9f32acd6d236a20fd0000012800000090a2fd7da86afaa8d81634276960ab4fc9b355c4fd2c3ea5114abe4caff0427f96f25cfdbee7cebf96d35d294b96c22a087c702a05914a24e5a115c69fbcbfd25e21c971cb3697127fdee46c11d4b9c30c2ce5de4259e41961522c4118c2ee00f2b70bd7d06c5422c26981683bd61a6ef754e087a9eeb53b16e3bcf087cbc8f390cfe97986f1ef6b0234493e9d8806275f0000009079d388084b1dad045b2f73306b13bf335be555ad14acdc26ae123224ada033592a2be1d2ad3a942c4c532ed1f0c1c1ca9316e10fe474e12dad4534eb8f4fa045803d50816bb9579304a7a00aef983b8fb834344fad8b4e572a766fde8676cab6f11436fbc448abcf88afad3969aaa988112a7c5b081416d4e70963f108dcad242fd5d15204d370b9ae2025c0f6faab620000012800000090e0156263f20bb92a39dd3049cf6f418143192d5904f2734340f55fea7854616030766503f2136688003134e058481035725434bb5a09b2f16a61ecd6f314368cb7e567ec36c42b17728f2d47d71b49d1853b4988d91dbd0fbabf36c98c327b19a267d56fad2dc1f05b2bee17002e3e00941af273c5e9f84a5cb3624a544abe94305c2d5e290fa0e8340a084825fcdd1100000090e755259e0e6fd3b0d8cfcdcc0a7ab644ecd780e405dc3996da1f784bb132cc34d7f800605d002a1fc88f9f49bcb408069b7f81e1f343aa1c6c3509fda4147b8cc2af53745e245f7d7bfbf177d49db1d6ffba6fec04c78f3556438ce455c18e9d54d1815229ed43eb4eccadb65162a90e0eccd7b628fa5649f3def35eb04361df8f863adb0ce47206df3b20fcbab8417d0000012800000090103ba4b387fd9e18befbe1321a17774de0a57791a98aa00ef7985afdfe51787931c2c20425516fd2474ad3bf2ea9a1dca54c7af84655cc99cba7c2bc82107809118d13fe2db6dd6e89304486c0ab9b2248628cd2a840cd379640bfb9c1125db845214c941bf00054baf2f7cde366ddfe94904277950663fc4ad23356875905a632d2f9b51135f6ee529fa7a0db622c8900000090a9f7c79016d72271446f8b8f28971a011db5e1c26dd313def999790a8b28b94165afb94360cc66edfec6afb41635cea260d3ecc87c0fdad7f7194e3b4b2e68b2ca1ccede1a7bbd9a1fa7cc75b3aea404052d0d158cc4be13757bc9f15c34f8326c2194ce4674fedfae84b0062f2fdbcbbaf3735191885d22eb23d7c37dbccb17c6c73bd6ce64e1b4efacf04b2bac202d000001280000009004bd547838a4f37fee8a1baefa39987c4c979636407bde403d8d4c132253e17d7a8582b5a0f883527c36c5b766b7e218e47cdf5867447ca50bd936c7d9d1443f06429beef8ef3cc0e3b4748bc87f65fc285fe5f34dd38207c9103418f9adc69427f697d1b2a10f8b80cd79224b64714ddfecb2ee3927a540bc0f14ff6c6f98d85397e4923c5ec144a1444fff4e7dc249000000905e80407b1c81e498717666a4ae03f9ca54ce14fb5ecb9322f0ca9214a2f35ec5475ea05f21b1b634b940169448ed2ec1d72c3ab9aed5ebbc3abeab2b5e1ed2b86db7940028e2125ab67427fc5399e605057f05642423c1618042318484ea12b7686b080a0162eaf692e3f8ed5729f9931c15a994127bbf8d9c2c3a2b41382a811804ea6eef3fd871505b44a43e1616460000012800000090be9b4fda861bf7888112ef635cdee9a91a3d21535b7362a6c0dd53f556681f20579748d7918f0dccd5752dcab5d3793e6f996af0ecc9d061686606dc42c1ff4f666473fc8091e1925887df5338eea6d50641af70b95cc5ac6c0f2d55005a6b4aa0c0358889cf9529e9fe997018ac9cb16b1186cf1a90fe071ae3bae3c602a6396db6ca6f499bbafdc8ac4610fbd33d94000000903498f0e293205cd2082af437d12d1619d59933be6f9d0d8563bf5c3926434ba6abc87b4056c775e78082a9a53a0357fc67eadf16643000af9c25a897de7a076b0dc6e73f5f39bb42a875e0121bfbf6d1c6817e970dccb8045e71e92ef1ed9ac033cafafec3ed0e61cf79b00b3917a7cc3e74d4eb6fdf4e4255185abbb966769fffa8c939e90805cba9c1d027f235eb12000001280000009072619021db2578b89f28361d759cb625b80707604a73e06e16da844e8e92953832a9d7d8703bfa56a6edb22fa80a55def20914c155f6576038437b26e348ef7613f4fd8616f6ca34eee1286c22b917337072c4fd7f056e2013c85d480b81b0295956f3413d532549f31bd5d1a7fff5928a68d6c808a21d12147beff79b97774dac67575e68654e0c9e4b0bdba043b0da00000090b96df6fc07703c2d4f7b60cc45c2ce90925465d435664666c162e2493fb6023a4472c5f6cada4017ae3fcfce8660c0872ae15efbdac00af8c391dc23d39fc94950b6b4254b8c8e64241976692a14e5a4c80bacf1a9091d76b3cb1b3ddec01d749c6469b28e55f457d44ed8540fbd9dec42b49e9b7eb3461b9e03b2b2db210fc9408bf399c69855bcbf5c94db97b0d6d300000128000000902bb67c2d333b2d72140e8125c20d524321de7130124c205c8033f5a52ef5751cbee212d1e9f8fbd55c9ab593bab90bd8d0fbbc74cfb7d2079f7fca70814457e1bd0f15193e3621e2ae2dcb4b666ffa95cd90f27ce22bacdf3c32bed9d1c077fa3d4b0029aeaaac7c0e21097573cac7833431105bd4f7cac41f950e81ce497d073fe041c0b267963d351e7f46bad85a2300000090989a5f287ba771b3c486594cb4e206a7fc8aba4e4b7894a5c95e92cf705983efe0dedcbf2966814be4a00aee6b386da748020ec285344fda37a0a533ce4a7161789a0c499b62b19c62bc80710f5d64dd8823e68b324a32e2b1c12335be5a8cfb55792f0f8dea993b24374838cbb74b1e067d79454b3753b758d12406fc63fb95887c8aeeef291add1091e21a21a531d90000012800000090086f352a63a2c15b771e0e95cc484d9ab851d45ece9022a2fc16979ccebdf6cd8a281d080d948dd0da7f84a3d037f11d57fa35a96a22f2b9d0ff7094e3dfb5b59b407bc65ab07c59c2b9738baf486dea809514987a7b46bdc7162db13c94a09580abb4ba31707e18fe0a83712de26f5d28b97877c9b4f6fb82521097d5fcee5159ae26c4e90f70b7b8a2ff3a0be9491e0000009025c7d37f4395d5a199c6c99fe93e7b7cf5c394699ca0564da5c668b1b4a0789681354ffa1142895c23a4115e7ca67ee112af0bcf0e5ccc798d9bd3eaf0fe14005b25256a460585325cd7c1f325edcc0e161c001fae73fbab5d24f9ee352c9ec770be8ba37ffa58c52b9e9ce3e5ef5a72d9e75a9dfe7e1237118eee1c6a8b21f0eaaa356fc29286ab04b212aa6d110bac00000ce40000012800000090dbb4d0d2a8ec9b5796f37e0276b93adfd82de35fa8ddedac71f24a3afcc1fc70cddb2f0d10966e8434bb4b7e5ea542b9fbf64f903effc84e1e089963e3aab331c4569d6d2ca5bcbe3ba69fce732432d3b7ff889c3c810e3a4fe597e10a1e51f9cd77e162887e3f12d0b2f1797e80c2c0ad744f4c78c290ea2bf3e3bf90251b5b304c7fe0e8881e9d6734da71614698dd00000090e15c9eef7b9c18bbddf844771bb2689cff590cd861b042087c7d5749e43bbf1b07c0a99a7db7fabc0f59f7e5f8c5e86f8867304654bc12e2ddcdf5066e3081348202c12fdeb0380f41bf7bf0bf12aef785960a82cab387ba3900e5efd50dbc7275452fb6b2a3c7e6d5905019b5627c3c9b177e8826a57737cca86a66ef73d541e80c25f2fa774f84117b434af3f03aa70000012800000090237b304e7115ef24ca0b6af4c6904442432c1653d1f91dda11667a3391e376a8c59b9494bd9fd8a3462a58a8ae2e43f38287965d68ff229f05db9ea2f05cb42621e99230c1b6eebec317dc511f75de10af0ca3f3d540ac79b4de653802d92487593d016741aac8d1e6f767c2632c80fc12b3fe9f84acb96f73f4e93573a0f9f4672356fb526981d00798e3d490ff622700000090d36abf7a4952bf867dd1c2d2ae4f5fd680a698e216c39969903b289cb79464bd00d28d7b81f3c19fd3870cea5d5152cea39d2b9ab6b00930075f258cc60b036150984914b301248279e5652d4ae7fd2767d574814ee68c9fb37a32532003e1bcb4875521e6a9f74b031cd71699689597753451dc29abc51026fdec1bf0b522e90071b356059ec3ca16d05047541581690000012800000090cb8402f03aa6f308556bf119609f6f02cc0d2aa1af938d6e56be76de6012a6ba66ad93d74a8be2e3758976c78a1d84352be6a8b1dc8deae64670304fd476d7d41e20e1b02ea33594014611ba725785fd0be257de48c00be120a5f233322741713f5da81edd9c6cba8afd48089d158d0dfe9eb236bae1290cffe993b9b8306c51ba8b6d88c2fdcd4cc5f3a94aa0be6a82000000908556eb17cbe123f2d0304c877536b7f6da54fe5c6a124b6df08098d77c7a79d7d871dae6f125410320f821dca432ed032ae877ac84f821568b7daf89631392f8186db2ebb30fa836234ef18d64aea7d13d2fd05aa3789c14c09a4938015343fc06a580a43fa333e6be0848f494e6fbc0e6c91ec752ee98e220897cc39808a1131c8f5811b4c60568755f1f419694673a000001280000009019bd42cfa2a996fc95214b0a1b7adbbd631dac971238e40a723b018b5a75787b34c00b7ee71f3d1cc2f160f6b395334543f03fe872d94cfc04c4570a9d3802362ad77d482d6c650696580ff7d50df656a14d82f9549a0c8c4b4a94d4b01730b50eafa7bf8348415b88dec562fa729e6cf4eb1192646d98c279ce586af89b0906c38ea22c1d7851c53639f3d598ff864800000090aef905153f7086f16d147b2ddcc9b602bdac77f4667032b7b874889fbdc7cda53099d931a61462d93a751ccaa750b3a8e55693a687cc02359177745540efb45f8355f5742f44bc19572ea9e5dc0c090288127569449d536728bddf98419cfb073cedc949b52cbf25e8d7371ec989708a452cc8819922688d639df27c5a6f1f89ad17b79a5345fefa4afb930b655170a700000128000000904d010d18bbc916ce1b9cf07a77761275b8452ee8432c84c45f2f477e964fc5bf1510da3445b0f879597fc2a1d0a6cda10c47c58313f76be11f9250e43082db2c2f2061a213c3d954141247ea2a6c7e4836ae3859b4be1b7e210d0f6174fcf171ba9d74991c74af9a6b188b56c7b86c08846880d5348b7522f31f15819b6db28434535142e1896f4063a84fcc40c9992a00000090716ded02fd483c28d914a74f40e01a1dacf169f6ecc39ff2769079726b77cc7dc3cfe9647970fda3ead30246f2bb8ce41e041a93b690c2c954c305aeef82193e086c1803c04ae989b9ac025ba9436fb36e855e2c7db6aaf202fe6cc400e78eef0d8471d1946b3b9103ba82bc0bbb3cbc22bdff6de9b614a08f3fa60695cf944f69f26ea7981dd80c39a78a4b6ab2e6170000012800000090482ddcea8042e342790b5636a5a253c4e2d242dff8aa93c4e42eaf144a7a43c645c3502bfd25b163904caefaf223321c08aff19bf387485183d163fbfbd2e4c4eb3851fb9c36ad06aa42eb3f77d02fc7d6dc85b104fadd34a87e1b1ff9f6888630e641f4110453f6ef24256db1e7f1a70e16bc995c5b4833b454876830d2337f884a2880bd3e851c7762343691fd642b000000909e394aa7821fba6dde93d161ad4d0a20fda7271f4e2f6e75e6aaa6e04879abdcdaeacb6a966c1377dfb0a9be44308338b5ce7eda23a9a132ef3dd00ad9e33aabf208014fa7d7eced6ee23094059a9c26a70777e1452ab451db4dfbd3701e04aaaa6ef712b609559504193c3e4f20ea1e7ffabd5d98d837722fa9633ddfb557dc2b28908364fbaa10ff224a6db2d759560000012800000090c298a805b2e680a8867e93addd9426e09d5570d808085b1c593da76a0400d27d559c39107d45e0ffc6d0737c8750605ea0ac4d8a339162f595c9b9e62488d921a22b120cfd1ccd2486cfdff659910b3cb3fdd671702b7540c85d27708f8ab86212816cc4c66624d9d1d9db16bc6d1272b277c887226c4dd3ea3d005b87196355f0e50eea16e4be3cc5993fc810228858000000904489997ef0faa1245cdd9d8c523aeb6710340f949b49edc38c89487f13a67e4c294a15957c598097d17155c07f67f5e3eb61f735dd5cfb4428f097696523942aa121ae82699fec94dde8b460ba6fde5113395b8fadd7ee8ff297b27b04745f73314a64f23c5e1d6a71a54c4c5d6f756eae8c17548bda4cc54b73a2efa316b7b85cbaa55e74bbc79a8f0c642059c8b2440000012800000090b99bcf815e1aa84e58f43e479149a40360fb1b016e51ee5af903e09e16afd3a1f43adccf0f4f7f6481f3725ff7dbc611ff78ed8589b37441e5bc4ffb51ee8c10cd8afdd2d4651a8723e00d42cbbddb31263269b8aec62bda4fd980942ccd3f2a0b2b7fd5e255e0e378635763d5007da49dfea0d93ed3feabd723daad70b689ca5d88f136018a755ba897ce4aff7a77e900000090cdad61ea71af30981f6a01c1c1f922d1006dcecd97d67ee300350c45c71bb02dd1cc93ff29ae59ee29f9a0b763fa0f184e5332d8b5c591acb33f384559460bef4c7cb663d37f15dbc321e2482d47a262923c2f9c121e0f8ad02b67e53963f0c00a4362c691f209039fd3fa4af613b447aed473c44f18a99a5f2e28f65c2fa11ccaaa88310f5dc64bbfd78c1301bef18f0000012800000090486fecef6b3ae95ac8e6ae9f636548cd2a1b3aba0710a3fd00a66cf0f4b7333b33944c0b0d0232bd8fd79b22daa745adf3a04314645ff0b6b984c152226931c0aa8b25a2e00d6406a3898b4957b45454c07d05c382529d7ebf344c77835dce02c49d0d55b56cca350cd2ba86659ee962909f9b72bc773806208af327f23b03f5b4014eb92f3fa476e85bf0b1343f33e0000000907bf2e48176476863d220b04a0b95b41f139fd6a2d1e8047f75e9010ff45fbd412a661ab30fa8549538fa4a69819cc2e7a2e2adc4eeca30c0aaee2403fa639035c535a7cfd331399569ee47d10df8f5faf860fd3193ad2d5c544cc91a6c753ef19a1f6c64e1e764b6b10ac4dcc40147571016a8371ff6601575956629a891b91dd238c262ba67705929b1edf4617162660000012800000090c3466ce7a4d524534483cc46fe71b134827ce2f7e313981ae63e7d6c0a433690db9c6f7564029066c585d50ebcb0e4a79280c4a31440aa66beb5fa6b1076c36630ff029c269ab377fbd32b8b2b46d337fc784b6ca7a8e150211fd5fd348f8495645940607733be947a216d4cb81c6f5147dd0b4cc5204f7600ec012273b312404d0f7088983a9da4851f32de157c526100000090664901ea78c6963fc43fa423d45f149992d9af67d74e3b49c9334becfd002e9ac159c7b4bfbeff96ffd74bc825a41493a2ddf1ec8154a3c6c9e3b6bd6af6c1cbc7e7e99a07c16538e5dcbb9864885e179ff5742d95d2a0bda32956c3d90d096eb9eb2c99746bbb66601700ed8536a126dd31986ea2b0299ed532b8dd623359453b20d821b27b712f3394db9619c496f0000001280000009067238c9e1a8236663c5d759d22f7c0b5571b4c3ce87609610e8c0b0c22513586b6091a099a865016383ac203315e83bbfba56380e251e40f460dd28d1f4f48847b1179f57912057e53b316301f603beb80f2fcc62e896c9fff553420163e005df74a455c6190e30b8a4276c7af0808c91bddab3f9dc147f6f31bea913ddc281647668e0521d44680cfac9748cf7fa679000000901554e014140980588ad1013f5514aa886ca1ffd5cb1e80f3ddcdf1652e9bcd2e418cd2b27d51a79658338c5c6e35d6e257e537d769357a0c565d766757b02ed40b720b751616d6408ebbc516271759fe0685feb6745da64dde0d7f95e85abf4dfdf7c1d98defacc660a6fb1a448bc6881e4d79869234f981095ad351b06e5f3bfc349b68affbdeeeceaf3296024d1e5900000ce40000012800000090f821f2e5485e3c0af4b84fae21d986dc642938632260220147ff8f0ec70c5f6f97e10343c0fcc465c93ad626a7112c96c9e29b9619e3430c79306697e4b79e28b2a0239a176a54234746e061b8859cd13329f145ede2524db4c02491a218ba19fca3149ad8919ded8aab2d9082594c666094ed5f3ed0296f5483194a86a6c09af2a1905020ee88ea4592f5891772da3e0000009083f8cf115bd237f940b6b6c0b070b835b3b1e16b004f565909845c1f775bd74479a0ffd4a260d337ca93253d9c15dacfdd648fe0be61716c8c8c8c7e6351ce8fc7555dc26409ca9633c3bb6cf126793f197fd40c3b80df76046f8e46bde2e11802c8a182468c8a900c612aa11a0edf37def572ff0ba72f1dc075b0aa5a9b37d9a3c2cc35663bf4e2d2a36f417a6a3fe90000012800000090fae3021c00189b073c016491925cbb782113fa0cd7559c94c8e2c12853689cf14da70ac3886a89f22e2f7b664fee4ecdce844163c3273a5112e33d709c1bb5138278512dcae2c767b90e178f102a0ef2540f30fa24cf05b7336952e34a4f4fc151aaa6d82fabe22a6baa5353684ed2bfbf0adfe7120ae8d1ed6c563bb2a87dc0e0c18298fa7a763f3aa2250f41228e0000000090620fe1d6a7da657aadd4e29e1bb09edb6f293a84f08055ee5e0568e2620ba4711cf8a0776b139ed24904139f442ce4390c988814b3b5b7b4afc27c4f8ca7c2bc1dfc9225e45afec25092031b38974666ff0db3fbe0082703eff4b153af602acdd9ee19e7023d2be09d6f567ce79929231e542eab9133b09d39b6cd149e8af3bd686d412afd06f2e88632a6098f3574400000012800000090dcaa62f948654f40d893c4a4c31662cc125b60c87075fae66b66a2183e781cf7beb587bf57437f9827a2b9fb78ab3dcdc5fe4867a4e8b8b4f012abf3626b64af0f552b9419d35d67aea4e48ec7ff8507de86e89b4354fba12751dba280f8a7f05d52449c5b4f5566fddf392e9e388d2b68b35df13454c60aa110b1a738e311d63eedc223421a48cd60bb0eb5cbed928d00000090d6bd5c8f5170af53e76f14b243f82a2c2b8b9d68bdd505c6c2fbfca36f53333b91c1f765d13b2b16ae48ab9b2d12ae0f1255f1f24c99692b71c19341d2e4776562dc543f5064fe9c7f0df630b0097dd62ef280f42b7ab50e53a42b31cf64064cd20ba1f044e24197b1eaeb1f53d5d7b3d7ef7de6ee682c5ae9f24993b11f42e627740af2e8e9c877b095b057d75714c60000012800000090f00a0370a0cd5ec57d9d79a44644cef128fd247847a671a4de662325cb879934430fdfb488edfee63fa4a177a76a5bbd7fea6aa4c3fbcd9d1926ac271ea7235fd3acd833d974be88a9e8df60c272a2a853d6a1876e84cb7857d2fab74086dfb7e56b205712d19a21e99465ada71395af3303ccb51417da3375faeef928696d9dd86cefd69cc400c166a75e7ccf78dd5000000090b085aacbaf54e57349dbce112679c344dfd54fde70c15d8c0e284c8c70f37dabf14207e638287f062c349e8b903a33f0046e6c5695a1c973223dd481cea29b899e80db83fc05380779664157dd9679ddf6e1ceda231712637b1e527bd5a0f14fa398cd793aba15a21a4776413e04139486b8e5b4924b0b5b0663b767dc5c44f3a3fb506616eb9627e72be73a445df38100000128000000904e04527a1fbc4918fb0f5dc938d33445bd450ad98eb25e3e1d34bf8aac57f60b2abab9fbe140c2784ceefc2e437a38ca309c9bfd2071f3809a28383e9faa063f57ad8667838dd1be75ea2b3e299cc4e417bb5705f1c22bb59e4a7254a6d408ae8f55772b4f2007ced955119173ce0e00a632de4a49e0a08414b308eb02da4a55231f8c0418131a63596955bf270f38350000009057b894cdba6c674382d0ca850af5dae67fd1f3dfc55cbdea681145d7bb6187ff3a0dba30eb41e19b3e6832c6beecff3350f116211f25c509918a4980c1c214bfee81f2aefc930c54004f0dd3263e106a002a12fb9c7796125ad555a1d7b37f5149bd1a27f28a7dd65ce85026647d18d10a0a3f56747e96f7b1e138a12bbbfe3b9001e0eaf0066c32a2d3687fc62116860000012800000090d4461f6118036ab697daf4e90fa5cff8c853f0b54e57aef00d9d4e81115576b4ab3a86cdc3653a3efe7dcb7fa650f176bd557b02b03cc139e9a3221cf7d3a7c2150bdbfb3c879d67e2460b69fec40a0e42ed5c0e359f6f91bebb6c506371b7338587e3d0feae6f7ce555e74da6e76302e62bbcac25d8509f3bda57e323ef7b166f1d2b391d2bb6860efdac1b809b9250000000909207e364faa20d0a1115a269393f9d98152e0019ed33b3c7156d0ef9113be7138f900c4d72e379426bde9b98e1aedc8aeab18ea9e756fa4eac2908038f003435e987d22132cadfaa9e430e452d78032e82a7ed64815063d08b4274c7cfac1a9520d10ff8140565f5986c9c2a135afee4f4d4bf19b1904acb3318d720584e3936de56aca310dd26b714f0a7dec1939b040000012800000090781ae925b7e0ebd9cb87e718b7c7ffeae45651552404fffdbc1df7d85686dd227cb4c1de22650479d3bc359ec4f9e81c79da28757035088b0ba2d1f7b2a321d1abcd3a4bb8b9010906dc7450b8d012dbee1d41e5314a7d094f797425ddfafc8728c6422c58805c0f9d698be9fc320ded25d0466880988f2dad98e0256fa89c288d8e99569f588cdab93ccf67cfab691a0000009092aa76893b5cf1b10cecea31187de1b6190aca3c4941659f077cd00ab9946f3192a2e9cff6a743b51d2217dee81a68541ce18b321fc30d4f5017f866dbab792dd00cd676ef3ac107b0e02420172a92d9f4b252a6cc4dfd4e6d506d1cdfac701ba017d16f692702e2d960c0c7e27794d30aced94c9661109af94d2381decc99211e8bc4dd401c6f2e197ef3057930655d000001280000009069825afeae91c9a0e5db75e73f9d1a1a24ff8398a6b8fce60791b611953a12eef7f0bdd08847bf4d7041aef2a144d2038aa8fbb78fd51a745b6967293dafdaa4f46cd6d0d06d53801cb9cd95c192c96183603c45c304a3332353411d8efd1f79a974f8993fe4e283975e9eef3b867cb60995a74b83383b688c102a4e0d78c6af78ed45a1f028bea71914d9d57c7ae79300000090fd9decd929d5172e46f45ba17fa6c49e4d265fb231e26df16e3f9a1baec1bd6c76a304217741ee8e638dc21c2a019d5d0cba632e13ddfdc7bfc615fde3895aec4ca4ab22291f5dcfb88f27b5d739d549d08d0db6f8fd27a095b6ab9d11728ece355a764e06f0822927716e589ec35d12123b316f1849deb6a9581502a2abd08d4a37b76400c65358d30cf4c4baa3a1e500000128000000902106ead6df33bd10b164d22be5509b1e0afdc774f1e1ff78ae3937c49c8a58c59c89ab7a254fdcc2260f641da11954b053d1869f8aff87c4ca2efb626e1a7f84c10533c1e65ddcf7e7cff35e1c3cd6e696317a1a37783a13cff580b2c614d797a03392c98f19bffa927dbb45de09a3dc25adf76acf2a041e253eef08fac1cdbf8e603383166b7a774f7175070e6c6a600000009072a7e284d2e397b224c4b8f8a20a52403abb3b28a8b788e4a091090c0b6fcbc1fb3539ad4458307722f696580048c4a492d201aab14dbd1af074d002858c522d195ee0bd0786c834a6f6445b476df280c5bea5d01e6369bc12cc2c3ac6e697de844671056cd7263f5604a835aadb448f79300cf927246b8b5220341fa78a6f3dbcbac09550a6ce546131822cad0621810000012800000090dd4294cd8f8c449ad02c6ea497fa35bb7111cccf47686d0b90d118145c1e04dcde092cdf362d408d95ef8925c9dde1ded107c16f4ac9ff46d39d96da2d7ac35e2b3e70583c3cfd6c34c9a9f5ae4a437b49510397a419f5e546ba3456763fdd8252ad584ffdbd5fd4ffda3adac48b8375255def1f7131eff0617799ce406733579c856618ad0db4b4523970c75e95de9100000090af2fd32856e57805ca74674c9d8e6147df5fd4e9367b7d43948d593fd825e10a09ec6066c96ed49ba88d680d7d2a8fe6a7d5518d3fed621fd71f37fb8ee851356ebf4d7efc2905693ce37641397880ffddb16bddd170b29a062e42b76b54171ad1b92c16dd50770cf954905e90a194c4bbbc580a13b432ba581a8456ebb371d337efd1b2f24c2812d51558c88adede8100000128000000905807262584c7578162ce616409b887dd2c861b7cc4e8f19853c008bbd4acaf0f19db1e572398ececfdef22aec0ae7030e7247fe8451984233c12b61b4afaf5804551d46100937b25b7023e5ce39a4f1d0babd330384e38030c2757abf5a7ec092c26349e1d54b83a6c0263a441e24090806168a061b708136f54a949598359283853f4c3c4abead7f6985d4fc393677b00000090ee85daf522efbc2636c7ce5c2a0ec0c99e3e905b753c34d5e6c5db2ff50c82c5aa57de538c88b78bce4c2c1b3f9a412aeaccc8a243694452962647fd3c8a0d53a2eec14ef97e1e224894d3e6db522850ac5c55d0b244bb4aea84143426ba6bfa4f5572a1ba7ba91f34e28bfe68107e34a552f3676c53b34e609675533fcc293d6e6e56ca9648f614cee0c52cbf6e03f900000ce4000001280000009008d66dd316e03c11f2f6f80d3970dc8c516fa76840e4074f4e19e0b95b59a0aebc11492effcdb0c820647a729c67ed95bf500412059c80ea48d48a26705115e659b893ef589d37268fac8809ce28919a4be38cc9e1f564ae77258a4147de79ead0d27dd159679f0f795b096e133eaa2bfff9900462c766b12b9d727c9f1981b4cbe1df4ca5da89bd4283dc4589a0642000000090c47110c0f4fae3f396a2b362bcf4e3c8a9d65fe0a21cb68d3841654a594561c12bfea7e3be27ca5a2ec93fdcff6258dc8215fed3305818baa19067acb03fccb46650250b15fd18a23f4cc1e3e62becb3df759030f92493baabc546feddb86fdea8f42749f994cefef3662465290dab5e53614405c899e27ee60b884823aa06daf2c18ffc69777040fccad493d1e5c84200000128000000904cfd8f43502458ab8ea4b7ed39a2768cd125681210de2ef0cefa30eee2c408642821bf9b19085330d22b43763c3b815dea6fe6396d3c8beaa80a795eb0ffa71e5af496632d65ef83ef4cc14288d20dd1000f6b024b26f5ed3006c6b1eeb67a3049b36fec9c76dd973745bcfe3bb6f37ecb6d08f698cac4da7ce4c781903e3b4e0fc3f3d15000e364adddcd15eaf961f2000000903efe093939d9ff98a01a5e8fd0ab75ee6476d77e279bee266831f6b15061278e9486e5d7d5c627969845f5344607a2eb666a0fbf8de1b24d1fdbd98287c037efa5877e20a4a53163a0c86f6603fb139118a93676525e98a105cc6b1e19ad925d9e131360a74aae10b31104f823e74ca6b16d485bcc131ac037aaba2b972fd445d1cad14efd641dd41a483236239c3cf80000012800000090604771ddf429cf224d4356e7446ec9cd85463670428be3e71568c06f6a9bbfeb9312f5b9cd803c9d36b9992f142a23b56c1ccd0f72b42a1bdc733ea0aa9d71531bffa31ffd6f0a2bd62155531c9ff88b9335846f76052c80bbf28fa854f8739d30e5eb965cc76d52577eed0aacdf17b49692e419cb2b3caaec46db1139e4c970244b030dcb61055d7b7db90bede37c0b0000009042e6ab0a6d746538d1bb5ad5594c60b28d89daa57b2b77c9a40090f69cfead34eccd04efd05d612586841b266c692d2f383a743f8a0ea860ed8129e7a2bfd916290021fc80fdc8c701ecab322cd98b1a1d0446d553da699ba8e672e90fad07ada6acf10d12653745581dea923b1d86b970966fa1d364890acffac86956efc5b30a11cb0f44bca296014e9a33af4ea5690000012800000090a7a6e87fd0cdb332a67c397b738c80deb4e3ff72cd7a1b3aabb891ffb5ce3d25f74e8b75816ba2b1ac000ec3034bc8da4b598d635d8f54d04c595d216b6e037f053d43233da9cf6f672ff6ffc6f6b729d6b0aac4a5ec4d5f847a717e75d027ed0dd660e502258408a639519fced9a1bc9699643f8b52582738c9243537d0945381c416af9d6d2e773add87b4942bb9460000009047e32fe86a0742d9473b758910c78e49372efe69852d111dbbc7da54b9bcf522087c4ee5e7396f2b4702bb5379c21c5a9400b7ddd1d40ee77c9ab05898fcbcf4ea65288f1b73c45267bbbde0540e2ad4af121924eefe85a3d54cabc7b10fb63b9fe3c429b75c9989e59f033df3e064b6c6237779303140bdfcf25653fe92348516f2651d6d0bb18faeea85b94bb660b9000001280000009078b9e99817350a9491dc6867f0cda5fdd9b39d1fe0a9ed58548978cfcc637957ab82784d3b2c30829c7edd6118bdf0a877635660a1d183a010d31390839af04587346dde9980e5b824a71f4e4148012d089842e4e59d5d9a89d6d78e7ec0e2513e6322b0977e3cd7b5f08d5d18cdcbf5dbcde57b87768a860cd76613fe40da8efc0618c34c12e409626b9c577fc00e4b00000090487671868ac16596ec7de56e973381703fe43929e74ff073e9c963aa22bda9d6f1a04e093a379e586f3d76954e318b6df1a823897ee5e4d7c5063597e130a81eeb4c9535a227c45974e78da48e0f7026f1e689ade61971444a449995919cc7431fc9e900129866c3a2ab7174f72cc8ed74b91e6e4c025f693045259f8c9e4cb1d32504c38443236025c37c4c7c0a5adb0000012800000090e734aaa308d6b54f9d7a52fbe20503bf80c73d593365fece0bf1aaaabbe87770833e54bf425e71ffe12ecbda6e9e1df258f94541f0d7f94fddd506653cf122f7c5386c659dadcdb6e6e92bdf9824aa69f775d39caf5b99b73226cbcbd95b82d070c2400fdbf0996937e67a5c513c3946e667fba983561b48a931e3cf3f68254e4f2fd86034fee3abcd82c97ecf88348700000090b96d8f7757738f0f7f58de967313433e3fe1733bf4d5c15a2078690187a1acde17ebc915b23cbc6dcf74219e3cd63362fa003391f19a3a92bf26390d441c1a1c69809270fc9d61da00d0695dbf73d67f37050d622c773829e929b8285955e82f16361fbbe9113658235b9afd0b7a784781b5bc6251126453aa973943410f16a85910376f0b609292e9b9e46104054f5f00000128000000904282cb9ca7cec0bea85b1a8e83379b5365bc8a843a3d79afe1e9d5dfe92184920e375d084c5c03d3d27d4aa4f142ccf6c89ceffaeb3068745e2c9dddebd6ce7dad36b0e76ae97feace5939660ad9dd79f8d75fbcb740a2254c39b9bf2787517cfb2cb48a0e26228f085e85dd15b7e873058334594d9fbb8e877ee498fc11ad0e430e3be518bc9e0c1afb4ad652ed2f9a000000909824f3e20d39014fe1ce0c25d27af4d1fc16aede6aa127d241ab74b62aeeff33691377f976b31216fe4d36161da0f8c7549047c9dfde650a5c9ae9a5357fb15c3e7dbe296ea10d76b46612bafe7824410bb297eceb346111a42b36663015e421a976697df83943d2365bf559b7406e147403547f78ac7b8fbc797275800eb6d46078e862c501eaebc40f16c837b4bba80000012800000090d78151e7a08ad4e11b8a2fb201f83ae713fdac255819cb3c024620025484b20fc3748b713279b0dd26b37b2e38933ea7039534b4e0f5974a4f96ab01d8181dfc988b9f5f495bac0a6ae67df7053157249f7baaf0c91a284db4d1d4345602134382388b5b4a3449214fed2956b221526e2e0dd60320449b4d725af164b212b69b8e0c4b7089c3a030407b9e861ef132c200000090a0539b668cca6c01fe2ed23f6f2d5df8145a48af96d7dd3dbfe6e675af044114c69c44ad4f150b889cbfba7eea026e9ea0f599c4d035d7b709ece6ad5988040a4d51ab2029d9cd88e4b791fdd0cbb6ac36fb943ad0b80e6b2bf4ece885b1048dd8d9b1524f44b75ef82d3fef0826c5d043b2fcf253758cf5e372a5b87d1cb94eb4cbabb547a28d3b8ee124ca5581bb9c000001280000009077ac86a4406764a86f704ff7139ee1f7a2f7e10253ea15f544502be3dd4eb0f4fc2a75653bb060ccc4d03c442f13361ab492775ea71761e90a7113ba55e3d5a10bf43f23fbce60e453aa76ef098b9c93560cf002bf2a52040f12a1b54cfb0c1e47384e91a05d774f558c47a01508e1b0b102ec96c16c2be6ea6d06c8fa1b29aecd8beff997fc4f0ea947c41be6dc7afb00000090be51c1520c12abb9c70648e88aebd75f67f72da3b12e7450a780ea1a8e3082b5bbe7db2ddea227fdd56d3312a3e440f3c1de5d7a1cbd17ed1e71b263fb50e6722c48d5005df3a9fc8b524c64a2de0cbba8dd04fec097af10540a193e0ceb30380c1e127931d154f19310644472722de34551b100eabb2146354debd5dc72f4dda786b3efc42fa91daa612f4986ca4733000001280000009005f1417483ec00421bd576190ca8d530a8b0ebca2abb3995897ba2fe24320056312adc6d898c0c8dcabcae7aecae0970e5640b9664479948de28fa79ca53c232044f5e97331d53dc4c177cc5df9bb46b9a9752b3846de4a72524ee262fbc12f2b25b57ea1da2d1b05ef5a250af84f5f1fdaf2157ec8dad2ed3bc1e5169fd9866be39bb91961bda0fd7fa1ec3e9b08bb4000000907f8517ea4d3422fc85946ad1e31e8f25d2a2a1374ec8b76917efe37eae76771c416cea99423ffac5ee56772105b8203db836ae6c5c33f8ccf371668f516eafc891e4ce29e6c055b473c27330e9e40adedc722c043e9aa74d64d98ce7e363fe2c36eafd9f92add125e075bcf6464d4d3cf35d335a0a70f07ee53e736d282004f45879f9015f0da7a1ad200a3eef7ba0c60000012800000090eaba354a29c93d1f132a1e369079a6db3ba8387cf8f02e36355b5b0997eff35d167ec7c07a7b20013d7665632ae9f5ae2e46671dc912ddfbe3e0b5c7c1db56496f3d464b7a741e764142cda0e2d2d5809c9c4ff4a095cfcf5e8f6b6b52aebf94e2454a7041aa434739b7c98e937cc62877e7ac129f07ca626e71a126880beddd01506d8c7d71b3d35679565eebad27c6000000903129008169633e4de7fc916e6dc182da1d8748aa8b736120f9498c842ef44a3a0540f78e2f5a0c817f38fdde511d5830a0bc185fb760d3581c127038546032768c0ca4d57821496f147047aa7a401171a4bfe3475c8dee1ae60d6752044946ab8181430484b0bf8537e17ec9856129776fb730cd06818524d3d96f8c8c0625b7e51e86f1308adff7423443ff0853ff3b"; + hex"0000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000020efbe2c7b675f26ab71689279908bbab33a6963e7e0dcb80e4c46583d094113000000002adc67712c2f7afc4e827551236adb46a693d572fbb29f3993dbedbef8d2d87d0000002027378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda54100000000135bc361c9ed85a1b86f54458c343d580d84efb1e147cd568fa6abd4231a402d000000010ef76ed2c9210c834484aa185fdcfe317880955e8594b319f701f39f65846219000000012b72136df9bc7dc9cbfe6b84ec743e8e1d73dd93aecfa79f18afb86be977d3eb27378c30a97c642a3b78bd34c54beac15a4dadcd7a3378e66d2384c485fda541000000000ef76ed2c9210c834484aa185fdcfe317880955e8594b319f701f39f6584621900000001000000000000000000000000000000000000000000000000000000000000000000000000235f4e41a2440aa28f9ac14e7eed447ddd2e539179cee4c0941e6e408d2443e50000004026f32989eb2870f2ed00774f54a82e8266fc2a2b3392b64e8199aacac71aabea000000600b6abbab461cfb072b267bfc1ecf8dc3c943736341baf11c5c829e345c49b509000000041c1b17b2cb59cc2314fb65fe31dcfdb1b014630fab522a263d9935601ff78a5c000000022d02c42204d7182da24e9ca1e3244fbff1e00efb8c85ee3a1ac9488fe2e3aa9d0000000229c0d0effa4242b8d2e372cfcdfa8bb57160715fa3640a3404a9bba93725a1072fbbd267a1c9b23b3ac1609b2c2a7961a0338c56d62607d5f8d6b6a29e7fe4cb000000101d223d0a7bbe8cd9eace6507ee0fa9dbf84565685a1c6ceb978cdd46c47025ea00000002000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000012100000000000000000000000000000000000000000000000000000000000001220000000000000000000000000000000000000000000000000000000000000123000000000000000000000000000000000000000000000000000000000000012400000000000000000000000000000000000000000000000000000000000001250000000000000000000000000000000000000000000000000000000000000126000000000000000000000000000000000000000000000000000000000000012700000000000000000000000000000000000000000000000000000000000001280000000000000000000000000000000000000000000000000000000000000129000000000000000000000000000000000000000000000000000000000000012a000000000000000000000000000000000000000000000000000000000000012b000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000012d000000000000000000000000000000000000000000000000000000000000012e000000000000000000000000000000000000000000000000000000000000012f0000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000014100000000000000000000000000000000000000000000000000000000000001420000000000000000000000000000000000000000000000000000000000000143000000000000000000000000000000000000000000000000000000000000014400000000000000000000000000000000000000000000000000000000000001450000000000000000000000000000000000000000000000000000000000000146000000000000000000000000000000000000000000000000000000000000014700000000000000000000000000000000000000000000000000000000000001480000000000000000000000000000000000000000000000000000000000000149000000000000000000000000000000000000000000000000000000000000014a000000000000000000000000000000000000000000000000000000000000014b000000000000000000000000000000000000000000000000000000000000014c000000000000000000000000000000000000000000000000000000000000014d000000000000000000000000000000000000000000000000000000000000014e000000000000000000000000000000000000000000000000000000000000014f0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000016100000000000000000000000000000000000000000000000000000000000001620000000000000000000000000000000000000000000000000000000000000163000000000000000000000000000000000000000000000000000000000000016400000000000000000000000000000000000000000000000000000000000001650000000000000000000000000000000000000000000000000000000000000166000000000000000000000000000000000000000000000000000000000000016700000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000169000000000000000000000000000000000000000000000000000000000000016a000000000000000000000000000000000000000000000000000000000000016b000000000000000000000000000000000000000000000000000000000000016c000000000000000000000000000000000000000000000000000000000000016d000000000000000000000000000000000000000000000000000000000000016e000000000000000000000000000000000000000000000000000000000000016f0000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000018100000000000000000000000000000000000000000000000000000000000001820000000000000000000000000000000000000000000000000000000000000183000000000000000000000000000000000000000000000000000000000000018400000000000000000000000000000000000000000000000000000000000001850000000000000000000000000000000000000000000000000000000000000186000000000000000000000000000000000000000000000000000000000000018700000000000000000000000000000000000000000000000000000000000001880000000000000000000000000000000000000000000000000000000000000189000000000000000000000000000000000000000000000000000000000000018a000000000000000000000000000000000000000000000000000000000000018b000000000000000000000000000000000000000000000000000000000000018c000000000000000000000000000000000000000000000000000000000000018d000000000000000000000000000000000000000000000000000000000000018e000000000000000000000000000000000000000000000000000000000000018f000000400000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000022100000000000000000000000000000000000000000000000000000000000002220000000000000000000000000000000000000000000000000000000000000223000000000000000000000000000000000000000000000000000000000000022400000000000000000000000000000000000000000000000000000000000002250000000000000000000000000000000000000000000000000000000000000226000000000000000000000000000000000000000000000000000000000000022700000000000000000000000000000000000000000000000000000000000002280000000000000000000000000000000000000000000000000000000000000229000000000000000000000000000000000000000000000000000000000000022a000000000000000000000000000000000000000000000000000000000000022b000000000000000000000000000000000000000000000000000000000000022c000000000000000000000000000000000000000000000000000000000000022d000000000000000000000000000000000000000000000000000000000000022e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000024100000000000000000000000000000000000000000000000000000000000002420000000000000000000000000000000000000000000000000000000000000243000000000000000000000000000000000000000000000000000000000000024400000000000000000000000000000000000000000000000000000000000002450000000000000000000000000000000000000000000000000000000000000246000000000000000000000000000000000000000000000000000000000000024700000000000000000000000000000000000000000000000000000000000002480000000000000000000000000000000000000000000000000000000000000249000000000000000000000000000000000000000000000000000000000000024a000000000000000000000000000000000000000000000000000000000000024b000000000000000000000000000000000000000000000000000000000000024c000000000000000000000000000000000000000000000000000000000000024d000000000000000000000000000000000000000000000000000000000000024e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000026100000000000000000000000000000000000000000000000000000000000002620000000000000000000000000000000000000000000000000000000000000263000000000000000000000000000000000000000000000000000000000000026400000000000000000000000000000000000000000000000000000000000002650000000000000000000000000000000000000000000000000000000000000266000000000000000000000000000000000000000000000000000000000000026700000000000000000000000000000000000000000000000000000000000002680000000000000000000000000000000000000000000000000000000000000269000000000000000000000000000000000000000000000000000000000000026a000000000000000000000000000000000000000000000000000000000000026b000000000000000000000000000000000000000000000000000000000000026c000000000000000000000000000000000000000000000000000000000000026d000000000000000000000000000000000000000000000000000000000000026e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000028100000000000000000000000000000000000000000000000000000000000002820000000000000000000000000000000000000000000000000000000000000283000000000000000000000000000000000000000000000000000000000000028400000000000000000000000000000000000000000000000000000000000002850000000000000000000000000000000000000000000000000000000000000286000000000000000000000000000000000000000000000000000000000000028700000000000000000000000000000000000000000000000000000000000002880000000000000000000000000000000000000000000000000000000000000289000000000000000000000000000000000000000000000000000000000000028a000000000000000000000000000000000000000000000000000000000000028b000000000000000000000000000000000000000000000000000000000000028c000000000000000000000000000000000000000000000000000000000000028d000000000000000000000000000000000000000000000000000000000000028e0000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000052a0000000000000000000000000000000000000000000000000000000000000521000000000000000000000000000000000000000000000000000000000000052b0000000000000000000000000000000000000000000000000000000000000522000000000000000000000000000000000000000000000000000000000000052c0000000000000000000000000000000000000000000000000000000000000523000000000000000000000000000000000000000000000000000000000000052d0000000000000000000000000000000000000000000000000000000000000524000000000000000000000000000000000000000000000000000000000000052e0000000000000000000000000000000000000000000000000000000000000525000000000000000000000000000000000000000000000000000000000000052f00000000000000000000000000000000000000000000000000000000000005260000000000000000000000000000000000000000000000000000000000000530000000000000000000000000000000000000000000000000000000000000052700000000000000000000000000000000000000000000000000000000000005310000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000054a0000000000000000000000000000000000000000000000000000000000000541000000000000000000000000000000000000000000000000000000000000054b0000000000000000000000000000000000000000000000000000000000000542000000000000000000000000000000000000000000000000000000000000054c0000000000000000000000000000000000000000000000000000000000000543000000000000000000000000000000000000000000000000000000000000054d0000000000000000000000000000000000000000000000000000000000000544000000000000000000000000000000000000000000000000000000000000054e0000000000000000000000000000000000000000000000000000000000000545000000000000000000000000000000000000000000000000000000000000054f00000000000000000000000000000000000000000000000000000000000005460000000000000000000000000000000000000000000000000000000000000550000000000000000000000000000000000000000000000000000000000000054700000000000000000000000000000000000000000000000000000000000005510000000000000000000000000000000000000000000000000000000000000560000000000000000000000000000000000000000000000000000000000000056a0000000000000000000000000000000000000000000000000000000000000561000000000000000000000000000000000000000000000000000000000000056b0000000000000000000000000000000000000000000000000000000000000562000000000000000000000000000000000000000000000000000000000000056c0000000000000000000000000000000000000000000000000000000000000563000000000000000000000000000000000000000000000000000000000000056d0000000000000000000000000000000000000000000000000000000000000564000000000000000000000000000000000000000000000000000000000000056e0000000000000000000000000000000000000000000000000000000000000565000000000000000000000000000000000000000000000000000000000000056f00000000000000000000000000000000000000000000000000000000000005660000000000000000000000000000000000000000000000000000000000000570000000000000000000000000000000000000000000000000000000000000056700000000000000000000000000000000000000000000000000000000000005710000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000058a0000000000000000000000000000000000000000000000000000000000000581000000000000000000000000000000000000000000000000000000000000058b0000000000000000000000000000000000000000000000000000000000000582000000000000000000000000000000000000000000000000000000000000058c0000000000000000000000000000000000000000000000000000000000000583000000000000000000000000000000000000000000000000000000000000058d0000000000000000000000000000000000000000000000000000000000000584000000000000000000000000000000000000000000000000000000000000058e0000000000000000000000000000000000000000000000000000000000000585000000000000000000000000000000000000000000000000000000000000058f000000000000000000000000000000000000000000000000000000000000058600000000000000000000000000000000000000000000000000000000000005900000000000000000000000000000000000000000000000000000000000000587000000000000000000000000000000000000000000000000000000000000059100000008000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003210000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000034100000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000361000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000003810000000426fcb9639d15aabe6d792e23ab12fb9633046d4be6911a60d64471d7560d3f6809143b7d4943a3485115d37e7596938a16c91b6055f3837640d8c36b8303bb3c06fb5fb553496e5e0b48834087e036acf99d6d935dc2ebf43c82788cb5ed1c6a2f4bd77ac2bb5474d48c2856135d18168cd6f69f77143c60b3cc370319419dac0000000000000000000000000000000000000000000000000000000000001020212121212121212121212121212121212121212100000000000000000000000000000000000000000000000000000000000010404141414141414141414141414141414141414141000000000000000000000000000000000000000000000000000000000000106061616161616161616161616161616161616161610000000000000000000000000000000000000000000000000000000000001080818181818181818181818181818181818181818100000010151de48ca3efbae39f180fe00b8f472ec9f25be10b4f283a87c6d7839353703914c2ea9dedf77698d4afe23bc663263eed0bf9aa3a8b17d9b74812f185610f9e1570cc6641699e3ae87fa258d80a6d853f7b8ccb211dc244d017e2ca6530f8a12806c860af67e9cd50000378411b8c4c4db172ceb2daa862b259b689ccbdc1e005f140c7c95624c8006774279a01ec1ea88617999e4fe6997b6576c4e1c7395a22048b96b586596bd740d0402e15f5577f7ceb5496b65aafc6d89d7c3b34924b0c3f2d50d16279970d682cada30bfa6b29bc0bac0ee2389f6a0444853eccaa932b2a60561da46a58569d71044a84c639e7f88429826e5622581536eb906d9cdd25a2c0a76f7da6924e10751c755227d2535f4ad258b984e78f9f452a853c52300e212d8e2069e4254d81af07744bcbb81121a38f0e2dbed69a523d3fbf85b75c287ca6f33aadbac2e4f058e05924c140d7895a6ed167caf804b710d2ae3ba62b1b51297b3ea37637af6bd56cf33425d95cc5c96e9c2ee3077322fbec86a0c7f32c15d2a888c6cc122e99478c92470a1311635142d82ad7ae67410beeef4ae31f0902ba2fb964922a4610bb18901f7b923885c1d034da5769a48203ae6f0206a92855e2c01ddb3d6553386b5580d681b8230fa4062948668f834f23e0636eaff70aaa64519aafdf4b040bd2f9836e76b9dc13cfec8065dcdf2834d786e06260d10000381000000e00000001bc0000009032919c6c48569ad3995dcb38bf54bf0a64eaf2ab4a09b89d5fe62b546ea493cb7e154c8d7319cc6741e9261c18158e9a2ae25a94035c7f40013180d9f0677d86b20f519aec6e004794170760434f67d6290b14b3fea0d8fa492168cb4f16db80e0175f63f5d30176012ed150cf4dc8eccb35226069218640bd5d5f1169891d64bc7c8cca5a28ab43356dda22635b469e00000090a64ae8b0b581f76e18912727d134244722d5f1a1152201e11af9e17b6386501cc229830d13fc61ca4f3909e1d044558278c4984df6017c2490791e2fcebdbc383b392fce281e8038d0025a8414bac2df7562752fea2197d04bb267ad6e60b5cb269eb54db977d4dff99e752694a816a3bb2ecd63ff62dd485ec57c3f6d30d90fbbc2a75f7ec6892c9aa64562a4705d58000000900d839faaaacf7c3b79f8666bcbfab5e541ed111b466363d72115aa52c984d3aa2be9ce56e1f9fb5979d5c1ca9cf7dd659657e22788ad2f785ff87388068dd8f5b17cfce021dc7f86a547b53ebfbf1ecbd05855b26e3f032fc77838310cb0ef203bbb801f5b3674921b51302618386411d1937232aeac35ee35916a1e3c5b7abc51e95c87c933a67f20717fad8f9a17b7000001bc00000090fa7f303a3193e77865c057fb17f81ab062c5c42acfcf3850fe53a4d79c0ec2d41a41aad98ad84b67a20c7901708adc8ce8fc7b224a5f794bbcd56c13af92c5477c787c07c90c0b45365815bfd5cddd643d3dab4d849fc99a168bf8930b470a1dc7802c06a15a833c4a71eb908bb40d7664018e009d0df85585b925572eee9dfd59fe17bb1c987e6c68b1c737622945c30000009060030c28dfc1b1c4e1aa8b5acb9c422faf2061961744ec6c843f0767824a64d6e4ac0b5e1952fd92cea37ab9d71e3ae4b7bce4aa22206d097bf0799f292c051a3d941af630a012c9467dde09aeca2a01f26bc9353639a5ed21dbd32fc535ba5c455aefea2fcc7ae3b23b10f57b92c3632cdb1c7c526d55026e2c788b491b30fcc25897324b9ae424644c178cc272445a0000009012350c4eaa6d8ee1d3ef8a6d04764ccf617bad3929aa0b95279496c3de694af182ff27551997c27428ef9d39f8b04b9a56333850898c7b44b75d65833508626747d46fd9198d34802d866fa219bfc86d7efe4a02c2e2b2c61902142c5f3c6035cb5373796e70aacea36219fb3c11604f98c69b62fa41c3954ce91f81cdbf178ae695cbdf1063c374fd2411b5dbf1e25d000001bc00000090669b3f837e8678fe80a310c884eb1982ceee50c02e69af4c324eae776b778b95caf6f4dd5130f6d86d855c02a89b320116a7168510739e056e863e4daf4e19de6e9b358c0b9af6f9910785ea3a634a2bce01c91abbd26369e801c2e59b9fa5ba07b87633f036c5e6ca5f1410b57a1c97321d1c78e432fac44df10a8c6cfd92e2ab21c9c104e645342cf068dd95e1d61500000090c6114d81b430e49b3f1d334eaaa772337c7933f186f5c19507ffb03d5990629dd83057865cfbce3def5197e05dacd6282ca98b3260c50feaebe0caa8ae7334e08eb260d3dfea44b192bba1702328ec5c2923c908fdb309ce9860b3b49f16b7cd20fc82e399fd27332afc4cec6f729b4c7afb4b8779092df1e8e78d396c9e5c81fcec99462ff2d1ce817176c5155321730000009030b3e7e792982ef0a074b22b0b1d630d3ed0b4e4e84787a363e2b8361bdf6159ff78d923aec5a32a52395a23807ba1f5056c9af302c41dd8232e7913465c076e97ab51c077fc859910ce131e0520288d529bbe19e8bf4c75144f705943db33dc310bcde2eac64cdf8306dce09008366e0027945cc31f4158c397555d3543882c0c90497119652d36500bb5ac8688bd6b000001bc000000901f67b7d0079c803d61732410de021b576bbcbd611d36624af5d12c34db9284d5fbd1a2204fa791eac5aed12ca3def29d02e392b9b396909518ee9e12bade1290b67b93879866c93ee634fc74de12fd2c5b72b8b88ae268d160eaa2a4187ca0e5bf717589fccf00bdf738ee93e18eb656ce215adff7597c1958942c040a9b2ae305d3b1c8894c49cd43e9cd9c4bf4659200000090e039d0466d3b87b024c22613677d52a6d802d389b554b9e1a1de6db54f643485af5679a9d1d4d8b27259e3951e8c4e9191cc003aaa7db209938f7009765f403ec136859fbd41f5cf1dfa0556b4530072d333ebe5f317ed48f3c610fd09a0a5389aa24b92be7eaaf9c7af4a6e39cb0bedb3eca77a812e5ce8b19a18c9a4122f9cc83f2e5eda063bf576e7b7e502b0ca35000000903c0b11b374c2e98fe6f1d29b72a2d04506cad0debd584356a17daee8a72a13071e58327137fc0eee19f21ded60baae55a76882c2d8d81d7363d03f61d38d89b613222324d433651f595c3611b0661dc9d19e6fd51df22747a810d7d8ad4de07c201502dabfc9a743227f7073055284fa9fd64a3f9f0adedbd0a35a8b274fec74343b810aa4a2fe2f70f3082b695f5d38000001bc0000009078ccb4ecf4d59cbc95dbf42743b3cbfac3c5a00d08a59e5b6d37c476a6c72ceb859ec4ef0bb4cf5db82a73af1ca2ab67829710ba5a6f862166fb7a754a93400434217d6d8fd0ab54f60ca82e2b541684ba5262c186e8811764891e841cb1977c712c141ab5d0425ea6e51813fd46d6699acfd9c314aec104fba27f33c865a4a8f06977c823c9a2a2531b3ecc11e3f7b200000090d3d3ff59fbcf129f1e782bd5d0520e963a1c8be7972f5a1f1de11372a722f24cff6e5141a44fcb3a71e20dfc0ab068a51c85efc4c2948415c99877649764e36fc8aa257d32dcb7ccc14185ac6cfb8559d94c53b6c2acb9ab399f6daa3c9a16138966e8ec31838a0ae2e099550c6831a25ca1715022229656ca35cd932a7afa5f838318df47f8c4e3be6695f61ce1d75e00000090e20a131283a707113c216e677b844a72e96484f9c62c16b2e9bdeffae9975aa15fd8c5610ced4505dc51cecec7ecb38c0de915316908e35af445f9012651cd623ce9400aef48dd980b3a1798f95e59428c5225f3883fe11e29653c6cd83f04c47d5db50cc30d2d6ef6f7fc794db67648eccaa7c79af87183775998557855c95247bc99736360d1e5f45f4e7acbc4eabc000001bc00000090e44e831c63efe672ceea838719aa748a3404018ebed3736948121cf5ea66e525ea6b86fd92778be4abda5f153f14cb485c5d4e2d99fcddab45bfaa48053e722abcd3e9ceec5ddc813b5dda943e0e04511e4dbdcb6a159ae1c407350ddaf4fee745471958900139a827ecbff5701e209201cf09b7bd788ad7cde71b1b937a7db8632ac1a9a09f0f5923fcbd567d58d7270000009097e8b7e7dd5656ac8ff699b939d4f9b725f77a0e865137730509a1f4c4494fcd604c5835bbbb963b09ca81121aff5ad58af690ba8f569a134f77a3e1b482a970e83db5d35c16e7e5f1ca1a53c877979d11ac128c5d0d8763953dcf19d4ea483b4e711ac14c7ae9be1977cbfe74586eeda135defdea313336b7cc027b19689638a1083de1322c7de6d5eb4a6ad0430cf90000009004da51e829eca1ba32d643b64c55e4216a1d5a72ffc28fe82fc487c28147a4c8157ac97c9f1eccfd9f44802ca941fcf9b80dbb4933567a6d07c77dd454b27c14b08fe0a44b29aace45717e59cdd5a29d8e5fb84a7d826994193f222e2aff2fbacefb33f8c66123b54b70dfce248052f38e5851fce0c9bb7bfda11912bef7c1e6933737f387911fd6597d2fe47cf5263b000001bc00000090ed23feff905e99d8ccf57e7bcd81113e59d8fa9e3ed0a396f40ef2fce9ecde050e81e277624e18cc63d13747ff86dae359de61d134bf5c65bed07b51cb394934288230220c42096464830f865907c830dfba93723370301a82cd51b0aa7e136e7a6efd05e69340002e7851c9868fcd79bfc44d600f30694cd80d3726e36adc1abfd1375299aeee7939383a986a9a950600000090e8a0277df93d8955e44770957102bd105c674381e88137b8ebb1df240ac944bb78651a8a6a987e0df32317e8b7a24951c5676da55ed3cc8c20e1ac63508fda4e73ca9ac8e11bbff6cafede14c2e2a6f0bad65b8dfe184eeaf11bf20c1070c52b6a7072fb47758932b282d8c0dfe3f5f93d979eadc5696b878254a72e8eefa4bbfa836345241873975b318b34f3201ba60000009003087a4774e22a77d429d2dc113cba00a043aa7ca12118d429e76f38f5d326f29281ec729d984682bc60e6c36ffcfa956f9cf5325fbd0d5f822b9ae89fae01f14d5e5d3b6b4013b9d73f2b6cca3c890a41521268ef4384947022bee5689a7ecd653ad06e277f7f5ec769b843db985cfd44bc9e428996fa3b2cdccad71c65caa65d14770536a89ac9217e23da6f9f44ff000001bc000000902a8fadaabd5bb94de0d968ca498a521f22f07c98b20d150a7c53b058decabcc377ac11e7364bbfc6d35be37e6f7128e93af80167b176f957dfc8b6f404a60b564eb804d7cedcfe0dcacdc8f2547ebee8e8d6c1f21f48f31d29e1d3bc19b1e19effdca933be3e8059ec3a49628f38fa732fb90389c261ad7da902570f36047e2fe69ec639514e578b62e91b704a6adc4a000000907bc14528fa34d0bbdbbba7eadd6adefc2e84b514c98e8e66b088dd68e3b95c7db6524034aba4e8cabb6f4b617a487533c9173260d169b2d3493bc4875a41413701eaf6802f8c134b73ef7075cd16af6b29ee0459e40ced1c3760335088ebc6504147db46cd73266bb411eb4f0e0b2720277cea3e3846e720a14f3de27e20f8f9c69139c3a0b21da816e1456f65fea7d30000009051867f83337dbcaba0e9048b9f4236b3ceaeb0ceb62723c19a39b5d95674fe336647775703edd689ceb375d76bda7fb46380d0ba2779d29ae9472e877d23cf31024485ed54ffd7f6bcbde3fdbbc8f9c296c3539f7ed5d8c3f7d800b86065e8c7c971adaec9f6a67e93f374b9d53e380fb3cdf8b7689086ce6e68fc10933afc801271cc41f41d4e72f4d9279a39c490e400000e00000001bc000000905ec7abdb571f75438855f49c61bb5b0536a6cc5039ad70e43322ef819d229cfbeb6ae7e327065ecd84b3a105adbeae9889d7774e79311c3047c306ee502fee5a44608c6f41c62373566baeba784202c192542cd61797805e0b6499e4e026c5bf4270d90b2eedde8ef0d16c189a740625dc5978352f977c089383319b972924149d49656f4462cd15fc03fe4c4eac06e00000009085df2a5a2dca9dd0c7db47523797586c8f071967c1ade4cf73407a1e64030f826f441f7cccfa3cdf8c8f67464f6b4b92f87a29f1df6461fe1529d60eae18daa5ca9579ad0621da5d865da25cb4b00527f53ab6dabfe1365b8e476f2e7cf23ac348f9d238b8ad6a062cee43a2667bba4f64705e524450387a6a27d1f42bb941638665324b8628110520a54cf89e03123a00000090e3ec6b1cdd993341df9e6fca1e87cee49ef0c562e2484e08fa7f3395db06f49ef314b6e967d959f8724d52d8d6080f8cf83ed3e4a278b71341de2c409e0099b645e4cd28d9a3562f094896a0087be8c58468d11896bd129f550ab0320764d4de5e0ecdb1fffe7ef94a48b62ea5d67790d370bee611946c4958aa6110c79512b4c825fd8cc612ee4416dea27413c25249000001bc000000906bbd80c8714ae681429925c1339daab4cdccd0b38a4b77f7ac1635848b4b208a4ca68157053ac7ef3f8784daa31df3a89d0a47d3674b71d68dfa1fd05ba31575bd33e9ff08a237c73e3227c90858010e1c28442e0304be0bf92c14af5fc0e40dbc61a9298dbe338d5c4d4c20fbdce40890eeb3ab2b178f766765d6d10a1d8585b668a21f8fd709bb8be150c1c9fca415000000902fd7e4c8c4a034be0ff2fb7d544b4238a1c5c0d7908d63e91e0409100a14721d57eea9b7505d93e245d9f1907538f55677ad91041c03fa494990ae7283fcef27cee8160f9052dfa5f337b6b6cc1c239f82fbb8c1aab4959582fd7eda08d699ac283aefd052191c6aa21605ed63fadf764e8f1b6bf8a5bf8f272db5e2f9b3d7080acd090486ff64532c20a9e345576529000000902e680548156f1a87ca514126d198b26f1384f0fdbf0684adad70f50257a4bc3eb047b09df002fa0b56304fb60a99091494100b3ad0d458761d22b65914fe4957a30b25a96fc30c0fa6819994a4751d00042596ad7d61a3ce938d076f3c64b33ab292508fd21843d42f0c717180d26eff1701596ad124af6770bd2adbde5437b0a3913771f01bb060705dc5935fe72699000001bc00000090856dbdcd28dcd6c005073a5ae5ca091833abc7ae70c8f39c71643c78dc095e06bb935c63593caf713a4761f3071bb78ca684a6d8f92c56f8a85f030e747176b6edefee6b9507bedbc566a40eea2f2c12345d73aaad5b0a0e58573262cb658604216945f84ba3418d6579ee7b054a478282bcd6f8c677e8f78d384a156efbc1b74d0d93da3519bc966ef4df0e343bb2e5000000907591ba28ccba8b9c50764e549380fc267f82883b39b0f119caa19989c85b6614f019543fd72993b0deb0eb63f76b156cccb91b703d5f49d0242cdc8f87d7900b33b5b51b8ba6239877500059b79e4a5693a9a211d0856f66cf28a0e513bd21011ca9960fa442e2139b2c1346d54051d740cd766ccf8bc210acf8e7f89d2e5a5c531958a1d70e5b4aae8b1bcdfd2eaa280000009097a8bb9b27821be4c9cde2b825c84974189febf913d0fe5b1a85592718e74e5fbc8a58cc0793243798ff7e63873e6427165d50b6f1ae2fcc1827a3caba99edf55b2f0509fee702b0c97cada31161528a9d057cc169194d6634e89f71751ef5ac0fe340747a8772b0835492418d440d533867663a23eeb7d0b0da24c00edc66364d61f2698d266de3e15c913ed7d585bb000001bc000000908d620422cf728c49d8dca210bde4ac29173c54a0c59706d70b14e9a61428e749842194d69a1e8c1922b95316eb2861d2952a9facd19a44a4fe4deebbdb18ebd5207a6c5270518f6675b019a53b959f72a57a5b3a3eb775d44d189a307c15ab8fa3d68e10ced78df01c6aa0c7603cab8105596d30f80a6ffb2a6988aea795b79b4ab9141e1b4e789cce72810fd8137cad0000009060c64a4e5095fecb00c34552b9d6b95d925ae761c542e5e334357d59a883cb8f9e4f978f6c3392eb975ef6967b1927bcbc62881059e4ba890e062dc5a841fb30f365d0f5cefda395664a61bb0c7fc1d463923ecc307425d06060e1b55c0b5408e3682f52af0cbd6d02f53e30ad3fd51b0db716c08cc98aa926a0ec4429bbe3c5cba30e1ebf91ac3358a7c7348627182b000000902d7bc27a2901195a20cd31878f961703cb0089010d4279644a48f3d70069299e06cc8cd17cb55d21f0b0450b198a084630addc95e308dcb4af448dd14918cd8bca521e86125c8348686c0ce96cbd830262506e29741966c523c7bebffe2e7742816369dc22e300524d3abac6a59a27948b896c08e59cceae6de386c6011659bd950d443594b2894f5b88c8e756719f1f000001bc00000090a2e2164ce724dc79fa8a048b747319e92e8cc376f3972901b3359b826a7c3b5fa29b6b171635834a32302d6b3fccefa551013dbe2b6bf0944b73a6df7cc74148746ce0dcc8ace06123c0bdb84a2ff5c28da3485f9eda726143372c9e5149c0e3de65b1bdcc6123bb9c74f516153e1cdf89da6880a962efafd1a50467f31a7c5deb5ce3003ddd5e1a30b13d62615e23af00000090f90c3f9d00a529470c7b8320bf7215c68e96bb59b4535f456ed51403481f01dafe2495d7204b227020cf4872beee0d136b4d538f6cc90688c5889b7838d04d983551790ef8d0d8f93ab4c0a58bd2d9717bbed6055287e1e374cce22e762326f5c96f39ff0dd5e7e0ee77b661a53ac7494431aa3d6ef27822a442b7001dabb1e9adadff492ff1895c82335763bf6c8131000000905956e739385f93c95a1000cab5a7110b84b54357e443a2765fcc0573561c9326773fe6503c2536caf61e3b1e2588f5b560d99a6b83aca8297e4199d879987f467fefeb4c29572d521c6e1cea5ddd60b184d16e8ad14a60160ccff796a488bcb642e45a3a222d91735c9a094758af8cf401c62ac9e43706467021c2f2acc3da7af83775e36cd80fdb06c4c320b575480a000001bc000000904a69629cad93b331b5e5de04b86a338785b62e85ef949002bccb0bcf34ef996cedd9926890e0ee07322d59d552baa0a44b242ae38d6b90b41327ac59b5bb9a073acea238eeb523f2f10c2205aec802dee142296b43a8274b498af825e574ebb6be7a97bf7a7d78a68f4239a9fa1862d63dd7fff4f6ef9f4e2f65e1329cb98f13972076a6fc3cb94e37b2ee65a4c3fb750000009028a56df2a84845a9d904aea29480e238cf1eaa499f4d38c11e96e24ab05989f6d3c7c9aa1d1852a5969bedff0d2b583535dac5ea8c39e793b66c4b46838d80dfa30163da022f1e057573a6a027a5e181fd02208255a784345d641bc3c0bece1c6d4bc1b4822db16e4012c6035aa153aa1c0b0eece8d6171cf9d3d076bb33eed8b97cceb7c3b7bec8924b4519973c9efb00000090247aa902ae72f8aa2e3a894d37dbeda6f5396d2c0a6da124d8bc4d5288ff3f6db84376bf6482ce899d206dc0c1eeaf87313b0310fd2c54eca869b20f1e6f6bf9982c50000ca1ecae5d985a0e78491d89b5746664e4d9c5b9975b4a8cfde77a7d05873eaad38de6ea341e7905a7acfc38b1ce20456cef5901c8da14f69c6c1334d2e83896fd2796ef7440dd97479bc674000001bc000000907e82eabd4bc50187ccf1f7db45e3a913c5d9ab33fe4e70a7abff858d105dd8eebbb6ecf2f6f0d617872a555fecf79f01c648253546beb3c5d99de4527303582aa283057d2d1697c61ad2dd8640747354834e8420299b3a76d4549282fabd7b31771ba313d37205bbbe369f903b23a983eec886411d66eb05b4dbcdb15865da5530ed5ce6163aa840cc977c7c36fa3f06000000903ae26dadf99332d5d17a04a4b4afb6bfe2d99ca9ba48c0f52b0784e45bb645fb703bc4d11803fc9ae683daa2318e4fc359622a3cd946e65bab5816b8725207004446dcdebe0669192b21c8a8ebbe7cfee887de9bd3b5e130715560a9dc182e7c1aa0f2422363c4ed8bd07147f3272b9da3aa2fbe4233ed7416b15b10b801e3441af61d61a42e8256babb5a3da9a5ef57000000901974c3577265874c6605dac4c5f1d6d54d3b2da3d62307e97f09ee041355e007722a47f573d723cec64463e96878be364e228164b00fd4f2c661b330670e8ed9172035b11d16483953c335c835d71c9bd8e041ced32243671fbef2245709961bf3cf84b7c426179c6df13f6bc68dfa0fc68ee70d66ad02a181fb0ef23c2b1d971ffa1484f85a48e65136dd4faf97f92c000001bc00000090e30d104221c154bd269689e3bfc8640b2c70ffd3eeca50b981e592b4897ebeef990e56db03f5ac15fbdd5b109803f84bdf30a735e523a3f07b918ddc46ce5919f44e84c4be459acd2404ee0111f8ebc05063f7418d97e704e4c1732eb2408a027dabfdc838ead495ae8009eb580bcf391b6e3e2120b3b0d55763390047c664075fbbc2fd20b63b4369ffd309e5072ba700000090dd87636db931635adb5b575c946f067e8420a61fbce791a0ffd7c9932ad45ae77e8a24a08d5e865290ac7a408cb59683e661806aa46d242a5f7a6dee9a1609c6924784b6d2f619b2e3bcb481b96a6e7662c1962d8cda151d452ca27c60f61e4823937b0a7c685f9e2af8a9416562b1ac676f1edbf638c7b1a21cc0d67715cb18aeaaffe2265fdd061915ca026dc6cd11000000908ea2c469fc0b0ae2102e4f406f415a262ed2098525933f79559de3b9f8d91b49263c32eb885078071594323c294c71ed3a0cc4522d057cdde1ab6e7c25b79a8688060993dce8797dae1e9d33f7a13fa5fce01d18e786ebdc26338a363ed0c57c0f4b02d564bb6fd9550e9be8182c102756160941f4a92c69a47c9282bbfb2921447e47542ce3607bc935c341145f598300000e00000001bc00000090943fe22184fe3f67d222df0e9c627ba0592ae251e3c0310f07b208aaa1a90a7a2f741e0a782e59ab6445287acebde8de40d8ecc6a2d3dfefb6d04a517ffce738a2916a2c898b5a75215663ab4363a5116c6af2efd1529732f0214e1fa47e46074d2062e4e779b3be47baac5662b3457fdbddd246dcb39712e22b956dbfa2f552854b768f3180edb584a38d25080edbff00000090d9b5d959210ab32a66b08fa8fdeeb14eda3ec06277a633113c8ffa1a3dfb208baa006de8dc5e31ec33518e3ab3b62bb2e18ca760d577d28064e1339de09dcf78710780488f24c4d862b55e1c292e84fb65631bc0fa2634a57bdc3a577a7bce8f50fb953969e32e09dac676599b0ba045e21b625efe54bedd0d576e12040812ac94091f5f52499a6aa82a916a15ca8a2500000090d1c297771ad9f29475a98e51259921bcfd8e23069eee19674fb3ff7ad061ffbd8a1a0cfb470f96b98f1fb155d86b31543fb422b7d125bd502e51258536f3e98b20face7c0f707ee1d875a55e3c5406f314fd062c8b1e19b815fc523e95a8edb72e33e984c7095ea7972bb3103802556df82c4b4084ba131bf290a846adf08e10a08bdd03773c0bcbb6074426e0473ecd000001bc000000906fee03c1031c963c37854cc26d00d5939c19765689071ee547c26d67ddf6ae0c92ffded67da6e80837f43a3570dd69c5b4a2f5cf997f5e2ae8b5111048ce7f33b2834754a0037fe5fd5ce6e573fe8b30c563f20e677206a94ec782805f0588addbd575825fb17f2e5e2f5194133265056e6c810b225a3bdf683ce0dc240748eb50e977c31c3b3ae20ab33321ee3b39010000009094b9d079b7bfdfa091bbd55d5544fd4dee37df45651fc2a86818e8d62d6d7fdbd211c81133434271d4cbf95ba8bca248dfe4f73baab1afe37c3865f794a2abff37d01d540f745076bd7ba5e0e9e042f33372ed5da6d49e6f9b7e2399eca136a69e42fdb02c76b80b76e7f0d0467673d542d35f792295be5736d83323fc3865b112267cb03057a3f2aa21ae3fb1ab0d82000000902558670db8ab6a0254f058bbb09be6b22c21d9fc7f25ca1bc47bab5699e1fa762e9a139cdcde0953e6cd1078b4b23ee163739b560f6ec865e39bc20ec4306e5319f5952f25631733f74ab250e10a4feae52a02a4b7d94cd600aa53f18b28fc41e603f9f198c06b91d181c5ad37e326fc40eaadb7e823d09fcab6233cd4a53297bd1a13884ebc344b76b7ec33886f5071000001bc00000090c3a167fc49d620e300cad9e8306d2d70b238289de78eaa6c1febe1d2dfb04c43f17204de7c2dee51033933293a21e1515812115e6daf8340b44768fd155027684c4df71236e0e7ba4c8043cc2c9e7b8c1a6a65b15f31f988bb13a8f886429bf7c5a2e5634605fba86c50b797404455ab0e7c56be80ff47a7268438de1c28b6ba493b7452c54fe3ed6f96848b06a144bc00000090ada4f4e507cb51f0f4bca7c8317b1e5b3499219bb49adbf7085b9ed02e1e0072ba66e2fb2be5365ecd02af0e76d9399f320f448da83038c529b563e26534d39898db5a0ce32a1be52156313e8e2f47e34b81efa1969946dc858e1b76243cdf889ad80f4912a3a7326dc5184c0961a4a687711ac29cb726fa9e4e5c00bb44ec072ff482840aaeb4bec77c2e9d56cb3b780000009095e5334f913cb0b1f38c904a416d38db07bac342e2c3e325acebcc9e99d41040512750b1f49c420d1e94bb4c180ca5c64d69eef59c7d4013dd558061b2cbb962f41513196083040a068fddb329e91ba353782a5b679bf43f945a052e3f446fe65ca4c01c2527d74d8ae82f8b3574b5d8d037e82c3db34bcd1b32e01c1ddd9b168c232ba10f2901542b3d47d66f7ec865000001bc00000090d653693d21553d2c9bb9dfdd080d6b27a869d494e04968b0de576beb3c4c71e169c47ee7082bd9287742e1d359582c45d56d415748828fa94c26aa28a2f97749c69a6eb88d62506db6b5129c6cc541233136f5fb6aed2276ee88fa52bd7efb0e7d0f5ca030438f4aef29284d66b12cdd8bd72ef4aa936709ecd4aa7dcebbc827f1a558962652df3c9779a5e606cc78560000009073a019800bfe79e689cff9e61a4f99ddad0079f51baa2a2adca5d2c26ee7d3b8ed155900f43bcc7cf0baaf7cfbec343fa896db821faab2afa528058f140dc64194f03c95f9dd5d1ff32aa7b7bc18f5ca196ad5f90b2e237a1abce640567bd00cff8a33458c9d593a4eaa83b24483083c3a5e30df5405ebc15a6e0fff9ec293ef4395b6761e4cc9eb8ae2b183267d0663000000904407617ec068bf7bc23eb8d4a614f254b6e9d358c5006ae7d8fe37538f87e7825b7e4f00fa02c029f9ec222652e115c274741fa4099430814d2b59b7d0154dcf51e904cee267aeb8c79b46dfec7395285566ec78b1217d006659b4ee85b65922e851781c1ece9665ec490c2953fc350869bb41dac3a331f451be397ffeb3e18e41aaa550a08bf759858c28faaf6bb2e6000001bc00000090579729993633a739a8384ab1dc6f451b10c4b7ddc23aa10d2477e35764a921dc7832cc98fe44a27465a330d903b4d1ea1e132bf8f9cba6859fe87a3c03fb7c1d809292b32e4f1581216f1c2279415788683f4c4c244db56fbc7f5ef666ba0f49b586ddbca4a1888d623493c83bc3ab92769bb9212f14dd24a91a99b0e238df71ebf96d94fc06545703358142fe8c13480000009060d05195589cb03cf182758096d085633e03400270ce487c71f45beb1c87df7ec26ce29af35d8ece3dae1d04fb30b19563d701e98437320cce4e6f1bf4995ae9580d1a7201478655f08053cf1f135cc1d55febdf176091f04dc1bc2f6b9d29d8737e14fca90a6fcc9f41b0a38690ac0522f7db33c3aff847c8094bbddcb43cfa3ccc07ee2ad4eab11f2380342c502e4400000090ed4ff7832dce8aedc9c0614b78fbb47760bfa79d6b08d02ccf13f3dcf8429dbde4f650371ef7eadd83600846f3b54c7e14cc2c659513ca05d30cf464d6a1efdf21bfffdc129aab1d9a853a49ac29631bc703a4e6eed3f51daa8f2448cdf40c3109eef826b8df8a9af2100e6cc399ad700446dddc229a7b19c35fba62e17705c2871e338e814396c01b3ee926be407a1c000001bc0000009014e257c88811c6bb3194f38f458e5ed2e64294e76297fd298a3d9ae79d0c33b2bbb75678a83f06ac67cf920bc7658d7a2d0318067474b654afd9df92b2a59ecb3865521262beb5543f246e4f0dee742eba5a3f133fde0897a7a7288821de6a1c4bafc6f1db9184400854b70cecbc439f111a814619e02cddead99f97151103b8521f96669752a80570b04f4f4039e37800000090665296cfe59cb7756a27bfa997e5544f63d012467fe867be835a5d129a6784dbc88603f8548a3e6a0e704b6c6f58e376270e1ea83e4ae9b13bcd9a2e5383ad18cbc5fb8400be7b0bd6e13763d1a4b96d24e62acc439f58b7d161f2e4a6fc44ade2a32b7e656efda3284f3534b17df94574e181efeeaf837626c0a63be3ff3385f44360b8f7f42280e37cb35d27a500ab00000090ab715a1523e6227810aa86895e6c77c72c18f94427d74578f230bcc54f7734a6a18e1c1867341a8b1f4776ffde973e999bfa7db0cf64bbc11dd9d2da5add4f40a12eedfe5ce86886cfc945fc046241e01354dd63f99f5b16256b29bb00d3d0103bb2293df9c7d0e363096dfc5f14014d16174dbbe32bcf62f7652bb02154dabe8253ba7a45c0017b12d2c999a2d381d7000001bc00000090a99adc23e14850f5883cc4b0af0cce7f7f855315507cf0597601c9bed68568f6288fb984b5a1de81c1aee6a84dab68279e9374badedc7542ae6b4a00294c9797191dc6f35c9b73005f0826bbe5aca1b1dd838aadca0aea23f45756ef87164d6bb95435a89643929ad6c2f00f67a665334a58cfcb596537a086b806cf53e53797bbc6bd7c529b79ff56c5b34324e5a2cc000000907c654afe0b718357efd6db3797fe15c44a129063f7281531fbb422e94e1af766604f3a3a43a118acb1e2d4305c0dfdbb741f23216f7acf15c16e3d7a5b5a1f4f1c19c16ff797ac4476a2f390c8d68f9263521bf8a9ed20ae27cbe370c5afbddf978cc656f4042f60cbeb02a86eb6cfaef36768cd9f3975e17957b8e6e41442d579e246e085244f4930cf503b3a5d721200000090e84aed46f3f676441633e515584398a58c8e27605b19078d3db234b6ca566a4f38a43f2889088dc7e6aba0fc595d9ceaebf5ea6f7d10e87f1cc517fba9a66153a92160a45ffa0349b20c0403bd3e8608be4c5482d9eda052d2d9eb7a27c6ee8e870ef32e31517a0a798cf34df89b010ed0031a5a0bb65abe8036367658543a93506a4e4962ce49d23e9ffbb8e924ff2e000001bc000000906fe8f93e56c6ad3842921334a914b7ace1d7cd3f4077962473abc16a902dc7593280497f6bab5dbf9c3ab0ff7c8ecde40c94db2a36bc09f752854adf27e3ba8f86708771d8803bbd86b870a752f8fb4365bce3f1609a23f830f43b8373c8e8b83f8dfa7a3a761b03d22cc80db35a598acd8fd1a1d2b5f8c152f144d46bbc821e9538387d749df672a1920597c60fc46a00000090d211afb2529a2d2b5d7c2638c0ceaf28cdc63b363ffacab2f4981c8ab935cc96f928950ad4de82878bca7bafa5c8c468500fca3a8093ca30e4f89424cb7a50129f17302ae479381013ac183b5e4a5bb419b6c22746658810b5ddf90955e1929d3f4dfdbe3f3cb03aca9319662df0fc567dd5a2978f6d78afd18bb34e2e2192d4315a1386a1a6c83e15d69f3270f06f5800000090c37b040bca12a49b876d83897ca9b0d4893a2393a2b527171560ac44ce72a83bbf0c1565dca0d381d87c12b0f15a33e6ca89acef1786e647e42027b7f2592e88a332e4667862f2bea786c6457fc901cef597b59f2c043b6794c84f9bd671bcc5123ab5ca48228e72d3bb2b0d4b47de9f309a676b08eb1d2271d568bd93df1df9395d444aa5265ec0e14e90bc3954565700000e00000001bc000000900101d350ace76eb7217c7a1556db7f589c5089e452c6da631bc234432a7e67fcae47fb056f7f45d666f72c8fc05d86c0279831b1a2bc08a299c2447552dc0ba83f92f3a7e44457465abfe165bca0c22693107c1955a42a9bec0c929161f3f62554f50bee006d66f280e9694fc9ac29cf2393f963c3d373377b91547d48ad22488f627984c471ab86ae2b0a8667b5a8a1000000904dce6f999e8159eea70962a4dd34417d5622a7878320de80774f28d7ccb2dc50e63db3ca85692a1bcd2688c5061b81fd4eeec450908f3991ba35d6f5a93436b33dcfbcc111197a7d5c46c49e711a3f9f93cba3d6fae23dd857b7dd2d48b782121fd6c249ae67de48f8d7364782b7920bfee9fc34aee28704721764df276e053755b2e2d977129dfd83736baf83e0948b0000009058145f0182e57b082ec149774f3a972279810debe83e2b4fc941d426795baacef254420c62a92dadff80d04549271c58dd49c9b3b6e681a8bebf6ab276e5729078d62fba15d0357356cbfc9cb1aacac3fc7ddd76f4befbe60f0f191a1170a22d4994cce145ed3d85f4b7dc1dc862b8044802bf7c9aa68a5ac6825016c84bc069c7b6bf9300b5cec11d3f23fcd4cbce1e000001bc0000009006937a40cd590bb84521a1090bf6d114e4d8171bb146f0346e8a9b5210ecb96e29340f504eb5dfe305f908b99d17ac697154deda8bf4afb074857c01373966fa5ffa6a7ed1997680fb6314b1d7ce70d4917a6914a91175fe5b505e7257f374bb75188f3f0653234d069998a325adffef290cd7c317e22ba887cb4c665bef5661069f4d733175260ff543193cf47b5d8800000090a671cecc85173df036c450ac6d018dc33161fc98cc15fbaca2de57142383da676541a4e4c422e254b837d9488854971106d41e2ad9c97f5fc0e7b33b44a57012e8048406f695996d9e1e832576a5422f8bf42a834b23b3d15851a95b18b407dfa8d32b2d5c2a2a7dc1d7e242e35402b29862b96da10efb098a6d2ab30a18c33a81779500ce61da3a74338e0344aabaeb000000904525e0c63b3d40eb031917ca6b412984152b1c296a7a13417120b8b15108f3b05427981ae30b8d587702c59402171b77a0225c36702437a838468d84f78961885e9e1c568fffc040e8b23a306a81952537420be70973d0625ddc1a7f3a23102938e176805a819e717b100da6790d7c3c67183f6708283b2fbf2b57b2cbd415679755a61c0362f7d2953266a8b365ee81000001bc000000901bec1920921d1e9be956ac80602091ac15fa3ba11c31abc644ba1ea6b7cb5a248298e0c317bc6bd3f5036208d80829d7f1aec1a231d8bd8e142eafb63c8edb95683ee864c6b0c2f0717ff70ba0cdbc27ff5378c025544c115ce0dd1ada3a0769da1c7079d270309dc15fae733f81530469aa5f6730516b574d62fd04e17b6a13a1d2d9c7653e47fe03ee1d54828c1ea7000000904b8f449362cd7938355446d0472cdcdd685613d341c0e53c681514712de1a03bb890d72f5e0c3bc0a292254e29cb07ea51f679bb53885498d408ff09468b7c0fcab9c32d586c3dd49ca5ad65647aa800b30c2bf46fdeed46482f0cba44b5c052b2d53d3dedf99613885d17432b5fb38ddfccdf2c85409a020fb5c54ff9e99770946deb80da063d1af3a3dac76fb23d060000009078445b7d3c5541be6191dd737454f22837c57360aa4da78715448f6b68d57a5f4560d2d0a7743e9c21b27fc7dc97ab6990b806fa4c981a06aaadefd9b4d973970fedf8926237a7be3b1023524783ea199be8202455bd9a3e32e053d3100c90b37a7749bc636429ece3ada6cad78aede8a5547b3e0480c62ec3ab7c8d846f6eb443b845349a87a91c97af526d0dbf4a13000001bc0000009086fcca38f09c08b660a3c3756c87bac93fcb575fcf5b1b03c867300982f3d12111344413a29c7bdbd996f1da12dbe0a955d43c2486b77bb33cd850359199e5521475a110c25702e2c945e333447ee4396c8cf0e41c2eb0b68a452d7022b1f249e929b68f4d46ceddf498216e25b87e69ca287e152846c883128aba03d94e801f3adf4e35caf3f75ce3c73d9d0fbaa74e000000903a1395c95b1dfa7727fab06373b484e37623ec93d242e1f98c0e931b9af47cf690673ee8af1e127d2e0b7788dce562c0b9d426536661b275c29c0ec104ee40234c4ebe8d62b667618c2861534e3add713e4d53680f14654afab0c4b9ba48c485bc5c6fd921f111fb90e9b0cead094dc910efb8b1c22d56f91cf3c4cf21131345768c6261fb42798aa2542fa3f21ecd82000000906655084969d959c6ae04b88ec65a582cd3169856bc8b730384dbea6d6795129ab8d5a27b56db9f8a2e397ea3e65dd5da52f120e909ce58ff4aa35910d44fcf54f0608099812687c7e473489ba061383f4dc2343744ed1217ff97824f52648557112e494a127db6fe039bb412c847e5473b1ffb6aaa6f9bd5f18bc4ebc6489d55d9c44ab28e48f5dd78d58e83c0cf0342000001bc00000090211151f24e8543583487341e8b501f2cd752571df81d43adb95288cc3d76c84d944464c0455f91e841c0f3a9fae9fd26ad96bc513da3d2c4a992909a99d65073686eccf7875e40499b66ca96870f132fb5f4334fc188e2c6a511adee46b495694a5e58489a7aa6135329d1ead8c9b520856ba2dff114d39cb558fe02369cf294b30db002bed764d93b85e0ae2d9bf030000000904c317b2e54b8f05ec940e0e8632faeedeb887f9655dee11957841ad50bb05e0c24a7323d53a2e685627c0492ff1190c2e28a719bb5c5024fa6dfbf72bc8908651e1dc4efb20dfba730e0229322a411e780d63a363bbe5bacc3ca442e14f7a1443210a133f88a0f51f0c5913550a1d5ca02560f3fa6d5e2b18ec17267b14cad3be808d32edd2e4acefda1441632b1991100000090483fa1706e391f4cbe5c9a386b98a7b7f655327431c82b6d1830a1939f982c81c5d5e60016ada2cb363c287465ba00ce32288759ea281dc56b407e8694827f043f0f6f3ed73f633e06e003121e4cda84ff0b499280594ec92cf36536f5eff82612e26dabe34876735435946928ab0e3dade20c12680af47cfcc72deb8f77fead1429dc46db9356f78f9a370ddf467a16000001bc000000905b0a2bea9a87fa8552e069cfa33d68008add3aca8276af590cdda1d06c73009393011e7a9b09c35de0e9c5d5420bf0e7f78322d20a2cfe5fcf2e60cfc87ae867e6286f81edf25f005858c9f8cd5dc960c9dd493e3467d40cf2fb0dee94b8c514f5bba1f029d0d938e602c0a6fb94047579e51ac9a91a440123287f50a1ee3b7c556c68a87a3ba194e66f9dfa10a2467100000090f366e9402265e88f1d235fce61ca4211ae2054d3b634ee2e3ae025429a360dea4984cb32579eb84794a6658e88f3652f75e0218b487cf3a1b90dee4546bd4358dd151125ba7d719b0ba0055a368ef8f99c1798faeae593d81ff18dd7bc73aa9c1da04b40025bff1d1c0aa93bcc0656299f670a6be2d9dcea4a1a63105e315eb9e97fc4a6cb5405c8eb605614113af6a4000000907bec28c4c3651a3821ff43a0615398d0fdcaf53610bcf13e8630a1c0e83358d094aafb287de1f557b3aee9987a30ddae141fd4c1062e0ae0dd2e89b53f6fcb1bd60f2e0fd1f5ee3734a03ac2fbcb85c3188ed896502d4e8f6d6910899807dcc70a8231db1c474efc392be22b350a4deac49a5e5d9e57319f7e2e0de955b6cc0f8d295b1f79092800c2a04dae9a599bcc000001bc000000900bc1f6d5eb35de4eaf9d3ae4a86a3fa21c3f75bb1c42836dacc9471f4ca7b69c3861f0a738a1da6bd0808725b08ce19816ae3b35749b00dddc7bf6b88285665b48dfda84327e134db48f37ce25f21b161e2b0cf3bde27a5155a04f2bcd7e1bc59971f5839be54f8e9aef3bd1986ca51ec03ecaf46a2e056e785664552b98b6c8aff828950f214e88f3fe9d59e9c92b220000009012963f6b5cacc9f03f7363beda8db4c9398c71e1de79d3ae024619b0911e9855cc31a7e1f3d1ccacec9b1cd5bb50a41bdc71d6d43dc68da3302dd7808e56c5cddb0ae0b81cc377059535c31c0a9766784d3ed0f4dba5e775e9042de1cdec34450b707941502a2ff85bb3526a81414b2eb3f5e1b21092eb4d2ff118f1eedbff795c948dc36b8636c50a318a80375da3b1000000902f22c8f25dad0ebbf338b82f0a7fcc79902ee80e2ec0e7104140f0c6339554f55cf6c4fe9ebb22cf2799160edefc20dceb259dce3f12cb30381e02551bb3d9f5e16f3449ffcf2cb7e45fac07a8d290b458fa30df7fa6b52edcfb81d78b664b7ff578d851bf31c6916cfae3321b6d90e7a16528f695f22103feefe9305e69ac946abb76d4190d3669f064ad19c27072e2000001bc00000090a961e5ace383de1ff8eed1d17ec81cd1fcb2ef4bc0509c62cb0484e3563faa61d821959b7c1cb50b100152f566c58e1e7484423aa9a962deecb16c7025e1e9f753e1236a72cc1032c17b6579bb09273ea4cd3f75d4bd11046326afa3d08795c7e276d242d94332f50d3e7064a2420f4071ab7233fccaa7052b4e44396843db61cfe57f365d8d8aa19f5702bb3481b84b00000090b7260f6f6b2805460ed6b462cf4985db955961eb0e9634706f594ba25450faa57f4d7b75b8ca78080230a03e1a2f8ffaa67fa5cffe71abc549babfee5c5d19da176a269012420b728dcc78f286482047d44b3e6f50a07bafb68a8482d404e300487a8d463f5d667bc473811f916817b67659a45f95d083aba4d106508fe8125e00667f35005e3f234931f2c31cd77ee00000009065aa5239076311ef1a52a0bcfa20a1c9c6a887eab93b6afec9d69507d7657c86ec840a5b760f18b498307580ef5b3fe8352d451ed4f74a2af3ac6dfca221b1478dde322ff387450e51aedc28591e5bcff32f9a4b5626556737b058912372033d0088d8c705f72baaf1e20ac20f73fe0417a0317bdf5538e148ca68e089d4b4c0a3276825845b198e269ff0a490a8b0ff000033a000000ce40000012800000090fbea4f098f672aa12ac0ef989f89014096ba08a83b50d68b2f5cd25dca09099d52c0c881d2096c71f0ce4212189840aae9a5251527523ed261d1d65a9a2d6039b80da7a3bbf0f2ab4ac0e962f3b2d46bb1f178356cc92f3f1e114a4df060dbc5137e0e384feab4c574bc676f51cd09531ce8233920b54525941671a0a83825e39fd5acda465917a095d485df3c16f60300000090db0de2971b2417ca96298753125d2e11dc4ea5541a358facb3113eb3ae317282c8a07f88fff4c122f34e60dfee619a3ff506c47f855d9359074980371590e6d931f90aab8ef9507e4b7d61cfd57d4ddea7bfe0bde1a69100fa2cef228d1fe7c02826f63964e5a354322ea8e8df15b71f16f7a84ae8fd347f1bac007a5b80a161b191122f5295d5a528732a50c548e9fb00000128000000909819560794dfb5073c22672a07bdb94687ef6962208a35c0c668e26779cfb6e0b01a02104b716b66713d3fba174e89973c75f72d0c0b2bec94b5f90ae38a1c95f4b2ee2ada51f4a4fc2140558b8f2aa247f3bb8a9ae02d92a9cfbe27ecbe2ef3490de77227c09badb8f9ccd9ef54ba6398f9aedaf3457503b80851ed22ddcdcc925b5e85e2f5ed53f65b1375fd370fef00000090596df10e31677e2c4208d17f06012e16b42f6aa208546587b39d13ddd3738b22925b35fac05d993a7917a4fbbf5d23c2231e9555aa0dbcc35fc6b12f3df31a0c2caa1cef186e4b9bb2caa824a1a216767766b34bc4712ec51f590a06350c2ae6acfad5da63bd56c15d0f909d93b307f1a2739eba554feb0d9334a7dc6323224e51d1b79bacce8b55b1e29d22500f403800000128000000901fc1414e0539fe1d7054291dd11969f15e478bfab43a27defb11ead7b67f65bae7638e0298f524e4ee4437c409612148e80b20fd2092ef395dad14be4320ab068bfcd8366fa7a3fd4a1ae13ec5aa0933a1d74f294c8ff2d456c097eb62719b6e2cec660272720ca54401e409859b784770923e0b6a05b1957f0c5a71b7760a1bf15e0587ffa2b1a8c2bd2488ed8fdc60000000903117c2410c5e26c798a3d878defebf75a538a828af6205694e6e6b347dfc536455234f53be06d0c3a1d219d231acd819e254b970abcb3e3406d1857521aae8229ab909cb4303320ffe9e5a000bb0694833e197c20dd244ceeef843c2f59e9f165e6ebaa9c8bed4cec922aba70485a2ac8fc8b8c0d50e9a519e1fe96f3d0cec57048fc21f638b17ef85d07d8d3b98998f0000012800000090c80aa2c16a07934be76adcddc5136e9e7aa68356129d3202ad7d47fe37a04f08663d063302b79b4b2207dd76f1e29bfb686e781c5ad644019160d3696847f9d65b7309a8b64b38f72500cc5bb45e462c3b05d2ba9fd728bb89e52729be628c4e531b376be88b3826e7f52eeb65675731f23dc2383cf8776cc0f689d330ee6d6c4b185f39503935bd186dd88249bacfdc000000901ce3c103951aed49a3bf1b4f24e190713a34fec8c0fca5dd9ceced8c6d33177d7e601422282cb2e074382ef2e4b5b06e49a6391bdc8e105aa96027f1154d422e975ea23778e9ef85444003e192ac19e07e1788a9bc95646158200c2089498454d39a54cba148856cf25e558148fcc6bd5d3060c09c3ae2fd5882932be386d80f080bb5027a6a59a2755b3172cf44a63c000001280000009065a8a613c0e26831b8ca18eb4581906720d49226650c2ba29097de1c85233c53e33c65cce697215aefb3a2c8b2a04977ad3ab808657607d8575707e73a800961b9385566eb9ecd5d502f0eed16ab30c9f4db07a4263ccd6f965baa14dca7cf3284cc9ee3677e440fcd5d0bf58c51d8b46c493fba214352fa79782b8af1b6944c0abeea8db8d3c3a27aeb81bfdb7d02ce00000090ac20ff8853989dea6e27beba93e50ef7b8fb8d7609835534dfe3f006e1c72e1455b783fdf369a43562976236248377a4a19437415716469472f8a7145cfa26034c5acde370813a86d5a86c2e381b0310faa6b609d987c1b72894fcbcd2bd7cb5d86d004a2e682bda86f0ddbc03deb3d4a259e0b62613ba11de27338c00c7caedcdd0291c385b272961d9910ce1ebd4bc0000012800000090b72e8d33fe7621cd02f00131c0841ce8c9cbd1a0ecd4e0d265950fe1a4945e44b22c8e49cd2d2a10ac4017b83c48fbe52dc6f6ba5a4a26aa348fdcfdb23ad2d624323d38667567225973339a0a7670972d5405ce8c65511bb1d471207e1aee38fe796cd153c317f551424c7819c22cbe7bab56f3aed106aea9e454fcc5a1d5f8aa49e5059fef332738540e956b813e1b000000907962adb0b70c292698764b7cbc5e9c04d526eb7d07a11788fb8f922fea897e6e361cc78305b982b6be79afdf7bf56082fa49fbd5a7faa27b6cdb5918e34ad6afd141fccaaf3623c25dafdeeb95766ea9b67f1f0c7406dc9db9ef2fd22f49c19e7c7beccfa65ac95aa14687e04e0f6f9199e8966b2028ff1cfd5e0e416259e88ddfe3b1a3ce07032065635d7bf620ef1f000001280000009078c27cccf4f93e1f533472b29be3556488ffb81e6d5c23d4e6ddc1c95c0813f137d931de9e1deb7514c6345769a9e9c81c84f1a0d11c9a416483924d5fcb658d7db53cb8f4397c20c6830e0acdec296e80bf31061fb2e4ab5923477547ad9470bfa318739cc084776c6a85c013c11cace48a96630185d1eeb7d611353a212d72e2167fb2596b0fde2900292e2c4f555500000090424ad519386ad2c2a851f8618ae38cf82188ca881ab8245c48dda17aa7e3780a532031fe08773a7b76e6abe18a1c9053e19671b648c6f6e34ed7013ff29d46524e231c3d2583a528664a2eabbcf314117d8aeda77604535a22e324178d70447a2967238fb2849fcd54add439637f8aaa41f528c708b732763ca002e12a6bb9609c729a9b5321b903acd103c0c3d2da5d000001280000009099baaf560b23120459bc2b7dd4e3394972b7a5cffe1a0b48e63cbc6f8e1de5e86d7029b5b4bc444a7e40f64c5c2cf9894b80db8eeef05737884e3951f7496b2a8dfeba25803a4a45cf74b86c18778c9ee824d178b8c9e68ab7c30a9f3ffd4c27aeba94b9ec35e36d1f529824c687a91bae25f6342df759102a4c1d26a574ac7d638b901cb986a747cf504fec96554ffa00000090a18d1c688ccebe26064abf94ba6479dd2304c052b795e0652764bc6c6d7957031765e600502d98f895c66c9d909c6bc996a86052d393322718c7aee47ac3129b35252dbf285bc9fd98d4ebbdf9e0383ff86265bf2de6caa6bcf586ad211ea9d372e884568f307d55e20f12688fa1b8f657c6b05d55bb32b32b1b3d301b9534b593ff8f9cef59a2ae8d9079872c9b8fef0000012800000090ee1a5e14183e22c8297e3c9680119f3982eb78d5be8d47da5cb5f161b9ca53ba0339b189acaaca6c9da63457b0d7572e8a5f87a090c2a7cba681ca0f08927874e07cf404be06e211fed4b50af0b06a30d56e091f3ade7bfe23d78ea893e86a3dd0a8bc0d99acf8e7aa87a5ae37b2e580fde0ac0839f691bc1153d697d1092c73afec71e6df80805bacdeb129180cb730000000900b5eb19d702ec095aa5affae930a09690f55db66415673f78368f3deca9f16e816cf1472c3d0d1e614ebb912d0f79c0d4243cbf9b9c47ff6a5d0227ac4473db597bd96b0f0161aec2bdb8c0953d146d894300891a47f857acd8fc0901d22097252840e767f474ec8f257017d17282869a48e63a62dedcb1df0e93ea7882f4886a331ffe168609e711f1435f37fce99df000001280000009099bc21489dd17cf0f7a544c062151d53afdb7d6c1629b1e74aa5ae48b357b84f03af30c0cfc306e13a91948df92a9be093c5852f616a1489e510567f4c28eb73d3c3caef42befbf24855d042c2a007c86dfdd55b748fc675ced1cdb353fd7f5cd0db2674bb87a1a5b2beaff27878c2ac93a6e1d7d68264065303a987a86035747a07fd9db76eb25fb7fbbc093743f54900000090c5f8b464dad6bd6adbff5452956b90f959d3b822f8f15eb55b3f5c9fc81ca7874eba1237fb746e9c4423c9c4f92ec8635bfdd6bf829481d8894bd9ae6cce74adc48237309a87c53d198b517edfffdee0f5df57c0e7d4df314cd6479fe04dc03ac59f7a43b4854b13b23408cc728da1e4e2dd128906aa8068f396970c6d391e199d4f47dd4b32e0da795d9637f9999a5d00000128000000902b963c82d1c317bef3bf998565e9783f029902333bb0936cca1e735d310983a64dd9ac05541013a4d5fd880c2a0f831d4a03ef134277bfb4b37e989fa3e77a657a10a9c4cc6f8d1b967750d91442358817bbb5fe2a5e6228841137796f9f28d5bf48583548e71974be4f8854d738d953a8a76017a2cda01a375b484ef6cc286a4a5b72f2514a22d29bb229df40cd9b1b0000009055d3a3f63ac11fb543522f2bcfa099382d8a42ce205317d51ccba0fd3c20465664b7ebaacbd58f09eed67254a0d565461e60ef718c7c5086c95793e474c07810a99879a28619dbbf636c4ce9b989eb19357d86bbd788d304cc6a3b4ca8a2c9cd0f4d04190c9d666f7b33b2f0cb2fec1d830a39d854815dab239835ed4f7151227709ee5e177fd86acc1fd68097819f4b00000ce400000128000000901faf557d60df27116d799982c0eb24262346eeacc71c0da7086c4eb78638a79af5c7b2d8ac7c8c168d57be64e8731ee074d9b6a62b3d7f185a928617f2d1ddd9ef85f33b7a5557c0572f6c4050407020d53172866f1dc1795f05ca3c438d108a7d6708b79bc4ab7522590e4f376e7c13ec62e651193c21baf8e570f90a33d5316aa6179ef7a3c25dc353ab38bc7f65a200000090bbcb94298ab6e6e0f7429d2354763335363c2d22cf617f2f6fd5b24e9e04d8c2376f69494bed9f36e7580ad668b9de718a118a27a77eb104f56d0655cda58faf0ed58b4aaacdc8c79535fef442ad0d67ae7b885e28b5eeb61f8b1e666d92ce9841ef818e824cd5b34635b7a75b78843a5ec5a29e425111a752ad107d49defdd6956aa2cc6d08e456fe558c425444389c0000012800000090560e24b3063fafb2af8b7d188b2923c9546e5511e194d113e206e71e31c92dfeee357d175c6ae8de2e05dda1601a249db5a1babd18df2c8b1814288cb8f4b015264a2349207ddf23d57323a9dd3c1806bec586b98d8e3a05bbb259c3fa9d24cd1f60b4e6746af648b177fcc4a4f14cccfb8b6dd6aa4863d4e781dc19573475b6154f514713249c9ad583a186704a9c68000000906ece22fd5f040f715d94746bea4d7b3149ebb2ac1dee7a2f09240440cda447300edfd8167fea829990ee322caaf5882980151bf6cc1459a70710e2749c4194dffc32572d081dbff8fbcc706214db4171681c84da360f508cfd2bb7bb82c8ef73f50f5e40b19e360b7603d61ec4f68de51d56d18462042a60eeb52a47873ee6d7ed728d6d1d8783e81ee086faf3c55c9d0000012800000090dfd342e0a03090b176ff614dfbff2e66ff8ddd1e39fbdfba73190f31747619f597ba969d1deaa6f942f393bb163c772a27266308c150957cb70df175e660cf872a4d456cb040a82c0ebb98b03ed49935b502a2f513290708492dcc1f87d8442db95c03fc21cda9043da25bec7256079a75059d74d943b8cd0d7c3a6138df59d9e8a036eee06fb173e2a6a3aa7ce24e6e00000090399ef5dbdf12491f6605dc2709d502bef86d0b69a8dcac674be04a96808e7dc1b84f388d4e85719e35ab28ad07d5b373bf65a6fe2a4b685d89e20de862ec3ba2fa777cd074f4d965e34827121f82e0f8b2713a719ebb79d84001d1c9dc5ca8f24be323c15393901d31c7ecbcf4d498f96a8967e0cff09032e74094db1eed963d4aa05c85403e30d4baf56efc317de48c0000012800000090719a22b3736a09fc5ae3d090be7a467fe318de206793b66f7e47b3ac9114597fbf06c1705091d437730aaacda71bea41b9fc3c31ca694bbc42f9fb1a0d02c3ced9838ea354e40559f7799abe06f932a5dbee557d02167fd388d5f1e34029c5443a52d2618b8c7c7098770469ecb6661c95693cca053e7c013e6a9329e78a374f5ff8d88724264c6014ccbb6735eabd040000009062c0d0b15b034ef587dbab0f128840ee81405246fe1afb28203a9bb414e5c279cc46ace3ce5eeeba5fa2cc87d0e3ca0ecb59c253c5d152d8e20984c7ff1a6d218a723707f526a1799e5cb6007639897b459cc95891b4ad987e75bdac293e9862adf055507660d54e9e314dcaae88aa9ab8f0a6c000315f7e728005947dbb1153fdede88dbc543175d9e528066dc757950000012800000090706f93153ad67598ae49d8afa853045d31dddc2b6e8100b55d9d2d8914379157eeec9a66a9d3d7e3e862bc1ae2c6739900e1f5f49863b5a10ab42e7737ebf9441b1c9755242d9e1d4b21423f4a4d674db9b46e705845db570f605b969f6a894d8924e6b75125b4ba27ef89be05763dfd23467fbc9dc25a16f0df6ce22226a7e0b017abccfbcb024a6f05ad2885b8abd2000000902125e039d8a7c560353507235f0e3307b22359db717247e3f2488fff50d988bcdc582dba396a5e4ce1bbe5e6c9d36a961ff1fd51e42d1d8c73261c9f34c4ef2f20b1b980affc25b4bb4e70123b86836462f65dcb583d361529fee893736d87630990fa5212b5a13e7cbd8155bb6965e5e415183580a3cbae8022f02b2dc1134c9a795eef232d0b1a7b5eac1fc95c50d7000001280000009001d30da2c34181f712d6dff224a7536aba46d96c6c25185770cbca985aa478e0b259c618cf089489ecc8db127d27a6269e2abc7b5f22f6f9e1feabc09bdeffe9eea982b4b4e4de9e386ccbfbd73749985284e796445a5d248f0a135c2695c9157f63d65d32d71c110d45bda7ffde435a69bd7c0e6d3a1d517f6d44cf0ddabad00447af35a6310f603a8b711c299b7a2700000090d616852eca70a875e7bf22333fc8e6f3f57676ebf2bd3c93822906f9bba0b6a01a428d11381acd6a6177350ce621733337359bd79bba7449937de0fbf9fae447ad00a85e016400d7f0f4401a01aaeae7c549becaccc5cba79182871fe3161b6d38a03c1d9a64529844a49d98a6e966b36198672abc70592b205d13fb4ffe8b1ad2aa71c77ebca7e25e9a5727d25fca410000012800000090ea296472d7fb223528e8e8527997c8627f741842f385039abcaab9e542133f52c63070fe4616c395720b2d5734d4b764a35f153c52c0989ab7f82ed6c17da588581b9940fb6fdea01a947945569282006aef8c9bf49291f873b51ca495a771f03290bc78e851af883c0849507a50662394524281c61213d7c1040e9a8691517532dd47a626b09c7631abb7d57bd047b000000090929e6cf9d50a9c324e83ddc9f7e4c45b8084593f8c314e418b45dc5c850f06d55498c5b9d1679eff01e44d0d0fe0731c5b15d831584e2c96bec2c2a87a4b54366296b3d2c6ea6a550c6d6aac13cc1c440f3efc7733c9da517ea5e9946f2fa8189b79b50b847c261f93399cc02d699b6c930463782967ca8547ece9fa6d6751d3fd6e2388612779df4f5d861bdf82519d000001280000009052a2316381e4b87e894ca8ccb1e1ff0cc715190484c93dc5d38ced8eededca2f08dd71e04593b0331c184fe2a5b9615e307dd0689c345498ff267b203ac3fa8f8819edd60731bb058bed3e985eb5299bdb09dfdc047c971a0398099488cac6723b67dd94329b547b5df10bc896569a4d22fbd3216297012e641b2dbdf7511d3977e6862bf8468cdb4eca585cf8ad2cd20000009031afbf33060f96529e77557134656dbf64800a77a5323ae48bac637d5746defdca8d7fb1c5cadb3febe2657cfed18bc8ccb68f83b10083247ae470604508e448436cd838a94467c44efe1428cdf9cb5b9aaaa105f0a25cba6bfacdb40b78cea3273a98f02d1457aa8a3d70b84d8b00604b21b470a46486842c5d98f50f33e948c5accadad8871ddb91579d8a0276e9bd00000128000000902f598ff8598a2e713eb82b852b2a11d23747cecb7728a7847efd1f6a9d6711256cd2a1990fd8eff8111a6275794b3ec3c0b0fd8b2baf2027bc9bbf8ea6f9fa4ab7c76e72c8152628de7f11ddff0c9b4dd893296a038707b9188f45c2a2e7e497f728807ef15cc8d373e097e2fd117eafe4ca9892912e4ef3d5f3a19a9c60a15f291541af5fad026998c71a0dc29e440e00000090f5de76d321a5b6c0896ec3212d4d7aaa40b896df989c2db82db69bed85899db2f50974aa6e19391f62dded39b4b41f990fec8fe5129b9743464ccf72d5ee36c21c460e3f90c543cb0ece41fbfcab87bc2eb37fa647c8858e35d9f5d05175b5d847fa6849a629bba284f818e35d9fedf85f00ff1142bdcad244024950311c37d77153a13983d0a8fa9f65881d325203210000012800000090dd96bb9385388cdaeeea65993a2cd60a07613be7896c0f36714010da3326fea9c97468a5218b9cf1db9bf9cdf3be54a918bd929b37bd6011e2632cc36c24d8b994a9a2f1fe4cbfb724b76c82e71aeb3d3b59bd063228e321b3a380b4d22d667b492c68becf0f671233cf986c2ad4d8035e526a5efdd1d20c306db70142bbcb85e493c3eb19f40bb413dd81dfd15d3cd6000000905b35564e67b1c9c0a4492cfcfff048a0b559beb1d764a0e15638def7012a986d38b3015c013230772650b372161d14842f24f00ba0a48aebe8d06bd93073fadbe28f998ed268523da332a03db9750eed6558d35e38174380d98a930a9638e9e230ce88d6ddd90bead7731ad44289099f4e8f7e74144e1ce22c77ff51f40f1b908f721fdb5ee223781fc7022b8e20fea50000012800000090b778a99ba34fdeb8dc974a6c3d4ef798ef979f9c24d7cd42924f5abb2dbdacd2816c44bbbba77955d72d3bb6c67506b94eaa95b0f0a976ffa01a0947334f34ff9e30b1e30b1300d024ee2f6a2e5eba157da7bde8626212a8dadbc2a79d9e4dffb634e852ecd5798300475cd750d50994e13b4c7c0d86864f69a1b5ad6dc205e88c9409231616b9de7ecd95cc464a035e000000905ecaad4071ea34f63c7f5274cb4a336f4dd01b6b2d2ff4b22cb6e2b06d30ea5d2575da545adbfbb1c94b028e0b39cd80411d873926f2952b40a66463df544b4659b01c51f72881716ab806dc283bd1854937076d21fb716dc3a125b5d5fb24ea41afbb960b0e90ab0c8fb97e174490ab95824383aa9291fa5adfc5964ede2fefbf5a6147070941cb84abb024c6fd36ed00000ce40000012800000090816a77dd2861ab6abc85bab5a0ad19494bde13898315c2c8df5103cee389a219ecc5040df124f26cf4d6387b85f760927bc58f181ea702b7c4f095fb05d280242de916d9288a7c9443bc86ea07b85341d7c62027b86426171b3d87d923161c8b83cd038f68b95c417eb5297e03e9ce38b2fe35c05cf770ef0f7d13efd4d4b8cb326c30c3d661176b9cf33b99f6c7114300000090991967a9eadf2fe17c7694617b6970a2d9bcd127381a04c81dafab9e23cca33c470ccd326ae9fd0747d80ebb2e96bbd89fcfaef687fd886ebf398fb57dd8cc0498f477346c4aad3aeea04f1effb0ac9b3f8bb077c5fdbd5985b9ca2d8092bf643e16e96bf0c836d69afc8b486013dd04bf13a34d7ee64cd9bd41da26854903fae1a88848d2b05ac5bd897fd63c6fc29c0000012800000090ba15736f46ef5c167ab8ba5c68372af055e878d40ffe41d69e0766da43a6561254d14afd5110dcf4299122e5aeec4784e8da9564abf8e4c4455be795534766b1b8e5a503887e3baac198196dd15979190be3cccc06f93e9bbbd9f666e0e7c7b586098a904e50e56fdb2ab16ef1ad52444d8b32996354aaf0fad03fac00901e96c8f97968998639c6c743f0cab1b43244000000905d36ccb81aa0b15525c69c4ed0dcfe0fd561ccf7e4dfe12850d201b1a15b009971dc5652530dd9b5d2d63b55fe282296c42973bdff76aeab3d9fed635c3784501262203007c9577881a1acfad5cd273da74994246922adbdfd4f0a85a69f29b5e8bfd9a103476eca5405b39573f22b5bf0cef31cf35ce1b761e477707dd309c4a83e5c3058c2f684a3e9de0a71d22e4f0000012800000090cca7da7aaef650c6c03b927015b4fdf8f2e2fae5522c5ef0972368c97ecafcd62a026d9f40ac55890d54e7d555dd7a4c7454bd7d81a51b7925ad8ca4153d5fcafe0ddd8b18e6047b40fdbcdc3e4ebe73a7e1b355b70e9480a9133603c42e57a1bdffefeba01b28d358c255af8f9abd001ad4141596b3d240152608de8b3ad03c52335b4ca7478a0a3a08bab03b42fbdb00000090c836e391d5fa0d8c993129cf8197c0ca904023673426155f4bf94522b117873acec3d6b2d8dc127cbf73dfde1a54f265759a9fbc99d3235c5ad432362950785dcc5c28cff52fc6e04af694427ed5964181ced0c5019de1a305d238241a8fdbd7514b4ab980f53bbba759380d8dbe999a45e66d05ad86e7129e0313ec6f783e0d544919555fd3cf952b6809d6fc9be76f0000012800000090465ce09e0bcd6460d321220beab59a4015e23175c34105c941e35f7225ffca0912af9c173d01c7a1d763726e71b5016efd9793f504feedb4d349d6bdddfb95794702d6bb1f4aa0478fbda4e712ca51551127528597eec7a42e2e21bdfb2a7204c88fae583fa913a6362b6dcee9d900147c66974b9996e895a679d6d44f693ac5a635578a7e007d73ad3c9a4917273f6c000000900d087ec464823edab1578428b72ad7c2e7b7f7ec46efc1ffc46a403e79cd02217f84b7009bde7a78bfc857384a924eaa64d419ae65b9cfd14d9e3aff1b06ce94b25ba73e490ec983520f20a1a5d15ec2d6ee3fa169762c89e579a345c27fd31a30415c778e19f59006e7ae72fd920f29253f024ba5ab4e240c231b3f0904ee87ae9199e149ed19ce23680152d6b5bfa100000128000000900e1e0a83ca7edfe22d4407ce0882adca940eaf3da28fd8c2de2ce299a405ae597fac7a581afe50d2d3bb365724a34ab51545f59ef689b3d498c732019e44e73100874da99ddc9f7eab5472143565a0af8eefd41496ca0bee7d323bd7cad87c5189a5c084d98bd655af707e373d2475f4ed4d46dcf4d8533adae063060b5c5bae6ee4b837b245e546158833a5a461dd7c000000905ae204b4bd246e1b773a35c0dd9e2378418ac2f49699c883b3033d035bd4fa6afc9f3ef1d7b957398d0993e6ef66fb88a3d5d92f63e03c9f81a40b390fc5d365647d9193d505c160ac3bd645a783d3871057636a2d86546fabb6ef7a95da5b76f192c2d179d874a552a531554a1bedd6af02b60a5a001f0c4e04f4091f9b3539a70b11226a661f02083d11609f04feb000000128000000907de0c64c1ec668e3250130af1dd74c14ed1d2b575c6e442fb8831eceada205f55f040dfe7c98d1b813f24aec01aaf75391b9852ecf0b56b42937e7131a6cc6c5358722d7f6bec2b725a4f1c5394a24b03b84b0ef031af310385176372a3852e12b479f124da3d27ecabf9fda7d31b86ce1c086e139e51cb9e9419050a0b1ecb4f70d7637eb5ba58f91a0f93ef62d6bda00000090206ea4e903fbafc1d6263f71d22dea904742c1ec8507dd2d972183b917bdf649dcba2d0529dc2f31bea441c4bb69b017b558cd0f6929054ce782d799233e06ebf0d39289f362a6a8dd46b93cfbdbcd8efaa479ca6e4c3d51ff2dac7b502c922fa95354f6d9ab8afe32e91aa234d852ad63ff06cab78fbfee1b49d1df5ca83067339367572d3a7ad5eec0885f6f90f5620000012800000090f9744be81f7850ae91c2a4cce3f1154f7ccc0ecda71629cca83816405b696b5525b2d96661e83825d3dd218aa160243f7d652afea5da227c040b96dc6b0e2ab3173e2805dcc5befa00606e1710f88b0f9593b999e541707ee8e4de30949c7266a94073892ee8e2a4b0b1408aaa0ede8d7c7d11044dee24c3b8c1d2feda2efc962a1eeb66034d557c7e1b2edf2829da4b00000090846afc9f4b82dfe10310ead0bf499ab104437dd155955c875a1c398dc97a7b4dce9feb5a4dfadb3670c1c7cc4ac38b0a4819186b9b9418b0d614b29ee77b7dc86d4272de68c441e7fbd12ce6df8eb92fc7bc367b604e75080783e46a9062634bc8f3ebbd5ddcfd2490cd2fce178b0418236d5167335474eaed9a24ccf5eca74fd12ed5c350734fb7a7511a79d71aa6ef000001280000009045c6a543d3816e74dde0d8ef01be38b6e290f2a04aa778c485735881ef76eebea8625de34bd67011a0126453fe91ad9a9e4b3c03039de519ed42d6f70fa5fcdd99d11fa03a48407ca5fc817607fc14cd0c9f591b4425812660eb6193971fc2bf7219e90b688644d59b75f8cd71e51d0a5821d7897c855c7916633bc99e1ca69a9079f2a00d317913a9118533fb50693a000000907869aec85822ae61a89b4bce2906672ee081e29cee0aa0c0ab447d04ee6f620f466377ef3ea00bfd906772dbc6088b9bdc391ded7e97518cd6dfae7eb37eb5e10ddda4d3a480d5b89cc5f58497e46b0421b077226d162177f459587d69e4349e153d02e5bafdeb5b9a3b0fa500e8669696b63b319187c7ded452ce84329138d537c25b7fe90a48f48c6c70198817d2e30000012800000090707b32c0d9856f4ce5a5cbe92be74ad24ae54ba9d62b2a88573f61490f24081de6f78764d9f60464fad97e2679c520efa3d3f9559a390515e880f22142e9f64d88a33705f3be0a96712153b841a9fa5ff8762637a15a806d0c9d0c84dc805a49e3edf509e05590c4b8d531f2ad08d67a30b1b0b1bb2d8f51391d9f5c3f7bcc0572859f5dfe1890c412c81bddc4e9151e000000906a77358579dd11336ae6c98df29b24d26c37a1f200d1bbfdbdfc5aab14fd14b023e4cd557b3d87361faf02dd539dbaebaf288f314d557a94ac41dba0e0b36b33af7d4db550ba21410d8538196ff74369afcba9832237f6e3a7d0652ccf185afe5d47266c86fe7d337b7e38cc94f6a97160bda406ced15115b5fa460b9aeb5fc857ee76f4e974e22d9e20785ed7f5b8b00000012800000090b8141a2e25f9f7bd5df3666bbb50afb4d581d03ee0f7626be06712479fa680bcb1171ce1f26beec1f75ed0573a097847d32e64a9e9ba196f09b84b6acf8bf01d0bcf7fd13a0bac7abb87cd1843bf67bb3585fa9d262166d72462a0144d42951d8e7a14c8dbc69fc01146b4f4c85918a91b1ee4557a746a02f0accedb51e75a9da5251dc03e049bd6d884c938f9a85ee000000090b3da25bca2705df73a87c2a588bc1b0de7c222362cb7193a58d381221b19db5e88ea2e3e82df8276e74ebbb4d3ab3033c4a669a7fab615bca36b573d80d705bf2d83f452ab30e0284315707ef7732fcca38f9dd85ab717410dd9dbaed2248e6d84ddd6e23fb1e59a936eeef35a82c544923acbbb94b90448bb099696270c18b32eb2b9091f93fd13faa361d86740b17000000128000000904d9e2bda02b3215245952fcf6370aced9fa608de1161d82e72810e48fe00c0fdea268e150117c138f69bdb7c28932fcce7092b91355e45eaac5ac99b3783afd95c6e1c216d00c5eeb3057c2197731eed3afc3f0f97aa88c4f4beb8b614e1832bcceebb2ef639686a6517948803111f3406e7d1cf14b971cdcd2cf4e7392af6d75898bf092e973f838846264246eb6fbe000000908a4f8c685f9ff8f9584940ba3ebfd271464ba3a0d3e762807cdcbad1b9bf9ce31ef007c9cf29507d38a03a7d1f58133e298e62599256533b90d764aedd9b0a7ac202b8525cfe6e28927f154cb6172174ca28f0ba51a226472e7c92120f69c38c065fde43e3c49544e6eafaac74b3c5132b42d803fcd508fe127fadb194b392303785fffa0f7323eb257a51d42ea5ed1a00000ce40000012800000090df859662f0e462980330fa36679e7838fa11b87009b31e91c4871ba7197408736962e2585b9abcd153df062e1448488d64d23527be334fb78375e4450d9f4e3bb0ca90e68826c4d03b4e5aee2fe1f009dfa868881d0696610ebd5d1086665687bbf0cc9590c0d18f3db8b38c2eca2ea1c125764953281960aa004403131325eb1c4b63265e9d80b80104954299ba7799000000908034091f4c242c196dc453043dc399e11efcb8974eb1efc0beb7f7b52538b795e7b5963b8204ba4183e499ffce6e7569755b214274230b06459a4eb4c3ca24d781b6e12cf0903a5400447aba366ad6cc128f50842987fe49e1277b1d894b715614224120f00aec4d70babb55543b14c51712dbef704a85b07622f4a4d5bed3b26d4fb69cf194c9c4af636bc77270f45b00000128000000909d88d391b83c68b8e0ae8c1273cef20a2200f63443cd2d2c4267ee039848d319e87fc37422050aed6f109b1ee8b9082494a5fe48b70615297a3492703c0a0180a115336d41cfbbe73af8d73b4711fae78c1f7c566507046a2eab8256085af1b23ffdb23abde534f68d7e1dd1e08bb7f64fa081f04b28dab19637be394590f4c70fa0cde46e85fcff8aec740098d8032a0000009096beab66d26e4f4c7f0ace5c5881d7f7cbf4b3a76609680ee9387b221cedd5d0ec5cdeef0deea83ef765d868102f5d3531731045ba872d9bd243a8cb5b0b153e2c51cef1759926ea15ea5ad2c8097c788122f00c9f1ec36498f6343667c05cbadf2bb9bac9fd752e1de785eeffe79b339e47415497e87b3239661bdba3990533042888a8a6a9658a8f4a17a90ccad42a00000128000000903a8ec4b196f991da14157dd1fd76da96375a0c9df9087f9bd73b4e8cffa4aa929c43d704a3fa3d98d44af9dc5997c1d6c20f36fc8ac5fc6bb860b4a51bc5f9f312e148df8130664cb4a0785f215e33ba5204d0ac189a41de0e9519e2bce70e18b874d233b682de8a4c7d1ea52e8cd2c9ad5e723b8b03f1f068ac1ccd2eb8e4c55e93bdb2155ef76a9693aefacfc03e500000009086cd95faa9988cbcc894804a21cf7c425c178fbbecf497d93eb385e0e8cf58e7a34bbf92b86d1c1d84c33dffa02e90779919a7105a67dd1dfea5d8ec932b141e32ff839a1f486a17dca296def9f2eebcc6b66daa7a7009fd2888a762a3f54151cd7faa2c5dbdd922275fac6526250a6820b75a7288ace6be588f9d7966a40ac5c7f268063952cbe3da525f6f2236697c0000012800000090daeeec2af11545dbf5c09990b76605c1bdf6cb52b9cc6a766e31f56e84e2e52faa153c6f1f43efc0f8adaf4c8a757e1532869e27a9f6c8cfc40755f634dce270ed85d8c61a8ed21a502b1fe329bf8f22850e59b25e0b1450ee30a68137eeaafdced1e9680db651ddba81126efc4272a7eca658ab54873a8ff2ebbd5dd5685a040828330bae1c9d95eb8a4efedbe42c7c00000090013d7589150781f5b06e64ef6192fb368f1153341a015d2a8ef93bfb0fc916f5d445e52dab235dbaceece05b2705e5b927db862f7e866b2a6ad4f565ca53680d18ab29198ed8a876bce93e222bc29f5f80714fbe35f31bca179c1c77851eda9c21c96d6361f76b2f994425182e28bd8dd95f08c1a25246452d6994d0a04c6ae6d137311cd4283b27a9fad906842f4bb0000001280000009062081ec2feca512ef08b4f4b25023fb2c66500d0d121d637e9f2a0193f8028a7ebead5957be2ef765d1163ef4cf2545747481972179ccb34fc981da12e9e614d27326d7a2c2a6f29937e19c82fb48f1408a2e4f48dca8e22e1dbdc51933f0a1b2b4422ec7c2c2dbddecd7e4dd57273e5544436e2c66582bd7d93b8a76072de407eef094691b3abce63bcb04c2ddbf4f500000090389d2b355b2db69bf527026a7ac54da0c9cd68d44390b87ff6e540428345605b05160c75489cecd6a46a889bbbbb57cec55ddf6510449edfa8d0bd2e0b301ac37710589c80ff3a54af55a5b0c81a0e1a8843a4ccad816784225494bddfa57d168e857773f0c368955c3b31e63107ce7c42f6ee7e71540cf1906d800a79b995785e4a878934cc2c139c7fe3b25f6358cd0000012800000090ce782a80935bcc1a6e6c256c5a5e02d912d6df5d547a5d7bea5ad8961a24cf958c3031f76041956058db50d84fc8358b78e946a439d4559320cc965d8d31ae946d876194de0f0ea72ee9c436134343d2042fbadc05e306e637df0e8c83bbfe0d572a95c05181f557e90625ae86352d46517b2daa38554db65e5ec112500b30a79b8f433245d8d475db9d0ef1dcddd0830000009047b143a8865e5038f942f2203d6035daab83fc069e99736da50e4116df719aa0db95b736e2008d4c640ea3f3d4fd1b5cd177d184d3d9277787b2fc8d6bb64ac74b65318fe55db3f166e2e30948e5b50e36e8534f13e6b4c83746e84b50a46212a5dc1e54a42f19b6365b9461a366e2f33375d0c601275dd899e1cda62e5e23ae46416566c67a2810793468e01c1b04500000012800000090901937e75418b9e45cc2db44e4585c8bd8c4942677d1f18c857fd9f103bd5e25d38ae1055302626f49bcb63f0eeb6a014d1c8ea889178671c84161620fa5f245b4aa33c290bce2c3fdbed138110a45448681c14687f7ec59da30a0b11d01ed7d1ab505f1b4728e1f0ec188d7abc20aedccc14110b4d0f6b53ba1cb45c81dcfafe49704edad1db9aa5f84896335136ef0000000900f276ba197b3c9ff71a53ff61273675a07e6c8852983b7ba27be8a217ae30c99b0377d71836056b4baafce9a3c35170034ec69fe28944e8de19b03dd724a28382b1115b183a3cc012297daaa38fe81f7fe1180bd2cf7a89e09bccc351cf6aca55276d387727b2fac554dbe1e24d234513f89c8fc2735972fd12c12f6801cb1dd971039811a0f777cc54ea4852b88d84b0000012800000090f6c1c0b504c152f0b4cd5b9b52084aa417f75496225a656b4e3b3a3172307947b29250abe24c5155f8aa601d0debf4a520058b3dcca577d0760f2d9683f9ff8629f9efa31240a30ab5cc1527a9e8a355a5590d5acb7314de66dc1800232fe7152b40cb44acdacf9f129912decd9115f797b06787584e6197fd24fda3050f5252d3f625731774f30a018e58d3c74f0eeb00000090970ed3a2cd99fa2a04a2291e938db4a10fba2ea9af2ca053b1e90c54c7a467cc3eb225842c6fe9cd60fc357b04be4c6b8f55712a9f6cd4742e6ba6d939b4c627e25ac93a2ecb9637660955eca76673e0f8f8d841f1195403be2c3ff682946cfe34e4900ce6e15737480eb3612155aed20555bcdb0b845b599ed9d11461fe4a7dea8a2d941a02d3036de9fae4c3252b930000012800000090d61045c6be33d4e727ff45e95a63994e42ace19ccd06ca0b58ad6702f9e7e75a5f11d6394fe9f55c35d3cab5964b89958eb18bdfe194d5489b6a90f9b2efb0c8949a67661d8fb8ac6ac5e02571242379818c7d6eeb034fce0071d4eb576e7aa1bf17ad93a7c84344fcfd8b5ff17b09eb61d93e6841cf4591ac0c4337fccc42c7b24a72eb5055453e6a348b1d9828df70000000904411a31aa46d112c0d3c92512d67ccfc35f48dc19a25ffad9e18a0ece6ae015f33504cb1d4ca0300c9cabad38a38fe06c50583c5623ce42e074cbd16e417cdc71fed50dd6f51dd7fd38580cee5a7b2906f5d7e7a0e23bf3bd0c9233f307b312c2e864388ff1238c0a2fd870e348181f11ff1b6447f3d923ca5047eb54710555999281f490a9b9fca40ce4a280ff8c4940000012800000090a55c92e71af275434e59e4285d7678525ff24933ab0d08c152ab30b2ddb61afa52c57978b2a66ee2df1147fcca0dc3fadadf1a9d91b988ec5a0a0741fbff401c12fd86019108e8ef81f501fe0eca80cdfc7cbfe613debef4e908a84d885835adbf52e2937aadc4a22ae67cd4caf0130dfc647f8baad0e0995890731bad78c52187b7a4b0971696a26c6b5ff6f6d59209000000908e3e553b4b52c252d0995482c1d792c28786df240545fc528bd2cb1ca2d5c49e5bcc835ec7672b2d952bb37bee33d2b0cbafb2c994d42126ace2c9ea5a698ba48e6dc1ace56897246342f7fe7fa4be264e9375074275655f68d2e4aa3f8cddc5735447596d4ddb46dfc1ee419f30dc275659d80eb7540cf6b3bcea68bf8ce4a5edadfc83e4daeb543d1fca493b2c12620000012800000090ecf2f4bf570fccea92afaef1b751726238d64c14e225bc0bd0327e7d2625a3dea643524586a30c47c2d6a37144a012db25febaabd2a2d7103ec7e14637820dd4add4bbeda39020b0aef596f4d6b175cd9ea685590e966c0a523d39c69e0e96e4574d7ed49fe604dbcb7533ad1e421693255c967179bdd82dd9608cdad57fae40fea3b2a10bc43b0017d92bc164433b5f000000907ae74c142200367e643adacf1f2eaf162ee4a92c08bc32382dd3a4713d50886e44acd3dc465271116fed5fdcf03491306eeb1b2ec5360af9df5249b29630a233d852bb7ead6e9e726fa78ebac2171c9bc31fbd06a53a5d0b35e340e21a49c3412577ef5642e54cc9490f8eb65f8959075be6deda8eb0dcc55200263fc10116b2263df6928624ccf43ed58078a7252fba"; function setUp() public virtual { helper = new DecoderHelper(); @@ -46,7 +46,7 @@ contract DecoderTest is Test { helper.computeDiffRootAndMessagesHash(block_empty_1); assertEq( diffRoot, - 0xbffb635339c875f582b0aceb53b962e61f85859a0bdf98093727f5f73f3e2b9f, + 0x0091523e648cbc7b8a533aff93eb01057372e789a0ca601ed2daad5ae21acad3, "Invalid diff root/calldata hash" ); @@ -68,7 +68,7 @@ contract DecoderTest is Test { assertEq(l2BlockNumber, 1, "Invalid block number"); assertEq( startStateHash, - 0xee92c70197159de635a227de74fcfd5fcf36ad07fca32b16f1714bf390bb461c, + 0xebfc0357e496d29717c182bae70315305a4bc802119c8705d521f3888d8ea687, "Invalid start state hash" ); assertEq( @@ -78,7 +78,7 @@ contract DecoderTest is Test { ); assertEq( publicInputsHash, - 0x121bff9d33e9dee94e5ea8d536d8e6aeca5c899711db653eda48ddc7284984d0, + 0x067f07bdc550f37aec7514170b244cb7e0175bcc2fa988d46b69caba88a5d1e7, "Invalid public input hash" ); @@ -106,7 +106,7 @@ contract DecoderTest is Test { assertEq(l2BlockNumber, 1, "Invalid block number"); assertEq( diffRoot, - 0x77fb0c04b4d4a7cf3a680d5d6caef1c7f9d91e1c4d46220b22d20fa633f3e14c, + 0x807911d2bd073477866ec1b0f496db10464729d37023a8d97079c9c353a87dd5, "Invalid diff root/calldata hash" ); assertEq( @@ -116,17 +116,17 @@ contract DecoderTest is Test { ); assertEq( startStateHash, - 0xee92c70197159de635a227de74fcfd5fcf36ad07fca32b16f1714bf390bb461c, + 0xebfc0357e496d29717c182bae70315305a4bc802119c8705d521f3888d8ea687, "Invalid start state hash" ); assertEq( endStateHash, - 0x71b79f5d82c94fe5dbf89e5fa219e4338191bc35b10127a56e3ef49c467ba207, + 0x9e6828e46844a2977404d55da94e0c5529d011fcc33268d299be92c1c0a39b07, "Invalid end state hash" ); assertEq( publicInputsHash, - 0x097fdc3b87eec47728e91f71cc57919387eaa7c3c2aae57bc88279e8c372bc90, + 0x02641bcc168bf5a5d9a14cd74535aeba31f6cf8bfc93af8d0db0d2a0d5eab7f0, "Invalid public input hash" ); diff --git a/yarn-project/archiver/package.json b/yarn-project/archiver/package.json index b1210def20d2..e3168c13f1c8 100644 --- a/yarn-project/archiver/package.json +++ b/yarn-project/archiver/package.json @@ -46,7 +46,7 @@ "lodash.omit": "^4.5.0", "tsc-watch": "^6.0.0", "tslib": "^2.5.0", - "viem": "^1.2.5", + "viem": "1.4.2", "ws": "^8.13.0" }, "devDependencies": { diff --git a/yarn-project/archiver/src/archiver/archiver.ts b/yarn-project/archiver/src/archiver/archiver.ts index 7d3a83b6b245..791693745913 100644 --- a/yarn-project/archiver/src/archiver/archiver.ts +++ b/yarn-project/archiver/src/archiver/archiver.ts @@ -258,13 +258,13 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource } /** - * Gets the `take` amount of L2 blocks starting from `from`. + * Gets up to `limit` amount of L2 blocks starting from `from`. * @param from - Number of the first block to return (inclusive). - * @param take - The number of blocks to return. + * @param limit - The number of blocks to return. * @returns The requested L2 blocks. */ - public getL2Blocks(from: number, take: number): Promise { - return this.store.getL2Blocks(from, take); + public getL2Blocks(from: number, limit: number): Promise { + return this.store.getL2Blocks(from, limit); } /** @@ -322,14 +322,14 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource } /** - * Gets the `take` amount of logs starting from `from`. + * Gets up to `limit` amount of logs starting from `from`. * @param from - Number of the L2 block to which corresponds the first logs to be returned. - * @param take - The number of logs to return. + * @param limit - The number of logs to return. * @param logType - Specifies whether to return encrypted or unencrypted logs. * @returns The requested logs. */ - public getLogs(from: number, take: number, logType: LogType): Promise { - return this.store.getLogs(from, take, logType); + public getLogs(from: number, limit: number, logType: LogType): Promise { + return this.store.getLogs(from, limit, logType); } /** @@ -341,12 +341,12 @@ export class Archiver implements L2BlockSource, L2LogsSource, ContractDataSource } /** - * Gets the `take` amount of pending L1 to L2 messages. - * @param take - The number of messages to return. + * Gets up to `limit` amount of pending L1 to L2 messages. + * @param limit - The number of messages to return. * @returns The requested L1 to L2 messages' keys. */ - getPendingL1ToL2Messages(take: number): Promise { - return this.store.getPendingL1ToL2MessageKeys(take); + getPendingL1ToL2Messages(limit: number): Promise { + return this.store.getPendingL1ToL2MessageKeys(limit); } /** diff --git a/yarn-project/archiver/src/archiver/archiver_store.ts b/yarn-project/archiver/src/archiver/archiver_store.ts index 942387ecd337..a4b8256e6be7 100644 --- a/yarn-project/archiver/src/archiver/archiver_store.ts +++ b/yarn-project/archiver/src/archiver/archiver_store.ts @@ -25,12 +25,12 @@ export interface ArchiverDataStore { addL2Blocks(blocks: L2Block[]): Promise; /** - * Gets the `take` amount of L2 blocks starting from `from`. + * Gets up to `limit` amount of L2 blocks starting from `from`. * @param from - Number of the first block to return (inclusive). - * @param take - The number of blocks to return. + * @param limit - The number of blocks to return. * @returns The requested L2 blocks. */ - getL2Blocks(from: number, take: number): Promise; + getL2Blocks(from: number, limit: number): Promise; /** * Append new logs to the store's list. @@ -63,11 +63,11 @@ export interface ArchiverDataStore { confirmL1ToL2Messages(messageKeys: Fr[]): Promise; /** - * Gets the `take` amount of pending L1 to L2 messages, sorted by fee - * @param take - The number of messages to return (by default NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP). + * Gets up to `limit` amount of pending L1 to L2 messages, sorted by fee + * @param limit - The number of messages to return (by default NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP). * @returns The requested L1 to L2 message keys. */ - getPendingL1ToL2MessageKeys(take: number): Promise; + getPendingL1ToL2MessageKeys(limit: number): Promise; /** * Gets the confirmed L1 to L2 message corresponding to the given message key. @@ -77,13 +77,13 @@ export interface ArchiverDataStore { getConfirmedL1ToL2Message(messageKey: Fr): Promise; /** - * Gets the `take` amount of logs starting from `from`. + * Gets up to `limit` amount of logs starting from `from`. * @param from - Number of the L2 block to which corresponds the first logs to be returned. - * @param take - The number of logs to return. + * @param limit - The number of logs to return. * @param logType - Specifies whether to return encrypted or unencrypted logs. * @returns The requested logs. */ - getLogs(from: number, take: number, logType: LogType): Promise; + getLogs(from: number, limit: number, logType: LogType): Promise; /** * Store new Contract Public Data from an L2 block to the store's list. @@ -250,12 +250,12 @@ export class MemoryArchiverStore implements ArchiverDataStore { } /** - * Gets the `take` amount of L2 blocks starting from `from`. + * Gets up to `limit` amount of L2 blocks starting from `from`. * @param from - Number of the first block to return (inclusive). - * @param take - The number of blocks to return. + * @param limit - The number of blocks to return. * @returns The requested L2 blocks. */ - public getL2Blocks(from: number, take: number): Promise { + public getL2Blocks(from: number, limit: number): Promise { if (from < INITIAL_L2_BLOCK_NUM) { throw new Error(`Invalid block range ${from}`); } @@ -263,17 +263,17 @@ export class MemoryArchiverStore implements ArchiverDataStore { return Promise.resolve([]); } const startIndex = from - INITIAL_L2_BLOCK_NUM; - const endIndex = from + take; + const endIndex = from + limit; return Promise.resolve(this.l2Blocks.slice(startIndex, endIndex)); } /** - * Gets the `take` amount of pending L1 to L2 messages, sorted by fee - * @param take - The number of messages to return (by default NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP). + * Gets up to `limit` amount of pending L1 to L2 messages, sorted by fee + * @param limit - The number of messages to return (by default NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP). * @returns The requested L1 to L2 message keys. */ - public getPendingL1ToL2MessageKeys(take: number = NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP): Promise { - return Promise.resolve(this.pendingL1ToL2Messages.getMessageKeys(take)); + public getPendingL1ToL2MessageKeys(limit: number = NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP): Promise { + return Promise.resolve(this.pendingL1ToL2Messages.getMessageKeys(limit)); } /** @@ -290,13 +290,13 @@ export class MemoryArchiverStore implements ArchiverDataStore { } /** - * Gets the `take` amount of logs starting from `from`. + * Gets up to `limit` amount of logs starting from `from`. * @param from - Number of the L2 block to which corresponds the first logs to be returned. - * @param take - The number of logs to return. + * @param limit - The number of logs to return. * @param logType - Specifies whether to return encrypted or unencrypted logs. * @returns The requested logs. */ - getLogs(from: number, take: number, logType: LogType): Promise { + getLogs(from: number, limit: number, logType: LogType): Promise { if (from < INITIAL_L2_BLOCK_NUM) { throw new Error(`Invalid block range ${from}`); } @@ -305,7 +305,7 @@ export class MemoryArchiverStore implements ArchiverDataStore { return Promise.resolve([]); } const startIndex = from - INITIAL_L2_BLOCK_NUM; - const endIndex = from + take; + const endIndex = from + limit; return Promise.resolve(logs.slice(startIndex, endIndex)); } diff --git a/yarn-project/archiver/src/archiver/l1_to_l2_message_store.test.ts b/yarn-project/archiver/src/archiver/l1_to_l2_message_store.test.ts index aabf40f2cc71..095bc0eb6391 100644 --- a/yarn-project/archiver/src/archiver/l1_to_l2_message_store.test.ts +++ b/yarn-project/archiver/src/archiver/l1_to_l2_message_store.test.ts @@ -63,12 +63,12 @@ describe('pending_l1_to_l2_message_store', () => { expect(store.getMessageKeys(10)).toEqual([]); }); - it('getMessageKeys returns an empty array if take is 0', () => { + it('getMessageKeys returns an empty array if limit is 0', () => { store.addMessage(entryKey, msg); expect(store.getMessageKeys(0)).toEqual([]); }); - it('get messages for a non-empty store when take > number of messages in store', () => { + it('get messages for a non-empty store when limit > number of messages in store', () => { const entryKeys = [1, 2, 3, 4, 5].map(x => new Fr(x)); entryKeys.forEach(entryKey => { store.addMessage(entryKey, L1ToL2Message.random()); diff --git a/yarn-project/archiver/src/archiver/l1_to_l2_message_store.ts b/yarn-project/archiver/src/archiver/l1_to_l2_message_store.ts index 2f63487f6c6a..28fab82865a3 100644 --- a/yarn-project/archiver/src/archiver/l1_to_l2_message_store.ts +++ b/yarn-project/archiver/src/archiver/l1_to_l2_message_store.ts @@ -38,18 +38,18 @@ export class L1ToL2MessageStore { * for removing messages or fetching multiple messages. */ export class PendingL1ToL2MessageStore extends L1ToL2MessageStore { - getMessageKeys(take: number): Fr[] { - if (take < 1) { + getMessageKeys(limit: number): Fr[] { + if (limit < 1) { return []; } - // fetch `take` number of messages from the store with the highest fee. + // fetch `limit` number of messages from the store with the highest fee. // Note the store has multiple of the same message. So if a message has count 2, include both of them in the result: const messages: Fr[] = []; const sortedMessages = Array.from(this.store.values()).sort((a, b) => b.message.fee - a.message.fee); for (const messageAndCount of sortedMessages) { for (let i = 0; i < messageAndCount.count; i++) { messages.push(messageAndCount.message.entryKey!); - if (messages.length === take) { + if (messages.length === limit) { return messages; } } diff --git a/yarn-project/aztec-cli/README.md b/yarn-project/aztec-cli/README.md index a9e97bcfb474..d6493cf2b2e4 100644 --- a/yarn-project/aztec-cli/README.md +++ b/yarn-project/aztec-cli/README.md @@ -363,11 +363,11 @@ Gets all the unencrypted logs from L2 blocks in the specified range. Syntax: ```shell -aztec-cli get-logs [options] +aztec-cli get-logs [options] ``` - `from`: Block number to start fetching logs from. -- `take`: Number of block logs to fetch. +- `limit`: Maximum number of block logs to obtain. Options: diff --git a/yarn-project/aztec-cli/src/index.ts b/yarn-project/aztec-cli/src/index.ts index eca51331f699..942da3dde12d 100644 --- a/yarn-project/aztec-cli/src/index.ts +++ b/yarn-project/aztec-cli/src/index.ts @@ -216,22 +216,22 @@ async function main() { .command('get-logs') .description('Gets all the unencrypted logs from L2 blocks in the range specified.') .argument('', 'Block num start for getting logs.') - .argument('', 'How many block logs to fetch.') + .argument('', 'How many block logs to fetch.') .option('-u, --rpc-url ', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080') .action(async (_from, _take, options) => { let from: number; - let take: number; + let limit: number; try { from = parseInt(_from); - take = parseInt(_take); + limit = parseInt(_take); } catch { log(`Invalid integer value(s) passed: ${_from}, ${_take}`); return; } const client = createAztecRpcClient(options.rpcUrl); - const logs = await client.getUnencryptedLogs(from, take); + const logs = await client.getUnencryptedLogs(from, limit); if (!logs.length) { - log(`No logs found in blocks ${from} to ${from + take}`); + log(`No logs found in blocks ${from} to ${from + limit}`); } else { log('Logs found: \n'); L2BlockL2Logs.unrollLogs(logs).forEach(fnLog => log(`${fnLog.toString('ascii')}\n`)); diff --git a/yarn-project/aztec-node/src/aztec-node/http-node.test.ts b/yarn-project/aztec-node/src/aztec-node/http-node.test.ts index 5e720d4d3340..91a738681763 100644 --- a/yarn-project/aztec-node/src/aztec-node/http-node.test.ts +++ b/yarn-project/aztec-node/src/aztec-node/http-node.test.ts @@ -69,7 +69,7 @@ describe('HttpNode', () => { const result = await httpNode.getBlocks(0, 3); - expect(fetch).toHaveBeenCalledWith(`${TEST_URL}get-blocks?from=0&take=3`); + expect(fetch).toHaveBeenCalledWith(`${TEST_URL}get-blocks?from=0&limit=3`); expect(result).toEqual([block1, block2]); }); @@ -79,7 +79,7 @@ describe('HttpNode', () => { const result = await httpNode.getBlocks(0, 2); - expect(fetch).toHaveBeenCalledWith(`${TEST_URL}get-blocks?from=0&take=2`); + expect(fetch).toHaveBeenCalledWith(`${TEST_URL}get-blocks?from=0&limit=2`); expect(result).toEqual([]); }); }); @@ -157,7 +157,7 @@ describe('HttpNode', () => { const processedLogType = logType === 'encrypted' ? LogType.ENCRYPTED : LogType.UNENCRYPTED; const from = 0; - const take = 3; + const limit = 3; const log1 = L2BlockL2Logs.random(2, 3, 4); const log2 = L2BlockL2Logs.random(1, 5, 2); const response = { @@ -165,9 +165,9 @@ describe('HttpNode', () => { }; setFetchMock(response); - const result = await httpNode.getLogs(from, take, processedLogType); + const result = await httpNode.getLogs(from, limit, processedLogType); - expect(fetch).toHaveBeenCalledWith(`${TEST_URL}get-logs?from=${from}&take=${take}&logType=${processedLogType}`); + expect(fetch).toHaveBeenCalledWith(`${TEST_URL}get-logs?from=${from}&limit=${limit}&logType=${processedLogType}`); expect(result).toEqual([log1, log2]); }); @@ -177,13 +177,15 @@ describe('HttpNode', () => { const processedLogType = logType === 'encrypted' ? LogType.ENCRYPTED : LogType.UNENCRYPTED; const from = 0; - const take = 2; + const limit = 2; const response = {}; setFetchMock(response); - const result = await httpNode.getLogs(from, take, processedLogType); + const result = await httpNode.getLogs(from, limit, processedLogType); - expect(fetch).toHaveBeenCalledWith(`${TEST_URL}get-logs?from=${from}&take=${take}&logType=${processedLogType}`); + expect(fetch).toHaveBeenCalledWith( + `${TEST_URL}get-logs?from=${from}&limit=${limit}&logType=${processedLogType}`, + ); expect(result).toEqual([]); }, ); diff --git a/yarn-project/aztec-node/src/aztec-node/http-node.ts b/yarn-project/aztec-node/src/aztec-node/http-node.ts index 8a306d7f6a4b..0264828de1f9 100644 --- a/yarn-project/aztec-node/src/aztec-node/http-node.ts +++ b/yarn-project/aztec-node/src/aztec-node/http-node.ts @@ -46,14 +46,14 @@ export class HttpNode implements AztecNode { /** * Method to request blocks. Will attempt to return all requested blocks but will return only those available. * @param from - The start of the range of blocks to return. - * @param take - The number of blocks desired. + * @param limit - Maximum number of blocks to obtain. * @returns The blocks requested. */ - async getBlocks(from: number, take: number): Promise { + async getBlocks(from: number, limit: number): Promise { const url = new URL(`${this.baseUrl}/get-blocks`); url.searchParams.append('from', from.toString()); - if (take !== undefined) { - url.searchParams.append('take', take.toString()); + if (limit !== undefined) { + url.searchParams.append('limit', limit.toString()); } const response = await (await fetch(url.toString())).json(); const blocks = response.blocks as string[]; @@ -114,17 +114,17 @@ export class HttpNode implements AztecNode { } /** - * Gets the `take` amount of logs starting from `from`. + * Gets up to `limit` amount of logs starting from `from`. * @param from - Number of the L2 block to which corresponds the first logs to be returned. - * @param take - The number of logs to return. + * @param limit - The maximum number of logs to return. * @param logType - Specifies whether to return encrypted or unencrypted logs. * @returns The requested logs. */ - public async getLogs(from: number, take: number, logType: LogType): Promise { + public async getLogs(from: number, limit: number, logType: LogType): Promise { const url = new URL(`${this.baseUrl}/get-logs`); url.searchParams.append('from', from.toString()); - url.searchParams.append('take', take.toString()); + url.searchParams.append('limit', limit.toString()); url.searchParams.append('logType', logType.toString()); const response = await (await fetch(url.toString())).json(); diff --git a/yarn-project/aztec-node/src/aztec-node/server.ts b/yarn-project/aztec-node/src/aztec-node/server.ts index c99d278571da..f6bf19bc260a 100644 --- a/yarn-project/aztec-node/src/aztec-node/server.ts +++ b/yarn-project/aztec-node/src/aztec-node/server.ts @@ -118,11 +118,11 @@ export class AztecNodeService implements AztecNode { /** * Method to request blocks. Will attempt to return all requested blocks but will return only those available. * @param from - The start of the range of blocks to return. - * @param take - The number of blocks desired. + * @param limit - The maximum number of blocks to obtain. * @returns The blocks requested. */ - public async getBlocks(from: number, take: number): Promise { - return (await this.blockSource.getL2Blocks(from, take)) ?? []; + public async getBlocks(from: number, limit: number): Promise { + return (await this.blockSource.getL2Blocks(from, limit)) ?? []; } /** @@ -170,15 +170,15 @@ export class AztecNodeService implements AztecNode { } /** - * Gets the `take` amount of logs starting from `from`. + * Gets up to `limit` amount of logs starting from `from`. * @param from - Number of the L2 block to which corresponds the first logs to be returned. - * @param take - The number of logs to return. + * @param limit - The maximum number of logs to return. * @param logType - Specifies whether to return encrypted or unencrypted logs. * @returns The requested logs. */ - public getLogs(from: number, take: number, logType: LogType): Promise { + public getLogs(from: number, limit: number, logType: LogType): Promise { const logSource = logType === LogType.ENCRYPTED ? this.encryptedLogsSource : this.unencryptedLogsSource; - return logSource.getLogs(from, take, logType); + return logSource.getLogs(from, limit, logType); } /** diff --git a/yarn-project/aztec-rpc/src/aztec_rpc_http/aztec_rpc_http_server.ts b/yarn-project/aztec-rpc/src/aztec_rpc_http/aztec_rpc_http_server.ts index 91cc1cf74050..1439c8edc5b9 100644 --- a/yarn-project/aztec-rpc/src/aztec_rpc_http/aztec_rpc_http_server.ts +++ b/yarn-project/aztec-rpc/src/aztec_rpc_http/aztec_rpc_http_server.ts @@ -1,6 +1,6 @@ import { AztecAddress } from '@aztec/foundation/aztec-address'; import { Fr, Point } from '@aztec/foundation/fields'; -import { JsonRpcServer } from '@aztec/foundation/json-rpc'; +import { JsonRpcServer } from '@aztec/foundation/json-rpc/server'; import { ContractData, ContractDeploymentTx, diff --git a/yarn-project/aztec-rpc/src/aztec_rpc_server/aztec_rpc_server.ts b/yarn-project/aztec-rpc/src/aztec_rpc_server/aztec_rpc_server.ts index 5a02b94fb859..cc28f44a2783 100644 --- a/yarn-project/aztec-rpc/src/aztec_rpc_server/aztec_rpc_server.ts +++ b/yarn-project/aztec-rpc/src/aztec_rpc_server/aztec_rpc_server.ts @@ -250,8 +250,8 @@ export class AztecRPCServer implements AztecRPC { return await this.node.getContractInfo(contractAddress); } - public async getUnencryptedLogs(from: number, take: number): Promise { - return await this.node.getLogs(from, take, LogType.UNENCRYPTED); + public async getUnencryptedLogs(from: number, limit: number): Promise { + return await this.node.getLogs(from, limit, LogType.UNENCRYPTED); } async #getExecutionRequest( diff --git a/yarn-project/aztec-rpc/src/synchroniser/synchroniser.ts b/yarn-project/aztec-rpc/src/synchroniser/synchroniser.ts index 2f09285ec781..6a5cc776112c 100644 --- a/yarn-project/aztec-rpc/src/synchroniser/synchroniser.ts +++ b/yarn-project/aztec-rpc/src/synchroniser/synchroniser.ts @@ -34,10 +34,10 @@ export class Synchroniser { * available, it retries after a specified interval. * * @param from - The starting position for fetching encrypted logs and blocks. - * @param take - The number of encrypted logs and blocks to fetch in each iteration. + * @param limit - The maximum number of encrypted, unencrypted logs and blocks to fetch in each iteration. * @param retryInterval - The time interval (in ms) to wait before retrying if no data is available. */ - public async start(from = 1, take = 1, retryInterval = 1000) { + public async start(from = 1, limit = 1, retryInterval = 1000) { if (this.running) return; this.running = true; @@ -45,7 +45,7 @@ export class Synchroniser { const run = async () => { while (this.running) { - from = await this.work(from, take, retryInterval); + from = await this.work(from, limit, retryInterval); } }; @@ -63,21 +63,21 @@ export class Synchroniser { await this.db.setTreeRoots(treeRoots); } - protected async work(from = 1, take = 1, retryInterval = 1000): Promise { + protected async work(from = 1, limit = 1, retryInterval = 1000): Promise { try { - let encryptedLogs = await this.node.getLogs(from, take, LogType.ENCRYPTED); + let encryptedLogs = await this.node.getLogs(from, limit, LogType.ENCRYPTED); if (!encryptedLogs.length) { await this.interruptableSleep.sleep(retryInterval); return from; } - let unencryptedLogs = await this.node.getLogs(from, take, LogType.UNENCRYPTED); + let unencryptedLogs = await this.node.getLogs(from, limit, LogType.UNENCRYPTED); if (!unencryptedLogs.length) { await this.interruptableSleep.sleep(retryInterval); return from; } - // Note: If less than `take` encrypted logs is returned, then we fetch only that number of blocks. + // Note: If less than `limit` encrypted logs is returned, then we fetch only that number of blocks. const blocks = await this.node.getBlocks(from, encryptedLogs.length); if (!blocks.length) { await this.interruptableSleep.sleep(retryInterval); diff --git a/yarn-project/aztec-sandbox/src/examples/zk_token_contract.ts b/yarn-project/aztec-sandbox/src/examples/zk_token_contract.ts index b59bb0bc132f..bb4e3349a524 100644 --- a/yarn-project/aztec-sandbox/src/examples/zk_token_contract.ts +++ b/yarn-project/aztec-sandbox/src/examples/zk_token_contract.ts @@ -1,5 +1,4 @@ -import { Contract, Wallet, createAccounts, createAztecRpcClient } from '@aztec/aztec.js'; -import { AztecAddress, Fr, PrivateKey } from '@aztec/circuits.js'; +import { AztecAddress, Contract, Fr, PrivateKey, Wallet, createAccounts, createAztecRpcClient } from '@aztec/aztec.js'; import { createDebugLogger } from '@aztec/foundation/log'; import { SchnorrSingleKeyAccountContractAbi } from '@aztec/noir-contracts/artifacts'; import { ZkTokenContract } from '@aztec/noir-contracts/types'; @@ -27,7 +26,6 @@ async function deployZKContract(owner: AztecAddress) { const receipt = await tx.getReceipt(); const contract = await ZkTokenContract.create(receipt.contractAddress!, wallet); await tx.isMined(); - await tx.getReceipt(); logger('L2 contract deployed'); return contract; } diff --git a/yarn-project/aztec.js/package.json b/yarn-project/aztec.js/package.json index 3f8796885221..350478985b0c 100644 --- a/yarn-project/aztec.js/package.json +++ b/yarn-project/aztec.js/package.json @@ -2,7 +2,10 @@ "name": "@aztec/aztec.js", "version": "0.1.0", "type": "module", - "exports": "./dest/index.js", + "exports": { + "node": "./dest/index.js", + "default": "./dest/main.js" + }, "typedocOptions": { "entryPoints": [ "./src/index.ts" @@ -13,7 +16,8 @@ "scripts": { "prepare": "node ../yarn-project-base/scripts/update_build_manifest.mjs package.json", "prepare:check": "node ../yarn-project-base/scripts/update_build_manifest.mjs package.json --check", - "build": "yarn clean && tsc -b", + "build": "yarn clean && tsc -b && webpack", + "build:web": "webpack", "build:dev": "tsc -b --watch", "clean": "rm -rf ./dest .tsbuildinfo", "formatting": "run -T prettier --check ./src && run -T eslint ./src", @@ -21,7 +25,8 @@ "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --passWithNoTests" }, "inherits": [ - "../package.common.json" + "../package.common.json", + "./package.local.json" ], "jest": { "preset": "ts-jest/presets/default-esm", @@ -44,11 +49,21 @@ "@types/jest": "^29.5.0", "@types/lodash.partition": "^4.6.0", "@types/node": "^18.7.23", + "buffer": "^6.0.3", + "crypto-browserify": "^3.12.0", "jest": "^29.5.0", "jest-mock-extended": "^3.0.3", + "process": "^0.11.10", + "resolve-typescript-plugin": "^2.0.1", + "stream-browserify": "^3.0.0", "ts-jest": "^29.1.0", + "ts-loader": "^9.4.4", "ts-node": "^10.9.1", - "typescript": "^5.0.4" + "tty-browserify": "^0.0.1", + "typescript": "^5.0.4", + "util": "^0.12.5", + "webpack": "^5.88.2", + "webpack-cli": "^5.1.4" }, "files": [ "dest", diff --git a/yarn-project/aztec.js/package.local.json b/yarn-project/aztec.js/package.local.json new file mode 100644 index 000000000000..11f862cc48a4 --- /dev/null +++ b/yarn-project/aztec.js/package.local.json @@ -0,0 +1,5 @@ +{ + "scripts": { + "build": "yarn clean && tsc -b && webpack" + } +} \ No newline at end of file diff --git a/yarn-project/aztec.js/src/aztec_rpc_client/aztec_rpc_client.ts b/yarn-project/aztec.js/src/aztec_rpc_client/aztec_rpc_client.ts index a51543098844..ea8ef400bfff 100644 --- a/yarn-project/aztec.js/src/aztec_rpc_client/aztec_rpc_client.ts +++ b/yarn-project/aztec.js/src/aztec_rpc_client/aztec_rpc_client.ts @@ -1,5 +1,5 @@ import { AztecAddress, EthAddress, Fr, Point, PrivateKey } from '@aztec/circuits.js'; -import { createJsonRpcClient, defaultFetch } from '@aztec/foundation/json-rpc'; +import { createJsonRpcClient, defaultFetch } from '@aztec/foundation/json-rpc/client'; import { AztecRPC, ContractData, @@ -11,6 +11,8 @@ import { TxReceipt, } from '@aztec/types'; +export { mustSucceedFetch } from '@aztec/foundation/json-rpc/client'; + export const createAztecRpcClient = (url: string, fetch = defaultFetch): AztecRPC => createJsonRpcClient( url, diff --git a/yarn-project/aztec.js/src/aztec_rpc_client/wallet.ts b/yarn-project/aztec.js/src/aztec_rpc_client/wallet.ts index b88d2a4b4236..a2dc7ff0d279 100644 --- a/yarn-project/aztec.js/src/aztec_rpc_client/wallet.ts +++ b/yarn-project/aztec.js/src/aztec_rpc_client/wallet.ts @@ -76,8 +76,8 @@ export abstract class BaseWallet implements Wallet { getContractInfo(contractAddress: AztecAddress): Promise { return this.rpc.getContractInfo(contractAddress); } - getUnencryptedLogs(from: number, take: number): Promise { - return this.rpc.getUnencryptedLogs(from, take); + getUnencryptedLogs(from: number, limit: number): Promise { + return this.rpc.getUnencryptedLogs(from, limit); } getBlockNum(): Promise { return this.rpc.getBlockNum(); diff --git a/yarn-project/aztec.js/src/contract_deployer/contract_deployer.test.ts b/yarn-project/aztec.js/src/contract_deployer/contract_deployer.test.ts index ce8deb04bf9c..df700e27f1d6 100644 --- a/yarn-project/aztec.js/src/contract_deployer/contract_deployer.test.ts +++ b/yarn-project/aztec.js/src/contract_deployer/contract_deployer.test.ts @@ -2,7 +2,6 @@ import { AztecAddress, EthAddress, Fr, Point } from '@aztec/circuits.js'; import { ContractAbi, FunctionType } from '@aztec/foundation/abi'; import { AztecRPC, PublicKey, Tx, TxHash, TxReceipt } from '@aztec/types'; -import { randomBytes } from 'crypto'; import { MockProxy, mock } from 'jest-mock-extended'; import { ContractDeployer } from './contract_deployer.js'; @@ -25,7 +24,7 @@ describe.skip('Contract Deployer', () => { }; const publicKey: PublicKey = Point.random(); - const portalContract = new EthAddress(randomBytes(EthAddress.SIZE_IN_BYTES)); + const portalContract = EthAddress.random(); const contractAddressSalt = Fr.random(); const account = AztecAddress.random(); const args = [12, 345n]; diff --git a/yarn-project/aztec.js/src/index.ts b/yarn-project/aztec.js/src/index.ts index f8f3b854dd3c..0b86407c32cd 100644 --- a/yarn-project/aztec.js/src/index.ts +++ b/yarn-project/aztec.js/src/index.ts @@ -9,4 +9,22 @@ export * from './contract_deployer/deploy_method.js'; // export * from '@aztec/aztec-rpc'; export { AztecAddress, EthAddress, Point, Fr } from '@aztec/circuits.js'; -export { AztecRPC } from '@aztec/types'; +export { + AztecRPC, + ContractData, + ContractDeploymentTx, + ContractPublicData, + DeployedContract, + ExecutionRequest, + L2BlockL2Logs, + NodeInfo, + PackedArguments, + PublicKey, + PrivateKey, + Tx, + TxExecutionRequest, + TxHash, + TxReceipt, + TxStatus, + emptyExecutionRequest, +} from '@aztec/types'; diff --git a/yarn-project/aztec.js/tsconfig.dest.json b/yarn-project/aztec.js/tsconfig.dest.json new file mode 100644 index 000000000000..f47bbdd408d8 --- /dev/null +++ b/yarn-project/aztec.js/tsconfig.dest.json @@ -0,0 +1,17 @@ +{ + "extends": ".", + "references": [ + { + "path": "../circuits.js/tsconfig.dest.json" + }, + { + "path": "../foundation/tsconfig.dest.json" + }, + { + "path": "../types/tsconfig.dest.json" + } + ], + "exclude": [ + "src/**/*.test.ts" + ] +} \ No newline at end of file diff --git a/yarn-project/aztec.js/webpack.config.js b/yarn-project/aztec.js/webpack.config.js new file mode 100644 index 000000000000..67005d8790a4 --- /dev/null +++ b/yarn-project/aztec.js/webpack.config.js @@ -0,0 +1,74 @@ +// import CopyWebpackPlugin from 'copy-webpack-plugin'; +import { createRequire } from 'module'; +import { dirname, resolve } from 'path'; +import path from 'path'; +import ResolveTypeScriptPlugin from 'resolve-typescript-plugin'; +import { fileURLToPath } from 'url'; +import webpack from 'webpack'; + +const require = createRequire(import.meta.url); + +export default { + target: 'web', + mode: 'production', + devtool: false, + entry: { + main: './src/index.ts', + }, + module: { + rules: [ + { + test: /\.tsx?$/, + use: [ + { + loader: 'ts-loader', + options: { + configFile: 'tsconfig.dest.json', + }, + }, + ], + }, + ], + }, + output: { + path: resolve(dirname(fileURLToPath(import.meta.url)), './dest'), + filename: 'main.js', + library: { + type: 'module', + }, + chunkFormat: 'module', + }, + experiments: { + outputModule: true, + }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env': { + NODE_ENV: JSON.stringify('production'), + }, + }), + new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }), + ], + resolve: { + plugins: [new ResolveTypeScriptPlugin()], + alias: { + // All node specific code, wherever it's located, should be imported as below. + // Provides a clean and simple way to always strip out the node code for the web build. + './node/index.js': false, + }, + fallback: { + crypto: false, + os: false, + fs: false, + path: false, + url: false, + worker_threads: false, + events: require.resolve('events/'), + buffer: require.resolve('buffer/'), + util: require.resolve('util/'), + stream: require.resolve('stream-browserify'), + string_decoder: require.resolve('string_decoder/'), + tty: require.resolve('tty-browserify'), + }, + }, +}; diff --git a/yarn-project/circuits.js/src/barretenberg/crs/index.ts b/yarn-project/circuits.js/src/barretenberg/crs/index.ts deleted file mode 100644 index f2b50b40861e..000000000000 --- a/yarn-project/circuits.js/src/barretenberg/crs/index.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { existsSync } from 'fs'; -import { open } from 'fs/promises'; -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; - -/** - * The path to our SRS object, assuming that we are in the aztec3-packages folder structure. - */ -export const SRS_DEV_PATH = - dirname(fileURLToPath(import.meta.url)) + - '/../../../../circuits/cpp/barretenberg/cpp/srs_db/ignition/monomial/transcript00.dat'; -/** - * Downloader for CRS from the web or local. - */ -export class NetCrs { - private data!: Uint8Array; - private g2Data!: Uint8Array; - - constructor( - /** - * The number of circuit gates. - */ - public readonly numPoints: number, - ) {} - - /** - * Download the data. - */ - async init() { - // We need numPoints number of g1 points. - const g1Start = 28; - const g1End = g1Start + this.numPoints * 64 - 1; - - // Download required range of data. - const response = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/sealed/transcript00.dat', { - headers: { - Range: `bytes=${g1Start}-${g1End}`, - }, - }); - - this.data = new Uint8Array(await response.arrayBuffer()); - - await this.downloadG2Data(); - } - - /** - * Download the G2 points data. - */ - async downloadG2Data() { - const g2Start = 28 + 5040000 * 64; - const g2End = g2Start + 128 - 1; - - const response2 = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/sealed/transcript00.dat', { - headers: { - Range: `bytes=${g2Start}-${g2End}`, - }, - }); - - this.g2Data = new Uint8Array(await response2.arrayBuffer()); - } - - /** - * Verification key data. - * @returns The verification key. - */ - getG1Data(): Uint8Array { - return this.data; - } - - /** - * G2 points data. - * @returns The points data. - */ - getG2Data(): Uint8Array { - return this.g2Data; - } -} - -/** - * Downloader for CRS from a local file (for Node). - */ -export class FileCrs { - private data!: Uint8Array; - private g2Data!: Uint8Array; - - constructor( - /** - * The number of circuit gates. - */ - public readonly numPoints: number, - private path: string, - ) {} - - /** - * Read the data file. - */ - async init() { - // We need numPoints number of g1 points. - const g1Start = 28; - const g1Length = this.numPoints * 64; - - const g2Start = 28 + 5040000 * 64; - const g2Length = 128; - // Lazily seek our data - const fileHandle = await open(this.path, 'r'); - try { - this.data = Buffer.alloc(g1Length); - await fileHandle.read(this.data, 0, g1Length, g1Start); - - this.g2Data = Buffer.alloc(g2Length); - await fileHandle.read(this.g2Data, 0, g2Length, g2Start); - } finally { - await fileHandle.close(); - } - } - - /** - * Verification key data. - * @returns The verification key. - */ - getG1Data(): Uint8Array { - return this.data; - } - - /** - * G2 points data. - * @returns The points data. - */ - getG2Data(): Uint8Array { - return this.g2Data; - } -} - -/** - * Generic CRS finder utility class. - */ -export class Crs { - private crs: FileCrs | NetCrs; - - constructor( - /** - * The number of circuit gates. - */ - public readonly numPoints: number, - ) { - this.crs = existsSync(SRS_DEV_PATH) ? new FileCrs(numPoints, SRS_DEV_PATH) : new NetCrs(numPoints); - } - - /** - * Read CRS from our chosen source. - */ - async init() { - await this.crs.init(); - } - - /** - * Verification key data. - * @returns The verification key. - */ - getG1Data(): Uint8Array { - return this.crs.getG1Data(); - } - - /** - * G2 points data. - * @returns The points data. - */ - getG2Data(): Uint8Array { - return this.crs.getG2Data(); - } -} diff --git a/yarn-project/circuits.js/src/barretenberg/index.ts b/yarn-project/circuits.js/src/barretenberg/index.ts index d99d9368c9d4..d86f006724fd 100644 --- a/yarn-project/circuits.js/src/barretenberg/index.ts +++ b/yarn-project/circuits.js/src/barretenberg/index.ts @@ -1,2 +1 @@ -export * from './crs/index.js'; export * from './crypto/index.js'; diff --git a/yarn-project/circuits.js/src/cbind/circuits.gen.ts b/yarn-project/circuits.js/src/cbind/circuits.gen.ts index fb522144789b..b418e97eb310 100644 --- a/yarn-project/circuits.js/src/cbind/circuits.gen.ts +++ b/yarn-project/circuits.js/src/cbind/circuits.gen.ts @@ -429,8 +429,8 @@ interface MsgpackCombinedAccumulatedData { unencrypted_log_preimages_length: Buffer; new_contracts: Tuple; optionally_revealed_data: Tuple; - public_data_update_requests: Tuple; - public_data_reads: Tuple; + public_data_update_requests: Tuple; + public_data_reads: Tuple; } export function toCombinedAccumulatedData(o: MsgpackCombinedAccumulatedData): CombinedAccumulatedData { @@ -1179,8 +1179,8 @@ interface MsgpackPublicCircuitPublicInputs { call_context: MsgpackCallContext; args_hash: Buffer; return_values: Tuple; - contract_storage_update_requests: Tuple; - contract_storage_reads: Tuple; + contract_storage_update_requests: Tuple; + contract_storage_reads: Tuple; public_call_stack: Tuple; new_commitments: Tuple; new_nullifiers: Tuple; diff --git a/yarn-project/circuits.js/src/cbind/constants.gen.ts b/yarn-project/circuits.js/src/cbind/constants.gen.ts index 4ec46033df7a..dcdc92282665 100644 --- a/yarn-project/circuits.js/src/cbind/constants.gen.ts +++ b/yarn-project/circuits.js/src/cbind/constants.gen.ts @@ -7,16 +7,16 @@ export const MAX_NEW_NULLIFIERS_PER_CALL = 4; export const MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL = 4; export const MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL = 4; export const MAX_NEW_L2_TO_L1_MSGS_PER_CALL = 2; -export const MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL = 4; -export const MAX_PUBLIC_DATA_READS_PER_CALL = 4; +export const MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL = 8; +export const MAX_PUBLIC_DATA_READS_PER_CALL = 8; export const MAX_READ_REQUESTS_PER_CALL = 4; export const MAX_NEW_COMMITMENTS_PER_TX = 16; export const MAX_NEW_NULLIFIERS_PER_TX = 16; export const MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX = 8; export const MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX = 8; export const MAX_NEW_L2_TO_L1_MSGS_PER_TX = 2; -export const MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX = 4; -export const MAX_PUBLIC_DATA_READS_PER_TX = 4; +export const MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX = 8; +export const MAX_PUBLIC_DATA_READS_PER_TX = 8; export const MAX_NEW_CONTRACTS_PER_TX = 1; export const MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX = 4; export const MAX_READ_REQUESTS_PER_TX = 16; @@ -60,11 +60,11 @@ export const CONTRACT_DEPLOYMENT_DATA_LENGTH = 6; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 56; export const CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH = 3; export const CONTRACT_STORAGE_READ_LENGTH = 2; -export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 55; +export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 75; export const GET_NOTES_ORACLE_RETURN_LENGTH = 86; export const EMPTY_NULLIFIED_COMMITMENT = 1000000; export const CALL_PRIVATE_FUNCTION_RETURN_SIZE = 62; -export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 33; +export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 41; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH = 46; export enum GeneratorIndex { COMMITMENT = 1, diff --git a/yarn-project/circuits.js/src/crs/index.ts b/yarn-project/circuits.js/src/crs/index.ts index f2b50b40861e..ca2c6701ff50 100644 --- a/yarn-project/circuits.js/src/crs/index.ts +++ b/yarn-project/circuits.js/src/crs/index.ts @@ -1,14 +1,9 @@ +import isNode from 'detect-node'; import { existsSync } from 'fs'; import { open } from 'fs/promises'; import { dirname } from 'path'; import { fileURLToPath } from 'url'; -/** - * The path to our SRS object, assuming that we are in the aztec3-packages folder structure. - */ -export const SRS_DEV_PATH = - dirname(fileURLToPath(import.meta.url)) + - '/../../../../circuits/cpp/barretenberg/cpp/srs_db/ignition/monomial/transcript00.dat'; /** * Downloader for CRS from the web or local. */ @@ -143,7 +138,17 @@ export class Crs { */ public readonly numPoints: number, ) { - this.crs = existsSync(SRS_DEV_PATH) ? new FileCrs(numPoints, SRS_DEV_PATH) : new NetCrs(numPoints); + if (isNode) { + /** + * The path to our SRS object, assuming that we are in the aztec3-packages folder structure. + */ + const SRS_DEV_PATH = + dirname(fileURLToPath(import.meta.url)) + + '/../../../../circuits/cpp/barretenberg/cpp/srs_db/ignition/monomial/transcript00.dat'; + this.crs = existsSync(SRS_DEV_PATH) ? new FileCrs(numPoints, SRS_DEV_PATH) : new NetCrs(numPoints); + } else { + this.crs = new NetCrs(numPoints); + } } /** diff --git a/yarn-project/circuits.js/src/kernel/public_kernel.test.ts b/yarn-project/circuits.js/src/kernel/public_kernel.test.ts index a0d13914ce89..7bf12b129421 100644 --- a/yarn-project/circuits.js/src/kernel/public_kernel.test.ts +++ b/yarn-project/circuits.js/src/kernel/public_kernel.test.ts @@ -1,4 +1,10 @@ -import { CircuitError, MAX_PUBLIC_DATA_READS_PER_TX, makeTuple, simulatePublicKernelCircuit } from '../index.js'; +import { + CircuitError, + MAX_PUBLIC_DATA_READS_PER_CALL, + MAX_PUBLIC_DATA_READS_PER_TX, + makeTuple, + simulatePublicKernelCircuit, +} from '../index.js'; import { makePublicDataRead, makePublicKernelInputsWithEmptyOutput } from '../tests/factories.js'; describe('kernel/public_kernel', () => { @@ -34,7 +40,7 @@ describe('kernel/public_kernel', () => { await expect(simulatePublicKernelCircuit(input)).rejects.toThrow( new CircuitError( 7009, - `public_kernel_circuit: too many public data reads in one tx - array_push: capacity exceeded. Limit: 4 + `public_kernel_circuit: too many public data reads in one tx - array_push: capacity exceeded. Limit: ${MAX_PUBLIC_DATA_READS_PER_CALL} Refer to https://docs.aztec.network/aztec/protocol/errors for more information.`, ), ); diff --git a/yarn-project/circuits.js/src/structs/kernel/__snapshots__/index.test.ts.snap b/yarn-project/circuits.js/src/structs/kernel/__snapshots__/index.test.ts.snap index bd6fe53a7bb6..b5c9ff365f42 100644 --- a/yarn-project/circuits.js/src/structs/kernel/__snapshots__/index.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/kernel/__snapshots__/index.test.ts.snap @@ -171,6 +171,18 @@ new_value: 0xc05 leaf_index: 0xc04 old_value: 0xc05 new_value: 0xc06 + leaf_index: 0xc05 +old_value: 0xc06 +new_value: 0xc07 + leaf_index: 0xc06 +old_value: 0xc07 +new_value: 0xc08 + leaf_index: 0xc07 +old_value: 0xc08 +new_value: 0xc09 + leaf_index: 0xc08 +old_value: 0xc09 +new_value: 0xc0a ] public_data_reads: [ leaf_index: 0xd01 @@ -181,6 +193,14 @@ value: 0xd03 value: 0xd04 leaf_index: 0xd04 value: 0xd05 + leaf_index: 0xd05 +value: 0xd06 + leaf_index: 0xd06 +value: 0xd07 + leaf_index: 0xd07 +value: 0xd08 + leaf_index: 0xd08 +value: 0xd09 ] " `; @@ -359,6 +379,18 @@ new_value: 0xc05 leaf_index: 0xc04 old_value: 0xc05 new_value: 0xc06 + leaf_index: 0xc05 +old_value: 0xc06 +new_value: 0xc07 + leaf_index: 0xc06 +old_value: 0xc07 +new_value: 0xc08 + leaf_index: 0xc07 +old_value: 0xc08 +new_value: 0xc09 + leaf_index: 0xc08 +old_value: 0xc09 +new_value: 0xc0a ] public_data_reads: [ leaf_index: 0xd01 @@ -369,6 +401,14 @@ value: 0xd03 value: 0xd04 leaf_index: 0xd04 value: 0xd05 + leaf_index: 0xd05 +value: 0xd06 + leaf_index: 0xd06 +value: 0xd07 + leaf_index: 0xd07 +value: 0xd08 + leaf_index: 0xd08 +value: 0xd09 ] constants: @@ -876,6 +916,18 @@ new_value: 0xc05 leaf_index: 0xc04 old_value: 0xc05 new_value: 0xc06 + leaf_index: 0xc05 +old_value: 0xc06 +new_value: 0xc07 + leaf_index: 0xc06 +old_value: 0xc07 +new_value: 0xc08 + leaf_index: 0xc07 +old_value: 0xc08 +new_value: 0xc09 + leaf_index: 0xc08 +old_value: 0xc09 +new_value: 0xc0a ] public_data_reads: [ leaf_index: 0xd01 @@ -886,6 +938,14 @@ value: 0xd03 value: 0xd04 leaf_index: 0xd04 value: 0xd05 + leaf_index: 0xd05 +value: 0xd06 + leaf_index: 0xd06 +value: 0xd07 + leaf_index: 0xd07 +value: 0xd08 + leaf_index: 0xd08 +value: 0xd09 ] constants: @@ -1365,6 +1425,18 @@ new_value: 0xc05 leaf_index: 0xc04 old_value: 0xc05 new_value: 0xc06 + leaf_index: 0xc05 +old_value: 0xc06 +new_value: 0xc07 + leaf_index: 0xc06 +old_value: 0xc07 +new_value: 0xc08 + leaf_index: 0xc07 +old_value: 0xc08 +new_value: 0xc09 + leaf_index: 0xc08 +old_value: 0xc09 +new_value: 0xc0a ] public_data_reads: [ leaf_index: 0xd01 @@ -1375,6 +1447,14 @@ value: 0xd03 value: 0xd04 leaf_index: 0xd04 value: 0xd05 + leaf_index: 0xd05 +value: 0xd06 + leaf_index: 0xd06 +value: 0xd07 + leaf_index: 0xd07 +value: 0xd08 + leaf_index: 0xd08 +value: 0xd09 ] constants: @@ -1579,6 +1659,18 @@ new_value: 0xc05 leaf_index: 0xc04 old_value: 0xc05 new_value: 0xc06 + leaf_index: 0xc05 +old_value: 0xc06 +new_value: 0xc07 + leaf_index: 0xc06 +old_value: 0xc07 +new_value: 0xc08 + leaf_index: 0xc07 +old_value: 0xc08 +new_value: 0xc09 + leaf_index: 0xc08 +old_value: 0xc09 +new_value: 0xc0a ] public_data_reads: [ leaf_index: 0xd01 @@ -1589,6 +1681,14 @@ value: 0xd03 value: 0xd04 leaf_index: 0xd04 value: 0xd05 + leaf_index: 0xd05 +value: 0xd06 + leaf_index: 0xd06 +value: 0xd07 + leaf_index: 0xd07 +value: 0xd08 + leaf_index: 0xd08 +value: 0xd09 ] constants: @@ -1655,6 +1755,18 @@ new_value: 0x1413 storage_slot: 0x1412 old_value: 0x1413 new_value: 0x1414 + storage_slot: 0x1413 +old_value: 0x1414 +new_value: 0x1415 + storage_slot: 0x1414 +old_value: 0x1415 +new_value: 0x1416 + storage_slot: 0x0 +old_value: 0x1 +new_value: 0x2 + storage_slot: 0x0 +old_value: 0x1 +new_value: 0x2 storage_slot: 0x0 old_value: 0x1 new_value: 0x2 @@ -1666,12 +1778,20 @@ contract_storage_reads: [ storage_slot: 0x1511 current_value: 0x1512 storage_slot: 0x1512 current_value: 0x1513 + storage_slot: 0x1513 +current_value: 0x1514 + storage_slot: 0x1514 +current_value: 0x1515 + storage_slot: 0x0 +current_value: 0x1 + storage_slot: 0x0 +current_value: 0x1 storage_slot: 0x0 current_value: 0x1 storage_slot: 0x0 current_value: 0x1 ] -public_call_stack: [ 0x33e75c7b393a616d4bfb82441015c9b345222124b7790927a3068d995b739d6 0x1c83b599bd1c954736b693d7effcfbfdaa9681ccdbbf1d0fa49626c74c7623ac 0x24db74658faa3c2978a9ec2967a88a90cd820260259fee459437efe95fb166e8 0x2fafe59d70d0a45d9a3dc5920139a491adbc0918060d52b2f1e7c7a0779270fe ] +public_call_stack: [ 0x136824172dbc34c53430101e3a04e1ab503cebad18c5bfa6c529af15d79e8843 0x1b21b2e1c216fccf7b51f75cf1f98de9945755ee23ab1dd6336b5513a64befaa 0x143ce8bf3701eb9f520cf686440db29c7a5385ebc6543bfcbbc0c8ea589ef1c1 0x1093a857092bc1ce7d1ca2fe1cd9216294429424b63f76513e3a5be183095ade ] new_commitments: [ 0x1711 0x1712 0x0 0x0 ] new_nullifiers: [ 0x1811 0x1812 0x0 0x0 ] new_l2_to_l1_msgs: [ 0x1911 0x0 ] @@ -1704,6 +1824,18 @@ new_value: 0x1713 storage_slot: 0x1712 old_value: 0x1713 new_value: 0x1714 + storage_slot: 0x1713 +old_value: 0x1714 +new_value: 0x1715 + storage_slot: 0x1714 +old_value: 0x1715 +new_value: 0x1716 + storage_slot: 0x0 +old_value: 0x1 +new_value: 0x2 + storage_slot: 0x0 +old_value: 0x1 +new_value: 0x2 storage_slot: 0x0 old_value: 0x1 new_value: 0x2 @@ -1715,6 +1847,14 @@ contract_storage_reads: [ storage_slot: 0x1811 current_value: 0x1812 storage_slot: 0x1812 current_value: 0x1813 + storage_slot: 0x1813 +current_value: 0x1814 + storage_slot: 0x1814 +current_value: 0x1815 + storage_slot: 0x0 +current_value: 0x1 + storage_slot: 0x0 +current_value: 0x1 storage_slot: 0x0 current_value: 0x1 storage_slot: 0x0 @@ -1751,6 +1891,18 @@ new_value: 0x1714 storage_slot: 0x1713 old_value: 0x1714 new_value: 0x1715 + storage_slot: 0x1714 +old_value: 0x1715 +new_value: 0x1716 + storage_slot: 0x1715 +old_value: 0x1716 +new_value: 0x1717 + storage_slot: 0x0 +old_value: 0x1 +new_value: 0x2 + storage_slot: 0x0 +old_value: 0x1 +new_value: 0x2 storage_slot: 0x0 old_value: 0x1 new_value: 0x2 @@ -1762,6 +1914,14 @@ contract_storage_reads: [ storage_slot: 0x1812 current_value: 0x1813 storage_slot: 0x1813 current_value: 0x1814 + storage_slot: 0x1814 +current_value: 0x1815 + storage_slot: 0x1815 +current_value: 0x1816 + storage_slot: 0x0 +current_value: 0x1 + storage_slot: 0x0 +current_value: 0x1 storage_slot: 0x0 current_value: 0x1 storage_slot: 0x0 @@ -1798,6 +1958,18 @@ new_value: 0x1715 storage_slot: 0x1714 old_value: 0x1715 new_value: 0x1716 + storage_slot: 0x1715 +old_value: 0x1716 +new_value: 0x1717 + storage_slot: 0x1716 +old_value: 0x1717 +new_value: 0x1718 + storage_slot: 0x0 +old_value: 0x1 +new_value: 0x2 + storage_slot: 0x0 +old_value: 0x1 +new_value: 0x2 storage_slot: 0x0 old_value: 0x1 new_value: 0x2 @@ -1809,6 +1981,14 @@ contract_storage_reads: [ storage_slot: 0x1813 current_value: 0x1814 storage_slot: 0x1814 current_value: 0x1815 + storage_slot: 0x1815 +current_value: 0x1816 + storage_slot: 0x1816 +current_value: 0x1817 + storage_slot: 0x0 +current_value: 0x1 + storage_slot: 0x0 +current_value: 0x1 storage_slot: 0x0 current_value: 0x1 storage_slot: 0x0 @@ -1845,6 +2025,18 @@ new_value: 0x1716 storage_slot: 0x1715 old_value: 0x1716 new_value: 0x1717 + storage_slot: 0x1716 +old_value: 0x1717 +new_value: 0x1718 + storage_slot: 0x1717 +old_value: 0x1718 +new_value: 0x1719 + storage_slot: 0x0 +old_value: 0x1 +new_value: 0x2 + storage_slot: 0x0 +old_value: 0x1 +new_value: 0x2 storage_slot: 0x0 old_value: 0x1 new_value: 0x2 @@ -1856,6 +2048,14 @@ contract_storage_reads: [ storage_slot: 0x1814 current_value: 0x1815 storage_slot: 0x1815 current_value: 0x1816 + storage_slot: 0x1816 +current_value: 0x1817 + storage_slot: 0x1817 +current_value: 0x1818 + storage_slot: 0x0 +current_value: 0x1 + storage_slot: 0x0 +current_value: 0x1 storage_slot: 0x0 current_value: 0x1 storage_slot: 0x0 diff --git a/yarn-project/circuits.js/src/structs/rollup/__snapshots__/base_rollup.test.ts.snap b/yarn-project/circuits.js/src/structs/rollup/__snapshots__/base_rollup.test.ts.snap index ca5a4a8c5e25..cd0b307febc5 100644 --- a/yarn-project/circuits.js/src/structs/rollup/__snapshots__/base_rollup.test.ts.snap +++ b/yarn-project/circuits.js/src/structs/rollup/__snapshots__/base_rollup.test.ts.snap @@ -173,6 +173,18 @@ new_value: 0xd04 leaf_index: 0xd03 old_value: 0xd04 new_value: 0xd05 + leaf_index: 0xd04 +old_value: 0xd05 +new_value: 0xd06 + leaf_index: 0xd05 +old_value: 0xd06 +new_value: 0xd07 + leaf_index: 0xd06 +old_value: 0xd07 +new_value: 0xd08 + leaf_index: 0xd07 +old_value: 0xd08 +new_value: 0xd09 ] public_data_reads: [ leaf_index: 0xe00 @@ -183,6 +195,14 @@ value: 0xe02 value: 0xe03 leaf_index: 0xe03 value: 0xe04 + leaf_index: 0xe04 +value: 0xe05 + leaf_index: 0xe05 +value: 0xe06 + leaf_index: 0xe06 +value: 0xe07 + leaf_index: 0xe07 +value: 0xe08 ] constants: @@ -396,6 +416,18 @@ new_value: 0xe04 leaf_index: 0xe03 old_value: 0xe04 new_value: 0xe05 + leaf_index: 0xe04 +old_value: 0xe05 +new_value: 0xe06 + leaf_index: 0xe05 +old_value: 0xe06 +new_value: 0xe07 + leaf_index: 0xe06 +old_value: 0xe07 +new_value: 0xe08 + leaf_index: 0xe07 +old_value: 0xe08 +new_value: 0xe09 ] public_data_reads: [ leaf_index: 0xf00 @@ -406,6 +438,14 @@ value: 0xf02 value: 0xf03 leaf_index: 0xf03 value: 0xf04 + leaf_index: 0xf04 +value: 0xf05 + leaf_index: 0xf05 +value: 0xf06 + leaf_index: 0xf06 +value: 0xf07 + leaf_index: 0xf07 +value: 0xf08 ] constants: @@ -638,9 +678,9 @@ new_nullifiers_subtree_sibling_path: new_contracts_subtree_sibling_path: [ 0x5000 0x5001 0x5002 0x5003 0x5004 0x5005 0x5006 0x5007 0x5008 0x5009 0x500a 0x500b 0x500c 0x500d 0x500e ] new_public_data_update_requests_sibling_paths: -[ [ 0x6000 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd ] [ 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe ] [ 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff ] [ 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 ] [ 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 ] [ 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 ] [ 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 ] [ 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 ] ] +[ [ 0x6000 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd ] [ 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe ] [ 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff ] [ 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 ] [ 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 ] [ 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 ] [ 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 ] [ 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 ] [ 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 ] [ 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 ] [ 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 ] [ 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 ] [ 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 ] [ 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a ] [ 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b ] [ 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c ] ] new_state_reads_sibling_paths: -[ [ 0x6000 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd ] [ 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe ] [ 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff ] [ 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 ] [ 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 ] [ 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 ] [ 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 ] [ 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 ] ] +[ [ 0x6000 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd ] [ 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe ] [ 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff ] [ 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 ] [ 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 ] [ 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 ] [ 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 ] [ 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 ] [ 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 ] [ 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 ] [ 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 ] [ 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 ] [ 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 ] [ 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a ] [ 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b ] [ 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c ] ] historic_private_data_tree_root_membership_witnesses: [ leaf_index: 0x6000 sibling_path: [ 0x6000 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f ] diff --git a/yarn-project/circuits.js/tsconfig.dest.json b/yarn-project/circuits.js/tsconfig.dest.json new file mode 100644 index 000000000000..80f53b30eea2 --- /dev/null +++ b/yarn-project/circuits.js/tsconfig.dest.json @@ -0,0 +1,12 @@ +{ + "extends": ".", + "references": [ + { + "path": "../foundation/tsconfig.dest.json" + } + ], + "exclude": [ + "src/**/*.test.ts", + "src/**/*.in.ts" + ] +} \ No newline at end of file diff --git a/yarn-project/end-to-end/Dockerfile b/yarn-project/end-to-end/Dockerfile index 7fc4a22706d6..92302f6c1690 100644 --- a/yarn-project/end-to-end/Dockerfile +++ b/yarn-project/end-to-end/Dockerfile @@ -3,6 +3,11 @@ FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder # Copy in the whole of yarn-project. COPY . . +# Build aztec.js web. +WORKDIR /usr/src/yarn-project/aztec.js +RUN yarn build +RUN yarn cache clean + # Build end-to-end. WORKDIR /usr/src/yarn-project/end-to-end RUN yarn build && yarn formatting @@ -13,7 +18,12 @@ RUN yarn workspaces focus --production > /dev/null # Create final, minimal size image. FROM node:18-alpine -RUN apk update && apk add --no-cache curl jq bash +RUN apk update && apk add --no-cache udev ttf-freefont chromium curl jq bash +ENV CHROME_BIN="/usr/bin/chromium-browser" PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true" COPY --from=builder /usr/src /usr/src +RUN rm /usr/src/yarn-project/end-to-end/src/web/aztec3-circuits.wasm +RUN rm /usr/src/yarn-project/end-to-end/src/web/main.js +COPY --from=builder /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm /usr/src/yarn-project/end-to-end/src/web/aztec3-circuits.wasm +COPY --from=builder /usr/src/yarn-project/aztec.js/dest/main.js /usr/src/yarn-project/end-to-end/src/web/main.js WORKDIR /usr/src/yarn-project/end-to-end ENTRYPOINT ["yarn", "test"] \ No newline at end of file diff --git a/yarn-project/end-to-end/package.json b/yarn-project/end-to-end/package.json index 542d8391c2c1..b7cde35303ca 100644 --- a/yarn-project/end-to-end/package.json +++ b/yarn-project/end-to-end/package.json @@ -9,7 +9,7 @@ "build": "yarn clean && tsc -b", "build:dev": "tsc -b --watch", "clean": "rm -rf ./dest .tsbuildinfo", - "formatting": "run -T prettier --check ./src && run -T eslint ./src", + "formatting": "run -T prettier --check ./src \"!src/web/main.js\" && run -T eslint ./src", "formatting:fix": "run -T prettier -w ./src", "test": "DEBUG='aztec:*,wasm' NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --runInBand --passWithNoTests --testTimeout=15000", "test:integration": "concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"", @@ -40,6 +40,7 @@ "@jest/globals": "^29.5.0", "@noble/curves": "^1.0.0", "@types/jest": "^29.5.0", + "@types/koa-static": "^4.0.2", "@types/levelup": "^5.1.2", "@types/lodash.every": "^4.6.7", "@types/lodash.times": "^4.3.7", @@ -47,11 +48,14 @@ "@types/lodash.zipwith": "^4.2.7", "@types/node": "^18.7.23", "jest": "^29.5.0", + "koa": "^2.14.2", + "koa-static": "^5.0.0", "levelup": "^5.1.1", "lodash.every": "^4.6.0", "lodash.times": "^4.3.2", "lodash.zip": "^4.2.0", "lodash.zipwith": "^4.2.0", + "puppeteer": "^20.9.0", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "tslib": "^2.4.0", diff --git a/yarn-project/end-to-end/src/e2e_aztec_js_browser.test.ts b/yarn-project/end-to-end/src/e2e_aztec_js_browser.test.ts new file mode 100644 index 000000000000..0af9376be2cf --- /dev/null +++ b/yarn-project/end-to-end/src/e2e_aztec_js_browser.test.ts @@ -0,0 +1,202 @@ +import * as AztecJs from '@aztec/aztec.js'; +import { AztecAddress, PrivateKey } from '@aztec/circuits.js'; +import { DebugLogger, createDebugLogger } from '@aztec/foundation/log'; +import { SchnorrSingleKeyAccountContractAbi, ZkTokenContractAbi } from '@aztec/noir-contracts/artifacts'; + +import { Server } from 'http'; +import Koa from 'koa'; +import serve from 'koa-static'; +import path, { dirname } from 'path'; +import { Browser, Page, launch } from 'puppeteer'; +import { fileURLToPath } from 'url'; + +declare global { + interface Window { + AztecJs: typeof AztecJs; + } +} + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const PORT = 3000; + +const { SANDBOX_URL } = process.env; + +const conditionalDescribe = () => (SANDBOX_URL ? describe : describe.skip); +const privKey = PrivateKey.random(); + +conditionalDescribe()('e2e_aztec.js_browser', () => { + const initialBalance = 33n; + const transferAmount = 3n; + + let contractAddress: AztecAddress; + + let logger: DebugLogger; + let app: Koa; + let testClient: AztecJs.AztecRPC; + let server: Server; + + let browser: Browser; + let page: Page; + + beforeAll(async () => { + testClient = AztecJs.createAztecRpcClient(SANDBOX_URL!, AztecJs.mustSucceedFetch); + + app = new Koa(); + app.use(serve(path.resolve(__dirname, './web'))); + server = app.listen(PORT, () => { + logger(`Server started at http://localhost:${PORT}`); + }); + + logger = createDebugLogger('aztec:aztec.js:web'); + + browser = await launch({ + executablePath: process.env.CHROME_BIN, + headless: 'new', + args: [ + '--allow-file-access-from-files', + '--no-sandbox', + '--headless', + '--disable-web-security', + '--disable-features=IsolateOrigins', + '--disable-site-isolation-trials', + '--disable-gpu', + '--disable-dev-shm-usage', + '--disk-cache-dir=/dev/null', + ], + }); + page = await browser.newPage(); + page.on('console', msg => { + logger('PAGE MSG:', msg.text()); + }); + page.on('pageerror', err => { + logger('PAGE ERROR:', err.toString()); + }); + await page.goto(`http://localhost:${PORT}/index.html`); + }); + + afterAll(async () => { + await browser.close(); + server.close(); + }); + + it('Loads Aztec.js in the browser', async () => { + const createAccountsExists = await page.evaluate(() => { + const { createAccounts } = window.AztecJs; + return typeof createAccounts === 'function'; + }); + expect(createAccountsExists).toBe(true); + }); + it('Creates an account', async () => { + const result = await page.evaluate( + async (rpcUrl, privateKey, schnorrAbi) => { + const { Fr, PrivateKey, createAztecRpcClient, createAccounts, mustSucceedFetch } = window.AztecJs; + const client = createAztecRpcClient(rpcUrl!, mustSucceedFetch); + + await createAccounts(client, schnorrAbi, PrivateKey.fromString(privateKey)!, Fr.ZERO); + const accounts = await client.getAccounts(); + // eslint-disable-next-line no-console + console.log(`Created Account: ${accounts[0].toString()}`); + return accounts[0].toString(); + }, + SANDBOX_URL, + privKey.toString(), + SchnorrSingleKeyAccountContractAbi, + ); + const account = (await testClient.getAccounts())[0]; + expect(result).toEqual(account.toString()); + }); + + it('Deploys ZK Token contract', async () => { + const txHash = await page.evaluate( + async (rpcUrl, initialBalance, ZkTokenContractAbi) => { + const { DeployMethod, createAztecRpcClient, mustSucceedFetch } = window.AztecJs; + const client = createAztecRpcClient(rpcUrl!, mustSucceedFetch); + const owner = (await client.getAccounts())[0]; + const publicKey = await client.getPublicKey(owner); + const tx = new DeployMethod(publicKey, client, ZkTokenContractAbi, [33n, owner]).send(); + await tx.isMined(); + // eslint-disable-next-line no-console + console.log('Contract Deployed'); + const receipt = await tx.getReceipt(); + return receipt.txHash.toString(); + }, + SANDBOX_URL, + initialBalance, + ZkTokenContractAbi, + ); + + const txResult = await testClient.getTxReceipt(AztecJs.TxHash.fromString(txHash)); + expect(txResult.status).toEqual(AztecJs.TxStatus.MINED); + contractAddress = txResult.contractAddress!; + }, 30_000); + + it("Gets the owner's balance", async () => { + const result = await page.evaluate( + async (rpcUrl, privateKey, SchnorrSingleKeyAccountContractAbi, contractAddress, ZkTokenContractAbi) => { + const { Contract, AztecAddress, Fr, PrivateKey, createAztecRpcClient, getAccountWallet, mustSucceedFetch } = + window.AztecJs; + const client = createAztecRpcClient(rpcUrl!, mustSucceedFetch); + const owner = (await client.getAccounts())[0]; + const wallet = await getAccountWallet( + client, + SchnorrSingleKeyAccountContractAbi, + PrivateKey.fromString(privateKey!), + Fr.ZERO, + ); + const contract = await Contract.create(AztecAddress.fromString(contractAddress), ZkTokenContractAbi, wallet); + const [balance] = await contract.methods.getBalance(owner).view({ from: owner }); + return balance; + }, + SANDBOX_URL, + privKey.toString(), + SchnorrSingleKeyAccountContractAbi, + contractAddress.toString(), + ZkTokenContractAbi, + ); + logger('Owner balance:', result); + expect(result).toEqual(initialBalance); + }); + + it('Sends a transfer TX', async () => { + const result = await page.evaluate( + async ( + rpcUrl, + privateKey, + contractAddress, + transferAmount, + ZkTokenContractAbi, + SchnorrSingleKeyAccountContractAbi, + ) => { + const { AztecAddress, Contract, Fr, PrivateKey, createAztecRpcClient, getAccountWallet, mustSucceedFetch } = + window.AztecJs; + const client = createAztecRpcClient(rpcUrl!, mustSucceedFetch); + await AztecJs.createAccounts(client, SchnorrSingleKeyAccountContractAbi, PrivateKey.random(), Fr.random()); + const [owner, receiver] = await client.getAccounts(); + // eslint-disable-next-line no-console + console.log(`Created 2nd Account: ${receiver.toString()}`); + const wallet = await getAccountWallet( + client, + SchnorrSingleKeyAccountContractAbi, + PrivateKey.fromString(privateKey!), + Fr.ZERO, + ); + const contract = await Contract.create(AztecAddress.fromString(contractAddress), ZkTokenContractAbi, wallet); + const tx = contract.methods.transfer(transferAmount, owner, receiver).send({ origin: owner }); + await tx.isMined(); + // eslint-disable-next-line no-console + console.log(`Transfered ${transferAmount} tokens to new Account`); + const [balance] = await contract.methods.getBalance(receiver).view({ from: receiver }); + return balance; + }, + SANDBOX_URL, + privKey.toString(), + contractAddress.toString(), + transferAmount, + ZkTokenContractAbi, + SchnorrSingleKeyAccountContractAbi, + ); + expect(result).toEqual(transferAmount); + }, 45_000); +}); diff --git a/yarn-project/end-to-end/src/utils.ts b/yarn-project/end-to-end/src/utils.ts index 48e984d92fe2..6f08efd0b1c2 100644 --- a/yarn-project/end-to-end/src/utils.ts +++ b/yarn-project/end-to-end/src/utils.ts @@ -27,7 +27,7 @@ import { Schnorr } from '@aztec/circuits.js/barretenberg'; import { DeployL1Contracts, deployL1Contract, deployL1Contracts } from '@aztec/ethereum'; import { ContractAbi } from '@aztec/foundation/abi'; import { Fr } from '@aztec/foundation/fields'; -import { mustSucceedFetch } from '@aztec/foundation/json-rpc'; +import { mustSucceedFetch } from '@aztec/foundation/json-rpc/client'; import { DebugLogger, createDebugLogger } from '@aztec/foundation/log'; import { retryUntil } from '@aztec/foundation/retry'; import { PortalERC20Abi, PortalERC20Bytecode, TokenPortalAbi, TokenPortalBytecode } from '@aztec/l1-artifacts'; @@ -56,7 +56,7 @@ import { MNEMONIC, localAnvil } from './fixtures.js'; const { SANDBOX_URL = '' } = process.env; -const waitForRPCServer = async (rpcServer: AztecRPC, logger: DebugLogger) => { +export const waitForRPCServer = async (rpcServer: AztecRPC, logger: DebugLogger) => { await retryUntil(async () => { try { logger('Attmpting to contact RPC Server...'); diff --git a/yarn-project/end-to-end/src/web/aztec3-circuits.wasm b/yarn-project/end-to-end/src/web/aztec3-circuits.wasm new file mode 120000 index 000000000000..da33dde4b194 --- /dev/null +++ b/yarn-project/end-to-end/src/web/aztec3-circuits.wasm @@ -0,0 +1 @@ +../../../circuits.js/resources/aztec3-circuits.wasm \ No newline at end of file diff --git a/yarn-project/end-to-end/src/web/index.html b/yarn-project/end-to-end/src/web/index.html new file mode 100644 index 000000000000..97e7d022731c --- /dev/null +++ b/yarn-project/end-to-end/src/web/index.html @@ -0,0 +1,10 @@ + + + + + + diff --git a/yarn-project/end-to-end/src/web/main.js b/yarn-project/end-to-end/src/web/main.js new file mode 120000 index 000000000000..53fbb99288ad --- /dev/null +++ b/yarn-project/end-to-end/src/web/main.js @@ -0,0 +1 @@ +../../../aztec.js/dest/main.js \ No newline at end of file diff --git a/yarn-project/foundation/package.json b/yarn-project/foundation/package.json index 1441e2eb85dc..136d2e33bc76 100644 --- a/yarn-project/foundation/package.json +++ b/yarn-project/foundation/package.json @@ -16,6 +16,8 @@ "./eth-address": "./dest/eth-address/index.js", "./fifo": "./dest/fifo/index.js", "./json-rpc": "./dest/json-rpc/index.js", + "./json-rpc/server": "./dest/json-rpc/server/index.js", + "./json-rpc/client": "./dest/json-rpc/client/index.js", "./log": "./dest/log/index.js", "./mutex": "./dest/mutex/index.js", "./fields": "./dest/fields/index.js", @@ -26,6 +28,7 @@ "./timer": "./dest/timer/index.js", "./transport": "./dest/transport/index.js", "./wasm": "./dest/wasm/index.js", + "./worker": "./dest/worker/index.js", "./bigint-buffer": "./dest/bigint-buffer/index.js", "./types": "./dest/types/index.js" }, diff --git a/yarn-project/foundation/src/fields/fields.ts b/yarn-project/foundation/src/fields/fields.ts index ec138d8a9876..f902c61687e6 100644 --- a/yarn-project/foundation/src/fields/fields.ts +++ b/yarn-project/foundation/src/fields/fields.ts @@ -1,6 +1,5 @@ -import { randomBytes } from 'crypto'; - import { toBigIntBE, toBufferBE, toHex } from '../bigint-buffer/index.js'; +import { randomBytes } from '../crypto/index.js'; import { BufferReader } from '../serialize/buffer_reader.js'; /** diff --git a/yarn-project/foundation/src/json-rpc/client/index.ts b/yarn-project/foundation/src/json-rpc/client/index.ts index 7a28d8d6eae8..90a8bcc736df 100644 --- a/yarn-project/foundation/src/json-rpc/client/index.ts +++ b/yarn-project/foundation/src/json-rpc/client/index.ts @@ -1 +1 @@ -export { createJsonRpcClient, JsonStringify, mustSucceedFetch, defaultFetch } from './json_rpc_client.js'; +export { createJsonRpcClient, mustSucceedFetch, defaultFetch } from './json_rpc_client.js'; diff --git a/yarn-project/foundation/src/json-rpc/client/json_rpc_client.test.ts b/yarn-project/foundation/src/json-rpc/client/json_rpc_client.test.ts index fe993d265793..b07c2f300ab4 100644 --- a/yarn-project/foundation/src/json-rpc/client/json_rpc_client.test.ts +++ b/yarn-project/foundation/src/json-rpc/client/json_rpc_client.test.ts @@ -1,7 +1,7 @@ import request from 'supertest'; import { TestNote, TestState } from '../fixtures/test_state.js'; -import { JsonRpcServer } from '../server/json_rpc_server.js'; +import { JsonRpcServer } from '../server/index.js'; import { createJsonRpcClient } from './json_rpc_client.js'; test('test an RPC function over client', async () => { diff --git a/yarn-project/foundation/src/json-rpc/index.ts b/yarn-project/foundation/src/json-rpc/index.ts index 5805e64dc774..b02ee1ef753d 100644 --- a/yarn-project/foundation/src/json-rpc/index.ts +++ b/yarn-project/foundation/src/json-rpc/index.ts @@ -4,5 +4,5 @@ export { JsonEncodedClass, ClassConverter, } from './class_converter.js'; -export { JsonRpcServer, JsonProxy } from './server/index.js'; -export { createJsonRpcClient, JsonStringify, mustSucceedFetch, defaultFetch } from './client/index.js'; + +export { JsonStringify } from './convert.js'; diff --git a/yarn-project/foundation/src/wasm/wasm/empty_wasi_sdk.ts b/yarn-project/foundation/src/wasm/empty_wasi_sdk.ts similarity index 99% rename from yarn-project/foundation/src/wasm/wasm/empty_wasi_sdk.ts rename to yarn-project/foundation/src/wasm/empty_wasi_sdk.ts index 5a2930284326..209c1bac6e6c 100644 --- a/yarn-project/foundation/src/wasm/wasm/empty_wasi_sdk.ts +++ b/yarn-project/foundation/src/wasm/empty_wasi_sdk.ts @@ -1,4 +1,4 @@ -import { createDebugOnlyLogger } from '../../log/index.js'; +import { createDebugOnlyLogger } from '../log/index.js'; /** * Dummy implementation of a necessary part of the wasi api: diff --git a/yarn-project/foundation/src/wasm/index.ts b/yarn-project/foundation/src/wasm/index.ts index 10427d1c1641..f125ae5806d3 100644 --- a/yarn-project/foundation/src/wasm/index.ts +++ b/yarn-project/foundation/src/wasm/index.ts @@ -1,4 +1 @@ -export { WebDataStore } from './worker/browser/index.js'; -export { NodeDataStore } from './worker/node/index.js'; -export { WasmWorker, WorkerPool } from './worker/index.js'; -export { WasmModule, IWasmModule } from './wasm/index.js'; +export { WasmModule, IWasmModule } from './wasm_module.js'; diff --git a/yarn-project/foundation/src/wasm/wasm/index.ts b/yarn-project/foundation/src/wasm/wasm/index.ts deleted file mode 100644 index f125ae5806d3..000000000000 --- a/yarn-project/foundation/src/wasm/wasm/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { WasmModule, IWasmModule } from './wasm_module.js'; diff --git a/yarn-project/foundation/src/wasm/wasm/wasm_module.test.ts b/yarn-project/foundation/src/wasm/wasm_module.test.ts similarity index 91% rename from yarn-project/foundation/src/wasm/wasm/wasm_module.test.ts rename to yarn-project/foundation/src/wasm/wasm_module.test.ts index bdb96610963e..36e3f2071894 100644 --- a/yarn-project/foundation/src/wasm/wasm/wasm_module.test.ts +++ b/yarn-project/foundation/src/wasm/wasm_module.test.ts @@ -9,7 +9,7 @@ import { WasmModule } from './wasm_module.js'; */ async function fetchCode() { const __dirname = dirname(fileURLToPath(import.meta.url)); - return await readFile(`${__dirname}/../fixtures/gcd.wasm`); + return await readFile(`${__dirname}/fixtures/gcd.wasm`); } describe('simple wasm', () => { diff --git a/yarn-project/foundation/src/wasm/wasm/wasm_module.ts b/yarn-project/foundation/src/wasm/wasm_module.ts similarity index 98% rename from yarn-project/foundation/src/wasm/wasm/wasm_module.ts rename to yarn-project/foundation/src/wasm/wasm_module.ts index 9cc15b8fee9a..b80385f46a0d 100644 --- a/yarn-project/foundation/src/wasm/wasm/wasm_module.ts +++ b/yarn-project/foundation/src/wasm/wasm_module.ts @@ -1,8 +1,8 @@ import { Buffer } from 'buffer'; -import { randomBytes } from 'crypto'; -import { MemoryFifo } from '../../fifo/index.js'; -import { LogFn, createDebugOnlyLogger } from '../../log/index.js'; +import { randomBytes } from '../crypto/index.js'; +import { MemoryFifo } from '../fifo/index.js'; +import { LogFn, createDebugOnlyLogger } from '../log/index.js'; import { getEmptyWasiSdk } from './empty_wasi_sdk.js'; /** diff --git a/yarn-project/foundation/src/wasm/worker/browser/index.ts b/yarn-project/foundation/src/worker/browser/index.ts similarity index 100% rename from yarn-project/foundation/src/wasm/worker/browser/index.ts rename to yarn-project/foundation/src/worker/browser/index.ts diff --git a/yarn-project/foundation/src/wasm/worker/browser/start_web_module.ts b/yarn-project/foundation/src/worker/browser/start_web_module.ts similarity index 90% rename from yarn-project/foundation/src/wasm/worker/browser/start_web_module.ts rename to yarn-project/foundation/src/worker/browser/start_web_module.ts index 9e101398f30e..37683aea5506 100644 --- a/yarn-project/foundation/src/wasm/worker/browser/start_web_module.ts +++ b/yarn-project/foundation/src/worker/browser/start_web_module.ts @@ -1,5 +1,5 @@ -import { DispatchMsg, TransportServer, WorkerListener } from '../../../transport/index.js'; -import { WasmModule } from '../../wasm/wasm_module.js'; +import { DispatchMsg, TransportServer, WorkerListener } from '../../transport/index.js'; +import { WasmModule } from '../../wasm/index.js'; /** * Start the transport server corresponding to this module. diff --git a/yarn-project/foundation/src/wasm/worker/browser/web_data_store.ts b/yarn-project/foundation/src/worker/browser/web_data_store.ts similarity index 100% rename from yarn-project/foundation/src/wasm/worker/browser/web_data_store.ts rename to yarn-project/foundation/src/worker/browser/web_data_store.ts diff --git a/yarn-project/foundation/src/wasm/worker/browser/web_worker.ts b/yarn-project/foundation/src/worker/browser/web_worker.ts similarity index 89% rename from yarn-project/foundation/src/wasm/worker/browser/web_worker.ts rename to yarn-project/foundation/src/worker/browser/web_worker.ts index e6de943dde99..a28d3fd7482e 100644 --- a/yarn-project/foundation/src/wasm/worker/browser/web_worker.ts +++ b/yarn-project/foundation/src/worker/browser/web_worker.ts @@ -1,5 +1,5 @@ -import { DispatchMsg, TransportClient, WorkerConnector, createDispatchProxy } from '../../../transport/index.js'; -import { WasmModule } from '../../wasm/wasm_module.js'; +import { DispatchMsg, TransportClient, WorkerConnector, createDispatchProxy } from '../../transport/index.js'; +import { WasmModule } from '../../wasm/index.js'; import { WasmWorker } from '../wasm_worker.js'; /** diff --git a/yarn-project/foundation/src/wasm/worker/data_store.ts b/yarn-project/foundation/src/worker/data_store.ts similarity index 100% rename from yarn-project/foundation/src/wasm/worker/data_store.ts rename to yarn-project/foundation/src/worker/data_store.ts diff --git a/yarn-project/foundation/src/wasm/worker/index.ts b/yarn-project/foundation/src/worker/index.ts similarity index 100% rename from yarn-project/foundation/src/wasm/worker/index.ts rename to yarn-project/foundation/src/worker/index.ts diff --git a/yarn-project/foundation/src/wasm/worker/node/index.ts b/yarn-project/foundation/src/worker/node/index.ts similarity index 100% rename from yarn-project/foundation/src/wasm/worker/node/index.ts rename to yarn-project/foundation/src/worker/node/index.ts diff --git a/yarn-project/foundation/src/wasm/worker/node/node_data_store.ts b/yarn-project/foundation/src/worker/node/node_data_store.ts similarity index 100% rename from yarn-project/foundation/src/wasm/worker/node/node_data_store.ts rename to yarn-project/foundation/src/worker/node/node_data_store.ts diff --git a/yarn-project/foundation/src/wasm/worker/node/node_worker.ts b/yarn-project/foundation/src/worker/node/node_worker.ts similarity index 94% rename from yarn-project/foundation/src/wasm/worker/node/node_worker.ts rename to yarn-project/foundation/src/worker/node/node_worker.ts index 3b689121bb5a..d297ed727bc0 100644 --- a/yarn-project/foundation/src/wasm/worker/node/node_worker.ts +++ b/yarn-project/foundation/src/worker/node/node_worker.ts @@ -1,6 +1,6 @@ import { Worker } from 'worker_threads'; -import { DispatchMsg, NodeConnector, TransportClient, createDispatchProxy } from '../../../transport/index.js'; +import { DispatchMsg, NodeConnector, TransportClient, createDispatchProxy } from '../../transport/index.js'; import { WasmModule } from '../../wasm/wasm_module.js'; import { WasmWorker } from '../wasm_worker.js'; diff --git a/yarn-project/foundation/src/wasm/worker/node/start_node_module.ts b/yarn-project/foundation/src/worker/node/start_node_module.ts similarity index 97% rename from yarn-project/foundation/src/wasm/worker/node/start_node_module.ts rename to yarn-project/foundation/src/worker/node/start_node_module.ts index 1d9df67cf545..14f01cfb70d4 100644 --- a/yarn-project/foundation/src/wasm/worker/node/start_node_module.ts +++ b/yarn-project/foundation/src/worker/node/start_node_module.ts @@ -1,6 +1,6 @@ import { parentPort } from 'worker_threads'; -import { DispatchMsg, NodeListener, TransportServer } from '../../../transport/index.js'; +import { DispatchMsg, NodeListener, TransportServer } from '../../transport/index.js'; import { WasmModule } from '../../wasm/wasm_module.js'; if (!parentPort) { diff --git a/yarn-project/foundation/src/wasm/worker/wasm_worker.ts b/yarn-project/foundation/src/worker/wasm_worker.ts similarity index 78% rename from yarn-project/foundation/src/wasm/worker/wasm_worker.ts rename to yarn-project/foundation/src/worker/wasm_worker.ts index e4b860cd7a12..a9dcb4a7ad27 100644 --- a/yarn-project/foundation/src/wasm/worker/wasm_worker.ts +++ b/yarn-project/foundation/src/worker/wasm_worker.ts @@ -1,4 +1,4 @@ -import { Proxify } from '../../transport/index.js'; +import { Proxify } from '../transport/index.js'; import { WasmModule } from '../wasm/wasm_module.js'; /** diff --git a/yarn-project/foundation/src/wasm/worker/worker_pool.ts b/yarn-project/foundation/src/worker/worker_pool.ts similarity index 98% rename from yarn-project/foundation/src/wasm/worker/worker_pool.ts rename to yarn-project/foundation/src/worker/worker_pool.ts index b26a1b979ea0..b121f8f85c84 100644 --- a/yarn-project/foundation/src/wasm/worker/worker_pool.ts +++ b/yarn-project/foundation/src/worker/worker_pool.ts @@ -1,4 +1,4 @@ -import { createDebugLogger } from '../../log/index.js'; +import { createDebugLogger } from '../log/index.js'; import { WasmWorker } from './wasm_worker.js'; const debug = createDebugLogger('bb:worker_pool'); diff --git a/yarn-project/foundation/tsconfig.dest.json b/yarn-project/foundation/tsconfig.dest.json new file mode 100644 index 000000000000..86c22947530a --- /dev/null +++ b/yarn-project/foundation/tsconfig.dest.json @@ -0,0 +1,7 @@ +{ + "extends": ".", + "references": [], + "exclude": [ + "src/**/*.test.ts" + ] +} \ No newline at end of file diff --git a/yarn-project/noir-contracts/scripts/compile.sh b/yarn-project/noir-contracts/scripts/compile.sh index 707af363b246..4e0770431a28 100755 --- a/yarn-project/noir-contracts/scripts/compile.sh +++ b/yarn-project/noir-contracts/scripts/compile.sh @@ -39,7 +39,7 @@ build() { # If VERBOSE is not set, compile with 'nargo' and redirect standard error (stderr) to /dev/null and standard output (stdout) to /dev/null. # If the compilation fails, rerun the compilation with 'nargo' and show the compiler output. - nargo compile main --contracts; + nargo compile --contracts; } process() { diff --git a/yarn-project/noir-contracts/src/contracts/child_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/child_contract/Nargo.toml index a3878b2825ca..7c96aee5fd7d 100644 --- a/yarn-project/noir-contracts/src/contracts/child_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/child_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "child-contract" +name = "child_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/child_contract/src/storage.nr b/yarn-project/noir-contracts/src/contracts/child_contract/src/storage.nr index 0f3058390399..634674859e4a 100644 --- a/yarn-project/noir-contracts/src/contracts/child_contract/src/storage.nr +++ b/yarn-project/noir-contracts/src/contracts/child_contract/src/storage.nr @@ -1,6 +1,6 @@ use dep::aztec::state_vars::public_state::PublicState; -use dep::aztec::state_vars::type_serialisation_interface::field_serialisation_interface::FieldSerialisationInterface; -use dep::aztec::state_vars::type_serialisation_interface::field_serialisation_interface::FIELD_SERIALISED_LEN; +use dep::aztec::state_vars::type_serialisation::field_serialisation::FieldSerialisationMethods; +use dep::aztec::state_vars::type_serialisation::field_serialisation::FIELD_SERIALISED_LEN; struct Storage { current_value: PublicState, @@ -9,7 +9,7 @@ struct Storage { impl Storage { fn init() -> Self { Storage { - current_value: PublicState::new(1, FieldSerialisationInterface), + current_value: PublicState::new(1, FieldSerialisationMethods), } } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/easy_zk_token_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/easy_zk_token_contract/Nargo.toml index f5fc68e039f2..4b040bb699dc 100644 --- a/yarn-project/noir-contracts/src/contracts/easy_zk_token_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/easy_zk_token_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "easy-zk-token-contract" +name = "easy_zk_token_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/easy_zk_token_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/easy_zk_token_contract/src/main.nr index bc5dc86f9f6e..a404def60da2 100644 --- a/yarn-project/noir-contracts/src/contracts/easy_zk_token_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/easy_zk_token_contract/src/main.nr @@ -5,7 +5,7 @@ contract EasyZkToken { use dep::value_note::{ balance_utils, value_note::{ - ValueNoteInterface, + ValueNoteMethods, VALUE_NOTE_LEN, }, }; @@ -105,6 +105,6 @@ contract EasyZkToken { // Note 2: Having it in all the contracts gives us the ability to compute the note hash and nullifier differently for different kind of notes. unconstrained fn compute_note_hash_and_nullifier(contract_address: Field, nonce: Field, storage_slot: Field, preimage: [Field; VALUE_NOTE_LEN]) -> [Field; 4] { let note_header = NoteHeader { contract_address, nonce, storage_slot }; - note_utils::compute_note_hash_and_nullifier(ValueNoteInterface, note_header, preimage) + note_utils::compute_note_hash_and_nullifier(ValueNoteMethods, note_header, preimage) } } diff --git a/yarn-project/noir-contracts/src/contracts/ecdsa_account_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/ecdsa_account_contract/Nargo.toml index 09bb5d3e6253..be0bf7e29cb0 100644 --- a/yarn-project/noir-contracts/src/contracts/ecdsa_account_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/ecdsa_account_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "ecdsa-account-contract" +name = "ecdsa_account_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/escrow_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/escrow_contract/Nargo.toml index 5716aec9f072..5083b93b66fe 100644 --- a/yarn-project/noir-contracts/src/contracts/escrow_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/escrow_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "escrow-contract" +name = "escrow_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/escrow_contract/src/address_note.nr b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/address_note.nr index 4757ec80ba37..fe3eb862f879 100644 --- a/yarn-project/noir-contracts/src/contracts/escrow_contract/src/address_note.nr +++ b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/address_note.nr @@ -28,7 +28,7 @@ impl AddressNote { } fn compute_nullifier(self) -> Field { - let siloed_note_hash = compute_siloed_note_hash(AddressNoteInterface, self); + let siloed_note_hash = compute_siloed_note_hash(AddressNoteMethods, self); let owner_nullifying_public_key = get_public_key(self.owner); let secret = get_secret_key(owner_nullifying_public_key); dep::std::hash::pedersen([ @@ -82,7 +82,7 @@ fn set_header(note: &mut AddressNote, header: NoteHeader) { note.set_header(header); } -global AddressNoteInterface = NoteInterface { +global AddressNoteMethods = NoteInterface { deserialise, serialise, compute_note_hash, diff --git a/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr index fb0c681ca136..49a4b0d4d4ca 100644 --- a/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/main.nr @@ -19,7 +19,7 @@ contract Escrow { use crate::address_note::{ AddressNote, - AddressNoteInterface, + AddressNoteMethods, ADDRESS_NOTE_LEN }; @@ -74,6 +74,6 @@ contract Escrow { unconstrained fn compute_note_hash_and_nullifier(contract_address: Field, nonce: Field, storage_slot: Field, preimage: [Field; ADDRESS_NOTE_LEN]) -> [Field; 4] { let note_header = NoteHeader { contract_address, nonce, storage_slot }; assert(storage_slot == 1); - note_utils::compute_note_hash_and_nullifier(AddressNoteInterface, note_header, preimage) + note_utils::compute_note_hash_and_nullifier(AddressNoteMethods, note_header, preimage) } } diff --git a/yarn-project/noir-contracts/src/contracts/escrow_contract/src/storage.nr b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/storage.nr index 57ac05a3055e..580b9a33d93f 100644 --- a/yarn-project/noir-contracts/src/contracts/escrow_contract/src/storage.nr +++ b/yarn-project/noir-contracts/src/contracts/escrow_contract/src/storage.nr @@ -4,7 +4,7 @@ use dep::aztec::state_vars::{ use crate::address_note::{ AddressNote, - AddressNoteInterface, + AddressNoteMethods, ADDRESS_NOTE_LEN, }; @@ -15,7 +15,7 @@ struct Storage { impl Storage { fn init() -> Self { Storage { - owners: Set::new(1, AddressNoteInterface), + owners: Set::new(1, AddressNoteMethods), } } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/lending_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/lending_contract/Nargo.toml index cc8e31c7609b..d26d7583b126 100644 --- a/yarn-project/noir-contracts/src/contracts/lending_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/lending_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "lending-contract" +name = "lending_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/lending_contract/src/storage.nr b/yarn-project/noir-contracts/src/contracts/lending_contract/src/storage.nr index 031cbf48361b..4f247028da63 100644 --- a/yarn-project/noir-contracts/src/contracts/lending_contract/src/storage.nr +++ b/yarn-project/noir-contracts/src/contracts/lending_contract/src/storage.nr @@ -1,8 +1,8 @@ use dep::aztec::state_vars::map::Map; use dep::aztec::state_vars::public_state::PublicState; -use dep::aztec::state_vars::type_serialisation_interface::TypeSerialisationInterface; -use dep::aztec::state_vars::type_serialisation_interface::field_serialisation_interface::FieldSerialisationInterface; -use dep::aztec::state_vars::type_serialisation_interface::field_serialisation_interface::FIELD_SERIALISED_LEN; +use dep::aztec::state_vars::type_serialisation::TypeSerialisationInterface; +use dep::aztec::state_vars::type_serialisation::field_serialisation::FieldSerialisationMethods; +use dep::aztec::state_vars::type_serialisation::field_serialisation::FIELD_SERIALISED_LEN; use dep::std::hash::pedersen; // Utility struct used to easily get a "id" for a private user that sits in the same @@ -30,7 +30,6 @@ impl Account { } -global TOT_SERIALISED_LEN: Field = 2; // Struct to be used to represent "totals". Generally, there should be one per asset. // It stores the global values that are shared among all users, such as an accumulator @@ -42,6 +41,8 @@ struct Tot { last_updated_ts: u120, } +global TOT_SERIALISED_LEN: Field = 2; + fn deserialiseTot(fields: [Field; TOT_SERIALISED_LEN]) -> Tot { Tot { interest_accumulator: fields[0] as u120, @@ -53,35 +54,35 @@ fn serialiseTot(tot: Tot) -> [Field; TOT_SERIALISED_LEN] { [tot.interest_accumulator as Field, tot.last_updated_ts as Field] } -global TotSerialisationInterface = TypeSerialisationInterface { +global TotSerialisationMethods = TypeSerialisationInterface { deserialise: deserialiseTot, serialise: serialiseTot, }; -// Struct to be used to represent positions when we have more reads. -global POS_SERIALISED_LEN: Field = 2; +// // Struct to be used to represent positions when we have more reads. +// global POS_SERIALISED_LEN: Field = 2; -struct Pos { - owner: Field, - value: Field, -} +// struct Pos { +// owner: Field, +// value: Field, +// } -fn deserialisePos(fields: [Field; POS_SERIALISED_LEN]) -> Pos { - Pos { - owner: fields[0], - value: fields[1], - } -} +// fn deserialisePos(fields: [Field; POS_SERIALISED_LEN]) -> Pos { +// Pos { +// owner: fields[0], +// value: fields[1], +// } +// } -fn serialisePos(pos: Pos) -> [Field; POS_SERIALISED_LEN] { - [pos.owner, pos.value] -} +// fn serialisePos(pos: Pos) -> [Field; POS_SERIALISED_LEN] { +// [pos.owner, pos.value] +// } -global PosSerialisationInterface = TypeSerialisationInterface { - deserialise: deserialisePos, - serialise: serialisePos, -}; +// global PosSerialisationMethods = TypeSerialisationInterface { +// deserialise: deserialisePos, +// serialise: serialisePos, +// }; // Storage structure, containing all storage, and specifying what slots they use. @@ -94,9 +95,9 @@ struct Storage { impl Storage { fn init() -> Self { Storage { - assets: Map::new(1, |slot| PublicState::new(slot, TotSerialisationInterface)), // uses 2 storage slots. - collateral: Map::new(2, |slot| PublicState::new(slot, FieldSerialisationInterface)), // uses 1 storage slots. - static_debt: Map::new(3, |slot| PublicState::new(slot, FieldSerialisationInterface)), // uses 1 storage slots. + assets: Map::new(1, |slot| PublicState::new(slot, TotSerialisationMethods)), + collateral: Map::new(2, |slot| PublicState::new(slot, FieldSerialisationMethods)), + static_debt: Map::new(3, |slot| PublicState::new(slot, FieldSerialisationMethods)), } } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/non_native_token_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/non_native_token_contract/Nargo.toml index b7e8e10246b6..63751f02c862 100644 --- a/yarn-project/noir-contracts/src/contracts/non_native_token_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/non_native_token_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "non-native-token-contract" +name = "non_native_token_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr index 2ac049893af0..ab590d6e41d7 100644 --- a/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/main.nr @@ -21,7 +21,7 @@ contract NonNativeToken { use dep::value_note::{ balance_utils, utils::{send_note, spend_notes}, - value_note::{VALUE_NOTE_LEN, ValueNoteInterface}, + value_note::{VALUE_NOTE_LEN, ValueNoteMethods}, }; use crate::transparent_note::TransparentNote; @@ -327,6 +327,6 @@ contract NonNativeToken { // Note 2: Having it in all the contracts gives us the ability to compute the note hash and nullifier differently for different kind of notes. unconstrained fn compute_note_hash_and_nullifier(contract_address: Field, nonce: Field, storage_slot: Field, preimage: [Field; VALUE_NOTE_LEN]) -> [Field; 4] { let note_header = NoteHeader { contract_address, nonce, storage_slot }; - note_utils::compute_note_hash_and_nullifier(ValueNoteInterface, note_header, preimage) + note_utils::compute_note_hash_and_nullifier(ValueNoteMethods, note_header, preimage) } } diff --git a/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/storage.nr b/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/storage.nr index 6d14091532cb..fba7386ea66c 100644 --- a/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/storage.nr +++ b/yarn-project/noir-contracts/src/contracts/non_native_token_contract/src/storage.nr @@ -2,15 +2,15 @@ use dep::aztec::state_vars::{ map::Map, set::Set, public_state::PublicState, - type_serialisation_interface::field_serialisation_interface::{ + type_serialisation::field_serialisation::{ FIELD_SERIALISED_LEN, - FieldSerialisationInterface, + FieldSerialisationMethods, }, }; use dep::value_note::value_note::{ ValueNote, - ValueNoteInterface, + ValueNoteMethods, VALUE_NOTE_LEN, }; @@ -23,8 +23,8 @@ struct Storage { impl Storage { fn init() -> Self { Storage { - balances: Map::new(1, |slot| Set::new(slot, ValueNoteInterface)), - public_balances: Map::new(2, |slot| PublicState::new(slot, FieldSerialisationInterface)), + balances: Map::new(1, |slot| Set::new(slot, ValueNoteMethods)), + public_balances: Map::new(2, |slot| PublicState::new(slot, FieldSerialisationMethods)), } } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/parent_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/parent_contract/Nargo.toml index d8c6432a9b54..a7f57efaf5ca 100644 --- a/yarn-project/noir-contracts/src/contracts/parent_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/parent_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "parent-contract" +name = "parent_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/Nargo.toml index 7bb932739915..1d914763c7aa 100644 --- a/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "pending-commitments-contract" +name = "pending_commitments_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/src/main.nr index f85ca157e18b..a2c76c3581d0 100644 --- a/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/src/main.nr @@ -9,7 +9,7 @@ contract PendingCommitments { use dep::value_note::{ balance_utils, filter::get_2_notes, - value_note::{VALUE_NOTE_LEN, ValueNote, ValueNoteInterface}, + value_note::{VALUE_NOTE_LEN, ValueNote, ValueNoteMethods}, }; use crate::storage::Storage; @@ -231,6 +231,6 @@ contract PendingCommitments { // Note 2: Having it in all the contracts gives us the ability to compute the note hash and nullifier differently for different kind of notes. unconstrained fn compute_note_hash_and_nullifier(contract_address: Field, nonce: Field, storage_slot: Field, preimage: [Field; VALUE_NOTE_LEN]) -> [Field; 4] { let note_header = NoteHeader { contract_address, nonce, storage_slot }; - note_utils::compute_note_hash_and_nullifier(ValueNoteInterface, note_header, preimage) + note_utils::compute_note_hash_and_nullifier(ValueNoteMethods, note_header, preimage) } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/src/storage.nr b/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/src/storage.nr index 7dbfb7ac3cbd..c56aa30b032d 100644 --- a/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/src/storage.nr +++ b/yarn-project/noir-contracts/src/contracts/pending_commitments_contract/src/storage.nr @@ -4,7 +4,7 @@ use dep::aztec::state_vars::{ }; use dep::value_note::value_note::{ ValueNote, - ValueNoteInterface, + ValueNoteMethods, VALUE_NOTE_LEN, }; @@ -15,7 +15,7 @@ struct Storage { impl Storage { fn init() -> Self { Storage { - balances: Map::new(1, |s| Set::new(s, ValueNoteInterface)), + balances: Map::new(1, |s| Set::new(s, ValueNoteMethods)), } } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/Nargo.toml index 477074432fff..8557d4f3dd48 100644 --- a/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "pokable-token-contract" +name = "pokeable_token_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/address_note.nr b/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/address_note.nr index 3c2fe9044ff6..b77e3130465e 100644 --- a/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/address_note.nr +++ b/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/address_note.nr @@ -27,7 +27,7 @@ impl AddressNote { } fn compute_nullifier(self) -> Field { - let siloed_note_hash = compute_siloed_note_hash(AddressNoteInterface, self); + let siloed_note_hash = compute_siloed_note_hash(AddressNoteMethods, self); let owner_nullifying_public_key = get_public_key(self.address); let secret = get_secret_key(owner_nullifying_public_key); dep::std::hash::pedersen([ @@ -79,7 +79,7 @@ fn set_header(note: &mut AddressNote, header: NoteHeader) { note.set_header(header); } -global AddressNoteInterface = NoteInterface { +global AddressNoteMethods = NoteInterface { deserialise, serialise, compute_note_hash, diff --git a/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/main.nr index a7117046f60c..8aa6367509fc 100644 --- a/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/main.nr @@ -6,7 +6,7 @@ contract PokeableToken { use dep::value_note::{ balance_utils, utils::{send_note, spend_notes}, - value_note::{VALUE_NOTE_LEN, ValueNoteInterface, ValueNote}, + value_note::{VALUE_NOTE_LEN, ValueNoteMethods, ValueNote}, filter::get_2_notes, }; use dep::aztec::abi; @@ -22,7 +22,7 @@ contract PokeableToken { use dep::aztec::log::emit_encrypted_log; use crate::storage::Storage; - use crate::address_note::{AddressNote, AddressNoteInterface}; + use crate::address_note::{AddressNote, AddressNoteMethods}; // Constructs the contract and sets `initial_supply` which is fully owned by `sender`. fn constructor( @@ -135,9 +135,9 @@ contract PokeableToken { unconstrained fn compute_note_hash_and_nullifier(contract_address: Field, nonce: Field, storage_slot: Field, preimage: [Field; VALUE_NOTE_LEN]) -> [Field; 4] { let note_header = NoteHeader { contract_address, nonce, storage_slot }; if (storage_slot == 1) | (storage_slot == 2) { - note_utils::compute_note_hash_and_nullifier(AddressNoteInterface, note_header, preimage) + note_utils::compute_note_hash_and_nullifier(AddressNoteMethods, note_header, preimage) } else { - note_utils::compute_note_hash_and_nullifier(ValueNoteInterface, note_header, preimage) + note_utils::compute_note_hash_and_nullifier(ValueNoteMethods, note_header, preimage) } } } diff --git a/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/storage.nr b/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/storage.nr index 671e0789b32d..68af91433634 100644 --- a/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/storage.nr +++ b/yarn-project/noir-contracts/src/contracts/pokeable_token_contract/src/storage.nr @@ -5,12 +5,12 @@ use dep::aztec::state_vars::{ }; use crate::address_note::{ AddressNote, - AddressNoteInterface, + AddressNoteMethods, ADDRESS_NOTE_LEN, }; use dep::value_note::value_note::{ ValueNote, - ValueNoteInterface, + ValueNoteMethods, VALUE_NOTE_LEN, }; @@ -23,9 +23,9 @@ struct Storage { impl Storage { fn init() -> Self { Storage { - sender: ImmutableSingleton::new(1, AddressNoteInterface), - recipient: ImmutableSingleton::new(2, AddressNoteInterface), - balances: Map::new(3, |s| Set::new(s, ValueNoteInterface)), + sender: ImmutableSingleton::new(1, AddressNoteMethods), + recipient: ImmutableSingleton::new(2, AddressNoteMethods), + balances: Map::new(3, |slot| Set::new(slot, ValueNoteMethods)), } } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/public_token_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/public_token_contract/Nargo.toml index 452418f666b0..258bb88aa394 100644 --- a/yarn-project/noir-contracts/src/contracts/public_token_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/public_token_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "public-token-contract" +name = "public_token_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/public_token_contract/src/storage.nr b/yarn-project/noir-contracts/src/contracts/public_token_contract/src/storage.nr index b134c01badf7..79135907caa7 100644 --- a/yarn-project/noir-contracts/src/contracts/public_token_contract/src/storage.nr +++ b/yarn-project/noir-contracts/src/contracts/public_token_contract/src/storage.nr @@ -1,7 +1,7 @@ use dep::aztec::state_vars::map::Map; use dep::aztec::state_vars::public_state::PublicState; -use dep::aztec::state_vars::type_serialisation_interface::field_serialisation_interface::FieldSerialisationInterface; -use dep::aztec::state_vars::type_serialisation_interface::field_serialisation_interface::FIELD_SERIALISED_LEN; +use dep::aztec::state_vars::type_serialisation::field_serialisation::FieldSerialisationMethods; +use dep::aztec::state_vars::type_serialisation::field_serialisation::FIELD_SERIALISED_LEN; struct Storage { balances: Map>, @@ -11,7 +11,7 @@ struct Storage { impl Storage { fn init() -> Self { Storage { - balances: Map::new(1, |slot| PublicState::new(slot, FieldSerialisationInterface)), + balances: Map::new(1, |slot| PublicState::new(slot, FieldSerialisationMethods)), } } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/Nargo.toml index f17aadf2fdc4..38858a840d47 100644 --- a/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "schnorr-multi-key-account-contract" +name = "schnorr_multi_key_account_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/main.nr index 1f5155f2f29c..6473dfac9dd1 100644 --- a/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/main.nr @@ -24,7 +24,7 @@ contract SchnorrMultiKeyAccount { use crate::storage::Storage; use crate::public_key_note::PublicKeyNote; - use crate::public_key_note::PublicKeyNoteInterface; + use crate::public_key_note::PublicKeyNoteMethods; use crate::public_key_note::PUBLIC_KEY_NOTE_LEN; fn entrypoint( @@ -90,6 +90,6 @@ contract SchnorrMultiKeyAccount { unconstrained fn compute_note_hash_and_nullifier(contract_address: Field, nonce: Field, storage_slot: Field, preimage: [Field; PUBLIC_KEY_NOTE_LEN]) -> [Field; 4] { assert(storage_slot == 1); let note_header = NoteHeader { contract_address, nonce, storage_slot }; - note_utils::compute_note_hash_and_nullifier(PublicKeyNoteInterface, note_header, preimage) + note_utils::compute_note_hash_and_nullifier(PublicKeyNoteMethods, note_header, preimage) } } diff --git a/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/public_key_note.nr b/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/public_key_note.nr index aece0c7621f3..5e7f774c603e 100644 --- a/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/public_key_note.nr +++ b/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/public_key_note.nr @@ -32,7 +32,7 @@ impl PublicKeyNote { } fn compute_nullifier(self) -> Field { - let siloed_note_hash = compute_siloed_note_hash(PublicKeyNoteInterface, self); + let siloed_note_hash = compute_siloed_note_hash(PublicKeyNoteMethods, self); let owner_nullifying_public_key = get_public_key(self.owner); let secret = get_secret_key(owner_nullifying_public_key); dep::std::hash::pedersen([ @@ -88,7 +88,7 @@ fn set_header(note: &mut PublicKeyNote, header: NoteHeader) { note.set_header(header); } -global PublicKeyNoteInterface = NoteInterface { +global PublicKeyNoteMethods = NoteInterface { deserialise, serialise, compute_note_hash, diff --git a/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/storage.nr b/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/storage.nr index d69e88fc0432..4dbe927ace89 100644 --- a/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/storage.nr +++ b/yarn-project/noir-contracts/src/contracts/schnorr_multi_key_account_contract/src/storage.nr @@ -4,7 +4,7 @@ use dep::aztec::state_vars::{ use crate::public_key_note::{ PublicKeyNote, - PublicKeyNoteInterface, + PublicKeyNoteMethods, PUBLIC_KEY_NOTE_LEN, }; @@ -15,7 +15,7 @@ struct Storage { impl Storage { fn init() -> Self { Storage { - signing_public_key: ImmutableSingleton::new(1, PublicKeyNoteInterface) + signing_public_key: ImmutableSingleton::new(1, PublicKeyNoteMethods) } } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/contracts/schnorr_single_key_account_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/schnorr_single_key_account_contract/Nargo.toml index 1d9794874c15..1a585dda1795 100644 --- a/yarn-project/noir-contracts/src/contracts/schnorr_single_key_account_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/schnorr_single_key_account_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "schnorr-single-key-account-contract" +name = "schnorr_single_key_account_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/test_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/test_contract/Nargo.toml index 8d5249dbd4c1..1cc0ca4d27c9 100644 --- a/yarn-project/noir-contracts/src/contracts/test_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/test_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "test-contract" +name = "test_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/uniswap_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/uniswap_contract/Nargo.toml index 636bbd7ffc9a..72685a5207ad 100644 --- a/yarn-project/noir-contracts/src/contracts/uniswap_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/uniswap_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "uniswap-contract" +name = "uniswap_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/zk_token_contract/Nargo.toml b/yarn-project/noir-contracts/src/contracts/zk_token_contract/Nargo.toml index 5a2e62d9c972..7096f5fa8bec 100644 --- a/yarn-project/noir-contracts/src/contracts/zk_token_contract/Nargo.toml +++ b/yarn-project/noir-contracts/src/contracts/zk_token_contract/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "zk-token-contract" +name = "zk_token_contract" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/claim_note.nr b/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/claim_note.nr index 61dbc410eb49..8b90f4517471 100644 --- a/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/claim_note.nr +++ b/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/claim_note.nr @@ -42,7 +42,7 @@ impl ClaimNote { } fn compute_nullifier(self) -> Field { - let siloed_note_hash = compute_siloed_note_hash(ClaimNoteInterface, self); + let siloed_note_hash = compute_siloed_note_hash(ClaimNoteMethods, self); dep::std::hash::pedersen([ siloed_note_hash, self.secret_hash, // Include the secret_hash again so that the public won't know the note has been claimed. @@ -90,7 +90,7 @@ fn set_header(note: &mut ClaimNote, header: NoteHeader) { note.set_header(header) } -global ClaimNoteInterface = NoteInterface { +global ClaimNoteMethods = NoteInterface { deserialise, serialise, compute_note_hash, diff --git a/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/main.nr b/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/main.nr index 6cfc3eb0d46c..0d706de004e1 100644 --- a/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/main.nr +++ b/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/main.nr @@ -6,7 +6,7 @@ contract ZkToken { use dep::value_note::{ balance_utils, utils::{send_note, spend_notes}, - value_note::{VALUE_NOTE_LEN, ValueNoteInterface}, + value_note::{VALUE_NOTE_LEN, ValueNoteMethods}, }; use dep::aztec::abi; @@ -19,7 +19,7 @@ contract ZkToken { use dep::aztec::log::emit_unencrypted_log; use crate::storage::Storage; - use crate::claim_note::{ClaimNote, ClaimNoteInterface}; + use crate::claim_note::{ClaimNote, ClaimNoteMethods}; // Constructs the contract and sets `initial_supply` which is fully owned by `owner`. @@ -167,9 +167,9 @@ contract ZkToken { unconstrained fn compute_note_hash_and_nullifier(contract_address: Field, nonce: Field, storage_slot: Field, preimage: [Field; VALUE_NOTE_LEN]) -> [Field; 4] { let note_header = NoteHeader { contract_address, nonce, storage_slot }; if (storage_slot == 2) { - note_utils::compute_note_hash_and_nullifier(ClaimNoteInterface, note_header, preimage) + note_utils::compute_note_hash_and_nullifier(ClaimNoteMethods, note_header, preimage) } else { - note_utils::compute_note_hash_and_nullifier(ValueNoteInterface, note_header, preimage) + note_utils::compute_note_hash_and_nullifier(ValueNoteMethods, note_header, preimage) } } } diff --git a/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/storage.nr b/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/storage.nr index 1eff4c6d45ba..a81d91b415c2 100644 --- a/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/storage.nr +++ b/yarn-project/noir-contracts/src/contracts/zk_token_contract/src/storage.nr @@ -4,10 +4,10 @@ use dep::aztec::state_vars::{ }; use dep::value_note::value_note::{ ValueNote, - ValueNoteInterface, + ValueNoteMethods, VALUE_NOTE_LEN, }; -use crate::claim_note::{CLAIM_NOTE_LEN, ClaimNote, ClaimNoteInterface}; +use crate::claim_note::{CLAIM_NOTE_LEN, ClaimNote, ClaimNoteMethods}; struct Storage { balances: Map>, @@ -17,8 +17,8 @@ struct Storage { impl Storage { fn init() -> Self { Storage { - balances: Map::new(1, |s| Set::new(s, ValueNoteInterface)), - claims: Set::new(2, ClaimNoteInterface), + balances: Map::new(1, |s| Set::new(s, ValueNoteMethods)), + claims: Set::new(2, ClaimNoteMethods), } } } \ No newline at end of file diff --git a/yarn-project/noir-contracts/src/scripts/copy_output.ts b/yarn-project/noir-contracts/src/scripts/copy_output.ts index b097ab47413e..219545795696 100644 --- a/yarn-project/noir-contracts/src/scripts/copy_output.ts +++ b/yarn-project/noir-contracts/src/scripts/copy_output.ts @@ -105,10 +105,11 @@ const main = () => { const name = process.argv[2]; if (!name) throw new Error(`Missing argument contract name`); - const folder = `src/contracts/${snakeCase(name)}_contract`; - const source = readFileSync(`${folder}/src/main.nr`).toString(); + const folderName = `${snakeCase(name)}_contract`; + const folderPath = `src/contracts/${folderName}`; + const source = readFileSync(`${folderPath}/src/main.nr`).toString(); const contractName = process.argv[3] ?? upperFirst(camelCase(name)); - const build = JSON.parse(readFileSync(`${folder}/target/main-${contractName}.json`).toString()); + const build = JSON.parse(readFileSync(`${folderPath}/target/${folderName}-${contractName}.json`).toString()); const artifacts = 'src/artifacts'; const abi = { diff --git a/yarn-project/noir-libs/easy-private-state/Nargo.toml b/yarn-project/noir-libs/easy-private-state/Nargo.toml index c8efb71d005f..5cb4146f22bc 100644 --- a/yarn-project/noir-libs/easy-private-state/Nargo.toml +++ b/yarn-project/noir-libs/easy-private-state/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "easy-private-state" +name = "easy_private_state" authors = ["aztec-labs"] compiler_version = "0.7.1" diff --git a/yarn-project/noir-libs/easy-private-state/src/easy_private_state.nr b/yarn-project/noir-libs/easy-private-state/src/easy_private_state.nr index 60406b0fa21d..84c439176840 100644 --- a/yarn-project/noir-libs/easy-private-state/src/easy_private_state.nr +++ b/yarn-project/noir-libs/easy-private-state/src/easy_private_state.nr @@ -2,7 +2,7 @@ use dep::value_note::{ filter::get_2_notes, value_note::{ ValueNote, - ValueNoteInterface, + ValueNoteMethods, VALUE_NOTE_LEN, }, }; @@ -28,7 +28,7 @@ impl EasyPrivateUint { fn new(storage_slot: Field) -> Self { let set = Set { storage_slot, - note_interface: ValueNoteInterface, + note_interface: ValueNoteMethods, }; EasyPrivateUint { set, diff --git a/yarn-project/noir-libs/noir-aztec/Nargo.toml b/yarn-project/noir-libs/noir-aztec/Nargo.toml index ac30862b5548..9681257346da 100644 --- a/yarn-project/noir-libs/noir-aztec/Nargo.toml +++ b/yarn-project/noir-libs/noir-aztec/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "noir-aztec" +name = "noir_aztec" authors = [""] compiler_version = "0.1" diff --git a/yarn-project/noir-libs/noir-aztec/src/constants_gen.nr b/yarn-project/noir-libs/noir-aztec/src/constants_gen.nr index c4ab4805d090..1beff77a6f55 100644 --- a/yarn-project/noir-libs/noir-aztec/src/constants_gen.nr +++ b/yarn-project/noir-libs/noir-aztec/src/constants_gen.nr @@ -6,16 +6,16 @@ global MAX_NEW_NULLIFIERS_PER_CALL: comptime Field = 4; global MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL: comptime Field = 4; global MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL: comptime Field = 4; global MAX_NEW_L2_TO_L1_MSGS_PER_CALL: comptime Field = 2; -global MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL: comptime Field = 4; -global MAX_PUBLIC_DATA_READS_PER_CALL: comptime Field = 4; +global MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL: comptime Field = 8; +global MAX_PUBLIC_DATA_READS_PER_CALL: comptime Field = 8; global MAX_READ_REQUESTS_PER_CALL: comptime Field = 4; global MAX_NEW_COMMITMENTS_PER_TX: comptime Field = 16; global MAX_NEW_NULLIFIERS_PER_TX: comptime Field = 16; global MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX: comptime Field = 8; global MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX: comptime Field = 8; global MAX_NEW_L2_TO_L1_MSGS_PER_TX: comptime Field = 2; -global MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX: comptime Field = 4; -global MAX_PUBLIC_DATA_READS_PER_TX: comptime Field = 4; +global MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX: comptime Field = 8; +global MAX_PUBLIC_DATA_READS_PER_TX: comptime Field = 8; global MAX_NEW_CONTRACTS_PER_TX: comptime Field = 1; global MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX: comptime Field = 4; global MAX_READ_REQUESTS_PER_TX: comptime Field = 16; @@ -59,11 +59,11 @@ global CONTRACT_DEPLOYMENT_DATA_LENGTH: comptime Field = 6; global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: comptime Field = 56; global CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: comptime Field = 3; global CONTRACT_STORAGE_READ_LENGTH: comptime Field = 2; -global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: comptime Field = 55; +global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: comptime Field = 75; global GET_NOTES_ORACLE_RETURN_LENGTH: comptime Field = 86; global EMPTY_NULLIFIED_COMMITMENT: comptime Field = 1000000; global CALL_PRIVATE_FUNCTION_RETURN_SIZE: comptime Field = 62; -global PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: comptime Field = 33; +global PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: comptime Field = 41; global PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: comptime Field = 46; global GENERATOR_INDEX__COMMITMENT = 1; global GENERATOR_INDEX__COMMITMENT_NONCE = 2; diff --git a/yarn-project/noir-libs/noir-aztec/src/state_vars.nr b/yarn-project/noir-libs/noir-aztec/src/state_vars.nr index d0165c190672..0148c8a54597 100644 --- a/yarn-project/noir-libs/noir-aztec/src/state_vars.nr +++ b/yarn-project/noir-libs/noir-aztec/src/state_vars.nr @@ -1,6 +1,6 @@ mod immutable_singleton; mod map; mod public_state; -mod type_serialisation_interface; +mod type_serialisation; mod set; mod singleton; \ No newline at end of file diff --git a/yarn-project/noir-libs/noir-aztec/src/state_vars/public_state.nr b/yarn-project/noir-libs/noir-aztec/src/state_vars/public_state.nr index b14713930879..018cdb199338 100644 --- a/yarn-project/noir-libs/noir-aztec/src/state_vars/public_state.nr +++ b/yarn-project/noir-libs/noir-aztec/src/state_vars/public_state.nr @@ -1,23 +1,23 @@ use crate::oracle::storage::storage_read; use crate::oracle::storage::storage_write; -use crate::state_vars::type_serialisation_interface::TypeSerialisationInterface; +use crate::state_vars::type_serialisation::TypeSerialisationInterface; struct PublicState { storage_slot: Field, - serialisation_interface: TypeSerialisationInterface, + serialisation_methods: TypeSerialisationInterface, } impl PublicState { - fn new(storage_slot: Field, serialisation_interface: TypeSerialisationInterface) -> Self { - PublicState { storage_slot, serialisation_interface } + fn new(storage_slot: Field, serialisation_methods: TypeSerialisationInterface) -> Self { + PublicState { storage_slot, serialisation_methods } } fn read(self) -> T { - storage_read(self.storage_slot, self.serialisation_interface.deserialise) + storage_read(self.storage_slot, self.serialisation_methods.deserialise) } fn write(self, value: T) { - let serialise = self.serialisation_interface.serialise; + let serialise = self.serialisation_methods.serialise; let fields = serialise(value); storage_write(self.storage_slot, fields); } diff --git a/yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation_interface.nr b/yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation.nr similarity index 87% rename from yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation_interface.nr rename to yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation.nr index 238684c2f04d..f288e4a87e5e 100644 --- a/yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation_interface.nr +++ b/yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation.nr @@ -1,4 +1,4 @@ -mod field_serialisation_interface; +mod field_serialisation; /** * Before Noir supports traits, a way of specifying the serialisation and deserialisation methods for a type. diff --git a/yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation_interface/field_serialisation_interface.nr b/yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation/field_serialisation.nr similarity index 65% rename from yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation_interface/field_serialisation_interface.nr rename to yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation/field_serialisation.nr index 002d594d8cad..5352d0e3e5f1 100644 --- a/yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation_interface/field_serialisation_interface.nr +++ b/yarn-project/noir-libs/noir-aztec/src/state_vars/type_serialisation/field_serialisation.nr @@ -1,4 +1,4 @@ -use crate::state_vars::type_serialisation_interface::TypeSerialisationInterface; +use crate::state_vars::type_serialisation::TypeSerialisationInterface; global FIELD_SERIALISED_LEN: Field = 1; @@ -10,7 +10,7 @@ fn serialiseField(value: Field) -> [Field; FIELD_SERIALISED_LEN] { [value] } -global FieldSerialisationInterface = TypeSerialisationInterface { +global FieldSerialisationMethods = TypeSerialisationInterface { deserialise: deserialiseField, serialise: serialiseField, }; \ No newline at end of file diff --git a/yarn-project/noir-libs/value-note/Nargo.toml b/yarn-project/noir-libs/value-note/Nargo.toml index a6da913e38be..ed87714a07f5 100644 --- a/yarn-project/noir-libs/value-note/Nargo.toml +++ b/yarn-project/noir-libs/value-note/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "value-note" +name = "value_note" authors = ["aztec-labs"] compiler_version = "0.7.1" diff --git a/yarn-project/noir-libs/value-note/src/balance_utils.nr b/yarn-project/noir-libs/value-note/src/balance_utils.nr index b7ad04140f7b..8d3f486b9bdf 100644 --- a/yarn-project/noir-libs/value-note/src/balance_utils.nr +++ b/yarn-project/noir-libs/value-note/src/balance_utils.nr @@ -1,5 +1,5 @@ use dep::aztec::note::note_getter::view_notes; -use crate::value_note::{VALUE_NOTE_LEN, ValueNoteInterface}; +use crate::value_note::{VALUE_NOTE_LEN, ValueNoteMethods}; unconstrained fn get_balance(storage_slot: Field) -> Field { get_balance_internal(storage_slot, 10, 0) @@ -11,9 +11,9 @@ unconstrained fn get_balance(storage_slot: Field) -> Field { unconstrained fn get_balance_internal(storage_slot: Field, limit: u32, offset: u32) -> Field { let mut balance = 0; - let opt_notes = view_notes(storage_slot, ValueNoteInterface, limit, offset); + let opt_notes = view_notes(storage_slot, ValueNoteMethods, limit, offset); let len = opt_notes.len(); - let dummy = ValueNoteInterface.dummy; + let dummy = ValueNoteMethods.dummy; for i in 0..len { balance += opt_notes[i].unwrap_or(dummy()).value; } diff --git a/yarn-project/noir-libs/value-note/src/value_note.nr b/yarn-project/noir-libs/value-note/src/value_note.nr index cbe0537139c7..da2fc7b5015c 100644 --- a/yarn-project/noir-libs/value-note/src/value_note.nr +++ b/yarn-project/noir-libs/value-note/src/value_note.nr @@ -53,7 +53,7 @@ impl ValueNote { } fn compute_nullifier(self) -> Field { - let siloed_note_hash = compute_siloed_note_hash(ValueNoteInterface, self); + let siloed_note_hash = compute_siloed_note_hash(ValueNoteMethods, self); let owner_nullifying_public_key = get_public_key(self.owner); // TODO: get_secret_key should just accept an address // TODO! @@ -106,7 +106,7 @@ fn set_header(note: &mut ValueNote, header: NoteHeader) { note.set_header(header) } -global ValueNoteInterface = NoteInterface { +global ValueNoteMethods = NoteInterface { deserialise, serialise, compute_note_hash, diff --git a/yarn-project/p2p/src/client/mocks.ts b/yarn-project/p2p/src/client/mocks.ts index 54f86d86b25b..752bbd8e2e92 100644 --- a/yarn-project/p2p/src/client/mocks.ts +++ b/yarn-project/p2p/src/client/mocks.ts @@ -22,13 +22,13 @@ export class MockBlockSource implements L2BlockSource { } /** - * Gets the `take` amount of L2 blocks starting from `from`. + * Gets up to `limit` amount of L2 blocks starting from `from`. * @param from - Number of the first block to return (inclusive). - * @param take - The number of blocks to return. + * @param limit - The maximum number of blocks to return. * @returns The requested mocked L2 blocks. */ - public getL2Blocks(from: number, take: number) { - return Promise.resolve(this.l2Blocks.slice(from, from + take)); + public getL2Blocks(from: number, limit: number) { + return Promise.resolve(this.l2Blocks.slice(from, from + limit)); } /** diff --git a/yarn-project/rollup-provider/src/app.ts b/yarn-project/rollup-provider/src/app.ts index 1415ef5a5a0f..98e3f321e78b 100644 --- a/yarn-project/rollup-provider/src/app.ts +++ b/yarn-project/rollup-provider/src/app.ts @@ -48,8 +48,8 @@ export function appFactory(node: AztecNode, prefix: string) { router.get('/get-blocks', async (ctx: Koa.Context) => { const from = +ctx.query.from!; - const take = +ctx.query.take!; - const blocks = await node.getBlocks(from, take); + const limit = +ctx.query.limit!; + const blocks = await node.getBlocks(from, limit); const strs = blocks.map(x => x.encode().toString('hex')); ctx.set('content-type', 'application/json'); ctx.body = { @@ -114,13 +114,13 @@ export function appFactory(node: AztecNode, prefix: string) { router.get('/get-logs', async (ctx: Koa.Context) => { const from = +ctx.query.from!; - const take = +ctx.query.take!; + const limit = +ctx.query.limit!; const logType = Number(ctx.query.logType); if (logType !== 0 && logType !== 1) { throw new Error('Invalid log type: ' + ctx.query.logType); } - const logs = await node.getLogs(from, take, logType); + const logs = await node.getLogs(from, limit, logType); const strs = logs.map(x => x.toBuffer().toString('hex')); ctx.set('content-type', 'application/json'); ctx.body = { diff --git a/yarn-project/types/src/interfaces/aztec-node.ts b/yarn-project/types/src/interfaces/aztec-node.ts index f2e91687b9a1..44773c41f436 100644 --- a/yarn-project/types/src/interfaces/aztec-node.ts +++ b/yarn-project/types/src/interfaces/aztec-node.ts @@ -29,10 +29,10 @@ export interface AztecNode extends DataCommitmentProvider, L1ToL2MessageProvider /** * Method to request blocks. Will attempt to return all requested blocks but will return only those available. * @param from - The start of the range of blocks to return. - * @param take - The number of blocks desired. + * @param limit - The maximum number of blocks to return. * @returns The blocks requested. */ - getBlocks(from: number, take: number): Promise; + getBlocks(from: number, limit: number): Promise; /** * Method to fetch the current block height. @@ -69,13 +69,13 @@ export interface AztecNode extends DataCommitmentProvider, L1ToL2MessageProvider getContractInfo(contractAddress: AztecAddress): Promise; /** - * Gets the `take` amount of logs starting from `from`. + * Gets up to `limit` amount of logs starting from `from`. * @param from - Number of the L2 block to which corresponds the first logs to be returned. - * @param take - The number of logs to return. + * @param limit - The maximum number of logs to return. * @param logType - Specifies whether to return encrypted or unencrypted logs. * @returns The requested logs. */ - getLogs(from: number, take: number, logType: LogType): Promise; + getLogs(from: number, limit: number, logType: LogType): Promise; /** * Method to submit a transaction to the p2p pool. diff --git a/yarn-project/types/src/interfaces/aztec_rpc.ts b/yarn-project/types/src/interfaces/aztec_rpc.ts index 8e0c2d039ee1..8e8ca3d4d67a 100644 --- a/yarn-project/types/src/interfaces/aztec_rpc.ts +++ b/yarn-project/types/src/interfaces/aztec_rpc.ts @@ -174,10 +174,10 @@ export interface AztecRPC { /** * Gets L2 block unencrypted logs. * @param from - Number of the L2 block to which corresponds the first unencrypted logs to be returned. - * @param take - The number of unencrypted logs to return. + * @param limit - The maximum number of unencrypted logs to return. * @returns The requested unencrypted logs. */ - getUnencryptedLogs(from: number, take: number): Promise; + getUnencryptedLogs(from: number, limit: number): Promise; /** * Get latest L2 block number. diff --git a/yarn-project/types/src/l1_to_l2_message.ts b/yarn-project/types/src/l1_to_l2_message.ts index d7311a8d01eb..bd4397d54b8b 100644 --- a/yarn-project/types/src/l1_to_l2_message.ts +++ b/yarn-project/types/src/l1_to_l2_message.ts @@ -8,11 +8,11 @@ import { Fr } from '@aztec/foundation/fields'; */ export interface L1ToL2MessageSource { /** - * Gets the `take` amount of pending L1 to L2 messages, sorted by fee - * @param take - The number of messages to return (by default NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP). + * Gets up to `limit` amount of pending L1 to L2 messages, sorted by fee + * @param limit - The maximum number of messages to return (by default NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP). * @returns The requested L1 to L2 messages' keys. */ - getPendingL1ToL2Messages(take?: number): Promise; + getPendingL1ToL2Messages(limit?: number): Promise; /** * Gets the confirmed L1 to L2 message with the given message key. diff --git a/yarn-project/types/src/l2_block_source.ts b/yarn-project/types/src/l2_block_source.ts index e2879dd7cf15..184266ae42b3 100644 --- a/yarn-project/types/src/l2_block_source.ts +++ b/yarn-project/types/src/l2_block_source.ts @@ -11,12 +11,12 @@ export interface L2BlockSource { getBlockHeight(): Promise; /** - * Gets the `take` amount of L2 blocks starting from `from`. + * Gets up to `limit` amount of L2 blocks starting from `from`. * @param from - Number of the first block to return (inclusive). - * @param take - The number of blocks to return. + * @param limit - The maximum number of blocks to return. * @returns The requested L2 blocks. */ - getL2Blocks(from: number, take: number): Promise; + getL2Blocks(from: number, limit: number): Promise; /** * Starts the L2 block source. diff --git a/yarn-project/types/src/logs/l2_logs_source.ts b/yarn-project/types/src/logs/l2_logs_source.ts index d37446a178be..50cf9cb4ae2c 100644 --- a/yarn-project/types/src/logs/l2_logs_source.ts +++ b/yarn-project/types/src/logs/l2_logs_source.ts @@ -6,13 +6,13 @@ import { LogType } from './log_type.js'; */ export interface L2LogsSource { /** - * Gets the `take` amount of logs starting from `from`. + * Gets up to `limit` amount of logs starting from `from`. * @param from - Number of the L2 block to which corresponds the first logs to be returned. - * @param take - The number of logs to return. + * @param limit - The maximum number of logs to return. * @param logType - Specifies whether to return encrypted or unencrypted logs. * @returns The requested logs. */ - getLogs(from: number, take: number, logType: LogType): Promise; + getLogs(from: number, limit: number, logType: LogType): Promise; /** * Starts the encrypted logs source. diff --git a/yarn-project/types/tsconfig.dest.json b/yarn-project/types/tsconfig.dest.json new file mode 100644 index 000000000000..831ec419be69 --- /dev/null +++ b/yarn-project/types/tsconfig.dest.json @@ -0,0 +1,14 @@ +{ + "extends": ".", + "references": [ + { + "path": "../circuits.js/tsconfig.dest.json" + }, + { + "path": "../foundation/tsconfig.dest.json" + } + ], + "exclude": [ + "src/**/*.test.ts" + ] +} \ No newline at end of file diff --git a/yarn-project/yarn-project-base/Dockerfile b/yarn-project/yarn-project-base/Dockerfile index b62d6ecaf8ca..ad4b5f3e7b2d 100644 --- a/yarn-project/yarn-project-base/Dockerfile +++ b/yarn-project/yarn-project-base/Dockerfile @@ -22,6 +22,7 @@ COPY aztec-rpc/package.json aztec-rpc/package.json COPY aztec-node/package.json aztec-node/package.json COPY aztec-sandbox/package.json aztec-sandbox/package.json COPY aztec.js/package.json aztec.js/package.json +COPY aztec.js/package.local.json aztec.js/package.local.json COPY docs/package.json docs/package.json COPY end-to-end/package.json end-to-end/package.json COPY ethereum/package.json ethereum/package.json diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index 0fd2ac5053c8..f162d5769c1d 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -119,7 +119,7 @@ __metadata: tsc-watch: ^6.0.0 tslib: ^2.5.0 typescript: ^5.0.4 - viem: ^1.2.5 + viem: 1.4.2 ws: ^8.13.0 languageName: unknown linkType: soft @@ -220,13 +220,23 @@ __metadata: "@types/jest": ^29.5.0 "@types/lodash.partition": ^4.6.0 "@types/node": ^18.7.23 + buffer: ^6.0.3 + crypto-browserify: ^3.12.0 jest: ^29.5.0 jest-mock-extended: ^3.0.3 lodash.partition: ^4.6.0 + process: ^0.11.10 + resolve-typescript-plugin: ^2.0.1 + stream-browserify: ^3.0.0 ts-jest: ^29.1.0 + ts-loader: ^9.4.4 ts-node: ^10.9.1 tslib: ^2.4.0 + tty-browserify: ^0.0.1 typescript: ^5.0.4 + util: ^0.12.5 + webpack: ^5.88.2 + webpack-cli: ^5.1.4 languageName: unknown linkType: soft @@ -332,6 +342,7 @@ __metadata: "@noble/curves": ^1.0.0 "@rushstack/eslint-patch": ^1.1.4 "@types/jest": ^29.5.0 + "@types/koa-static": ^4.0.2 "@types/levelup": ^5.1.2 "@types/lodash.every": ^4.6.7 "@types/lodash.times": ^4.3.7 @@ -340,11 +351,14 @@ __metadata: "@types/node": ^18.7.23 concurrently: ^7.6.0 jest: ^29.5.0 + koa: ^2.14.2 + koa-static: ^5.0.0 levelup: ^5.1.1 lodash.every: ^4.6.0 lodash.times: ^4.3.2 lodash.zip: ^4.2.0 lodash.zipwith: ^4.2.0 + puppeteer: ^20.9.0 ts-jest: ^29.1.0 ts-node: ^10.9.1 tslib: ^2.4.0 @@ -733,33 +747,33 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/compat-data@npm:7.22.6" - checksum: b88631143a2ebdb75e5bac47984e950983294f1739c2133f32569c6f2fcee85f83634bb6cf4378afb44fa8eb7877d11e48811d1e6a52afa161f82276ffdc3fb4 +"@babel/compat-data@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/compat-data@npm:7.22.9" + checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3": - version: 7.22.8 - resolution: "@babel/core@npm:7.22.8" + version: 7.22.9 + resolution: "@babel/core@npm:7.22.9" dependencies: "@ampproject/remapping": ^2.2.0 "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.7 - "@babel/helper-compilation-targets": ^7.22.6 - "@babel/helper-module-transforms": ^7.22.5 + "@babel/generator": ^7.22.9 + "@babel/helper-compilation-targets": ^7.22.9 + "@babel/helper-module-transforms": ^7.22.9 "@babel/helpers": ^7.22.6 "@babel/parser": ^7.22.7 "@babel/template": ^7.22.5 "@babel/traverse": ^7.22.8 "@babel/types": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.2 - checksum: 75ed701c14ad17070382ae1dd166f7534b31f2c71e00995a5f261ee2398ee96335b0736573b8ff24ab6e3e6f5814ee2a48fa11ab90fabcd3dfc70ea87c5f30a6 + semver: ^6.3.1 + checksum: 7bf069aeceb417902c4efdaefab1f7b94adb7dea694a9aed1bda2edf4135348a080820529b1a300c6f8605740a00ca00c19b2d5e74b5dd489d99d8c11d5e56d1 languageName: node linkType: hard @@ -774,7 +788,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.17.3": +"@babel/generator@npm:^7.17.3, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.7.2": version: 7.22.9 resolution: "@babel/generator@npm:7.22.9" dependencies: @@ -786,30 +800,18 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.22.7, @babel/generator@npm:^7.7.2": - version: 7.22.7 - resolution: "@babel/generator@npm:7.22.7" - dependencies: - "@babel/types": ^7.22.5 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: cee15558888bdf5564e19cfaf95101b2910fa425f30cc1a25ac9b8621bd62b63544eb1b36ad89c80b5e41915699219f78712cab128d1f7e3da6a21fbf4143927 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-compilation-targets@npm:7.22.6" +"@babel/helper-compilation-targets@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-compilation-targets@npm:7.22.9" dependencies: - "@babel/compat-data": ^7.22.6 + "@babel/compat-data": ^7.22.9 "@babel/helper-validator-option": ^7.22.5 - "@nicolo-ribaudo/semver-v6": ^6.3.3 browserslist: ^4.21.9 lru-cache: ^5.1.1 + semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: c7788c48099c4f0edf2adeb367a941a930d39ed7453140ceb10d7114c4091922adf56d3cdd832050fd4501f25e872886390629042ddd365d3bce2ecad69ed394 + checksum: ea0006c6a93759025f4a35a25228ae260538c9f15023e8aac2a6d45ca68aef4cf86cfc429b19af9a402cbdd54d5de74ad3fbcf6baa7e48184dc079f1a791e178 languageName: node linkType: hard @@ -848,19 +850,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-module-transforms@npm:7.22.5" +"@babel/helper-module-transforms@npm:^7.22.9": + version: 7.22.9 + resolution: "@babel/helper-module-transforms@npm:7.22.9" dependencies: "@babel/helper-environment-visitor": ^7.22.5 "@babel/helper-module-imports": ^7.22.5 "@babel/helper-simple-access": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 "@babel/helper-validator-identifier": ^7.22.5 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.5 - "@babel/types": ^7.22.5 - checksum: 8985dc0d971fd17c467e8b84fe0f50f3dd8610e33b6c86e5b3ca8e8859f9448bcc5c84e08a2a14285ef388351c0484797081c8f05a03770bf44fc27bf4900e68 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 2751f77660518cf4ff027514d6f4794f04598c6393be7b04b8e46c6e21606e11c19f3f57ab6129a9c21bacdf8b3ffe3af87bb401d972f34af2d0ffde02ac3001 languageName: node linkType: hard @@ -880,7 +881,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.16.7, @babel/helper-split-export-declaration@npm:^7.22.5, @babel/helper-split-export-declaration@npm:^7.22.6": +"@babel/helper-split-export-declaration@npm:^7.16.7, @babel/helper-split-export-declaration@npm:^7.22.6": version: 7.22.6 resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: @@ -1133,7 +1134,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.22.5, @babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8": +"@babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8": version: 7.22.8 resolution: "@babel/traverse@npm:7.22.8" dependencies: @@ -1187,8 +1188,8 @@ __metadata: linkType: hard "@chainsafe/libp2p-noise@npm:^12.0.0": - version: 12.0.1 - resolution: "@chainsafe/libp2p-noise@npm:12.0.1" + version: 12.0.2 + resolution: "@chainsafe/libp2p-noise@npm:12.0.2" dependencies: "@libp2p/crypto": ^1.0.11 "@libp2p/interface-connection-encrypter": ^4.0.0 @@ -1197,9 +1198,9 @@ __metadata: "@libp2p/interface-peer-id": ^2.0.0 "@libp2p/logger": ^2.0.5 "@libp2p/peer-id": ^2.0.0 - "@noble/hashes": ^1.3.0 - "@stablelib/chacha20poly1305": ^1.0.1 - "@stablelib/x25519": ^1.0.3 + "@noble/ciphers": ^0.1.4 + "@noble/curves": ^1.1.0 + "@noble/hashes": ^1.3.1 it-length-prefixed: ^9.0.1 it-pair: ^2.0.2 it-pb-stream: ^4.0.1 @@ -1208,7 +1209,7 @@ __metadata: protons-runtime: ^5.0.0 uint8arraylist: ^2.3.2 uint8arrays: ^4.0.2 - checksum: 5ecbefe365b3ca36f9fb4cb3f0640a9c334b1da476b69fb3a323c261a4c4acac33e36e08061f07dd0a645632b2f37fa2f33a368cc0c8074b85ec445ab3cefa54 + checksum: b412f4c53774b095184b4a8ccd9824d5c24a41c7ca5ef0dfeee3f6302255b8907d0e724959f5eb225d3cbc46a17feacc53cb88131ef69c1d9a6467f49faac7c9 languageName: node linkType: hard @@ -1247,6 +1248,13 @@ __metadata: languageName: node linkType: hard +"@discoveryjs/json-ext@npm:^0.5.0": + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 + languageName: node + linkType: hard + "@es-joy/jsdoccomment@npm:~0.37.0": version: 0.37.1 resolution: "@es-joy/jsdoccomment@npm:0.37.1" @@ -1258,156 +1266,156 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/android-arm64@npm:0.18.11" +"@esbuild/android-arm64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/android-arm64@npm:0.18.17" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@esbuild/android-arm@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/android-arm@npm:0.18.11" +"@esbuild/android-arm@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/android-arm@npm:0.18.17" conditions: os=android & cpu=arm languageName: node linkType: hard -"@esbuild/android-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/android-x64@npm:0.18.11" +"@esbuild/android-x64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/android-x64@npm:0.18.17" conditions: os=android & cpu=x64 languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/darwin-arm64@npm:0.18.11" +"@esbuild/darwin-arm64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/darwin-arm64@npm:0.18.17" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/darwin-x64@npm:0.18.11" +"@esbuild/darwin-x64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/darwin-x64@npm:0.18.17" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/freebsd-arm64@npm:0.18.11" +"@esbuild/freebsd-arm64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/freebsd-arm64@npm:0.18.17" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/freebsd-x64@npm:0.18.11" +"@esbuild/freebsd-x64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/freebsd-x64@npm:0.18.17" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-arm64@npm:0.18.11" +"@esbuild/linux-arm64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/linux-arm64@npm:0.18.17" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-arm@npm:0.18.11" +"@esbuild/linux-arm@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/linux-arm@npm:0.18.17" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-ia32@npm:0.18.11" +"@esbuild/linux-ia32@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/linux-ia32@npm:0.18.17" conditions: os=linux & cpu=ia32 languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-loong64@npm:0.18.11" +"@esbuild/linux-loong64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/linux-loong64@npm:0.18.17" conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-mips64el@npm:0.18.11" +"@esbuild/linux-mips64el@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/linux-mips64el@npm:0.18.17" conditions: os=linux & cpu=mips64el languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-ppc64@npm:0.18.11" +"@esbuild/linux-ppc64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/linux-ppc64@npm:0.18.17" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-riscv64@npm:0.18.11" +"@esbuild/linux-riscv64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/linux-riscv64@npm:0.18.17" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-s390x@npm:0.18.11" +"@esbuild/linux-s390x@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/linux-s390x@npm:0.18.17" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/linux-x64@npm:0.18.11" +"@esbuild/linux-x64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/linux-x64@npm:0.18.17" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/netbsd-x64@npm:0.18.11" +"@esbuild/netbsd-x64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/netbsd-x64@npm:0.18.17" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/openbsd-x64@npm:0.18.11" +"@esbuild/openbsd-x64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/openbsd-x64@npm:0.18.17" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/sunos-x64@npm:0.18.11" +"@esbuild/sunos-x64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/sunos-x64@npm:0.18.17" conditions: os=sunos & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/win32-arm64@npm:0.18.11" +"@esbuild/win32-arm64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/win32-arm64@npm:0.18.17" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/win32-ia32@npm:0.18.11" +"@esbuild/win32-ia32@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/win32-ia32@npm:0.18.17" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.18.11": - version: 0.18.11 - resolution: "@esbuild/win32-x64@npm:0.18.11" +"@esbuild/win32-x64@npm:0.18.17": + version: 0.18.17 + resolution: "@esbuild/win32-x64@npm:0.18.17" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1423,23 +1431,16 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.4.0": - version: 4.5.1 - resolution: "@eslint-community/regexpp@npm:4.5.1" - checksum: 6d901166d64998d591fab4db1c2f872981ccd5f6fe066a1ad0a93d4e11855ecae6bfb76660869a469563e8882d4307228cebd41142adb409d182f2966771e57e - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.5.1": +"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": version: 4.6.2 resolution: "@eslint-community/regexpp@npm:4.6.2" checksum: a3c341377b46b54fa228f455771b901d1a2717f95d47dcdf40199df30abc000ba020f747f114f08560d119e979d882a94cf46cfc51744544d54b00319c0f2724 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.0": - version: 2.1.0 - resolution: "@eslint/eslintrc@npm:2.1.0" +"@eslint/eslintrc@npm:^2.1.1": + version: 2.1.1 + resolution: "@eslint/eslintrc@npm:2.1.1" dependencies: ajv: ^6.12.4 debug: ^4.3.2 @@ -1450,14 +1451,14 @@ __metadata: js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: d5ed0adbe23f6571d8c9bb0ca6edf7618dc6aed4046aa56df7139f65ae7b578874e0d9c796df784c25bda648ceb754b6320277d828c8b004876d7443b8dc018c + checksum: bf909ea183d27238c257a82d4ffdec38ca94b906b4b8dfae02ecbe7ecc9e5a8182ef5e469c808bb8cb4fea4750f43ac4ca7c4b4a167b6cd7e3aaacd386b2bd25 languageName: node linkType: hard -"@eslint/js@npm:8.44.0": - version: 8.44.0 - resolution: "@eslint/js@npm:8.44.0" - checksum: fc539583226a28f5677356e9f00d2789c34253f076643d2e32888250e509a4e13aafe0880cb2425139051de0f3a48d25bfc5afa96b7304f203b706c17340e3cf +"@eslint/js@npm:^8.46.0": + version: 8.46.0 + resolution: "@eslint/js@npm:8.46.0" + checksum: 7aed479832302882faf5bec37e9d068f270f84c19b3fb529646a7c1b031e73a312f730569c78806492bc09cfce3d7651dfab4ce09a56cbb06bc6469449e56377 languageName: node linkType: hard @@ -1520,28 +1521,28 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/console@npm:29.6.1" +"@jest/console@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/console@npm:29.6.2" dependencies: "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 + jest-message-util: ^29.6.2 + jest-util: ^29.6.2 slash: ^3.0.0 - checksum: d0ab23a00947bfb4bff8c0a7e5a7afd16519de16dde3fe7e77b9f13e794c6df7043ecf7fcdde66ac0d2b5fb3262e9cab3d92eaf61f89a12d3b8e3602e06a9902 + checksum: 1198667bda0430770c3e9b92681c0ee9f8346394574071c633f306192ac5f08e12972d6a5fdf03eb0d441051c8439bce0f6f9f355dc60d98777a35328331ba2e languageName: node linkType: hard -"@jest/core@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/core@npm:29.6.1" +"@jest/core@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/core@npm:29.6.2" dependencies: - "@jest/console": ^29.6.1 - "@jest/reporters": ^29.6.1 - "@jest/test-result": ^29.6.1 - "@jest/transform": ^29.6.1 + "@jest/console": ^29.6.2 + "@jest/reporters": ^29.6.2 + "@jest/test-result": ^29.6.2 + "@jest/transform": ^29.6.2 "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 @@ -1550,20 +1551,20 @@ __metadata: exit: ^0.1.2 graceful-fs: ^4.2.9 jest-changed-files: ^29.5.0 - jest-config: ^29.6.1 - jest-haste-map: ^29.6.1 - jest-message-util: ^29.6.1 + jest-config: ^29.6.2 + jest-haste-map: ^29.6.2 + jest-message-util: ^29.6.2 jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.1 - jest-resolve-dependencies: ^29.6.1 - jest-runner: ^29.6.1 - jest-runtime: ^29.6.1 - jest-snapshot: ^29.6.1 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 - jest-watcher: ^29.6.1 + jest-resolve: ^29.6.2 + jest-resolve-dependencies: ^29.6.2 + jest-runner: ^29.6.2 + jest-runtime: ^29.6.2 + jest-snapshot: ^29.6.2 + jest-util: ^29.6.2 + jest-validate: ^29.6.2 + jest-watcher: ^29.6.2 micromatch: ^4.0.4 - pretty-format: ^29.6.1 + pretty-format: ^29.6.2 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -1571,75 +1572,75 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 736dcc90c6c58dd9e1d2da122103b851187719ce3b3d4167689c63e68252632cd817712955b52ddaa648eba9c6f98f86cd58677325f0db4185f76899c64d7dac + checksum: 6bbb3886430248c0092f275b1b946a701406732f7442c04e63e4ee2297c2ec02d8ceeec508a202e08128197699b2bcddbae2c2f74adb2cf30f2f0d7d94a7c2dc languageName: node linkType: hard -"@jest/environment@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/environment@npm:29.6.1" +"@jest/environment@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/environment@npm:29.6.2" dependencies: - "@jest/fake-timers": ^29.6.1 + "@jest/fake-timers": ^29.6.2 "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.6.1 - checksum: fb671f91f27e7aa1ba04983ef87a83f0794a597aba0a57d08cbb1fcb484c2aedc2201e99f85fafe27aec9be78af6f2d1d7e6ea88267938992a1d0f9d4615f5b2 + jest-mock: ^29.6.2 + checksum: c7de0e4c0d9166e02d0eb166574e05ec460e1db3b69d6476e63244edd52d7c917e6876af55fe723ff3086f52c0b1869dec60654054735a7a48c9d4ac43af2a25 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/expect-utils@npm:29.6.1" +"@jest/expect-utils@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/expect-utils@npm:29.6.2" dependencies: jest-get-type: ^29.4.3 - checksum: 037ee017eca62f7b45e1465fb5c6f9e92d5709a9ac716b8bff0bd294240a54de734e8f968fb69309cc4aef6c83b9552d5a821f3b18371af394bf04783859d706 + checksum: 0decf2009aa3735f9df469e78ce1721c2815e4278439887e0cf0321ca8979541a22515d114a59b2445a6cd70a074b09dc9c00b5e7b3b3feac5174b9c4a78b2e1 languageName: node linkType: hard -"@jest/expect@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/expect@npm:29.6.1" +"@jest/expect@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/expect@npm:29.6.2" dependencies: - expect: ^29.6.1 - jest-snapshot: ^29.6.1 - checksum: 5c56977b3cc8489744d97d9dc2dcb196c1dfecc83a058a7ef0fd4f63d68cf120a23d27669272d1e1b184fb4337b85e4ac1fc7f886e3988fdf243d42d73973eac + expect: ^29.6.2 + jest-snapshot: ^29.6.2 + checksum: bd2d88a4e7c5420079c239afef341ec53dc7e353816cd13acbb42631a31fd321fe58677bb43a4dba851028f4c7e31da7980314e9094cd5b348896cb6cd3d42b2 languageName: node linkType: hard -"@jest/fake-timers@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/fake-timers@npm:29.6.1" +"@jest/fake-timers@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/fake-timers@npm:29.6.2" dependencies: "@jest/types": ^29.6.1 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.6.1 - jest-mock: ^29.6.1 - jest-util: ^29.6.1 - checksum: 86991276944b7d6c2ada3703a272517f5f8f2f4e2af1fe26065f6db1dac4dc6299729a88c46bcb781dcc1b20504c1d4bbd8119fd8a0838ac81a9a4b5d2c8e429 + jest-message-util: ^29.6.2 + jest-mock: ^29.6.2 + jest-util: ^29.6.2 + checksum: 1abcda02f22d2ba32e178b7ab80a9180235a6c75ec9faef33324627b19a70dad64889a9ea49b8f07230e14a6e683b9120542c6d1d6b2ecaf937f4efde32dad88 languageName: node linkType: hard -"@jest/globals@npm:^29.5.0, @jest/globals@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/globals@npm:29.6.1" +"@jest/globals@npm:^29.5.0, @jest/globals@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/globals@npm:29.6.2" dependencies: - "@jest/environment": ^29.6.1 - "@jest/expect": ^29.6.1 + "@jest/environment": ^29.6.2 + "@jest/expect": ^29.6.2 "@jest/types": ^29.6.1 - jest-mock: ^29.6.1 - checksum: fcca0b970a8b4894a1cdff0f500a86b45609e72c0a4319875e9504237b839df1a46c44d2f1362c6d87fdc7a05928edcc4b5a3751c9e6648dd70a761cdab64c94 + jest-mock: ^29.6.2 + checksum: aa4a54f19cc025205bc696546940e1fe9c752c2d4d825852088aa76d44677ebba1ec66fabb78e615480cff23a06a70b5a3f893ab5163d901cdfa0d2267870b10 languageName: node linkType: hard -"@jest/reporters@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/reporters@npm:29.6.1" +"@jest/reporters@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/reporters@npm:29.6.2" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.6.1 - "@jest/test-result": ^29.6.1 - "@jest/transform": ^29.6.1 + "@jest/console": ^29.6.2 + "@jest/test-result": ^29.6.2 + "@jest/transform": ^29.6.2 "@jest/types": ^29.6.1 "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" @@ -1653,9 +1654,9 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 - jest-worker: ^29.6.1 + jest-message-util: ^29.6.2 + jest-util: ^29.6.2 + jest-worker: ^29.6.2 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -1665,7 +1666,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: b7dae415f3f6342b4db2671261bbee29af20a829f42135316c3dd548b9ef85290c9bb64a0e3aec4a55486596be1257ac8216a0f8d9794acd43f8b8fb686fc7e3 + checksum: 7cf880d0730cee7d24ee96928003ef6946bf93423b0ae9a2edb53cae2c231b8ac50ec264f48a73744e3f11ca319cd414edacf99b2e7bf37cd72fe0b362090dd1 languageName: node linkType: hard @@ -1689,33 +1690,33 @@ __metadata: languageName: node linkType: hard -"@jest/test-result@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/test-result@npm:29.6.1" +"@jest/test-result@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/test-result@npm:29.6.2" dependencies: - "@jest/console": ^29.6.1 + "@jest/console": ^29.6.2 "@jest/types": ^29.6.1 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 9397a3a3410c5df564e79297b1be4fe33807a6157a017a1f74b54a6ef14de1530f12b922299e822e66a82c53269da16661772bffde3d883a78c5eefd2cd6d1cc + checksum: 8aff37f18c8d2df4d9f453d57ec018a6479eb697fabcf74b1ca06e34553da1d7a2b85580a290408ba0b02e58543263244a2cb065c7c7180c8d8180cc78444fbd languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/test-sequencer@npm:29.6.1" +"@jest/test-sequencer@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/test-sequencer@npm:29.6.2" dependencies: - "@jest/test-result": ^29.6.1 + "@jest/test-result": ^29.6.2 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.1 + jest-haste-map: ^29.6.2 slash: ^3.0.0 - checksum: f3437178b5dca0401ed2e990d8b69161442351856d56f5725e009a487f5232b51039f8829673884b9bea61c861120d08a53a36432f4a4b8aab38915a68f7000d + checksum: 12dc2577e45eeb98b85d1769846b7d6effa536907986ad3c4cbd014df9e24431a564cc8cd94603332e4b1f9bfb421371883efc6a5085b361a52425ffc2a52dc6 languageName: node linkType: hard -"@jest/transform@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/transform@npm:29.6.1" +"@jest/transform@npm:^29.6.2": + version: 29.6.2 + resolution: "@jest/transform@npm:29.6.2" dependencies: "@babel/core": ^7.11.6 "@jest/types": ^29.6.1 @@ -1725,14 +1726,14 @@ __metadata: convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.1 + jest-haste-map: ^29.6.2 jest-regex-util: ^29.4.3 - jest-util: ^29.6.1 + jest-util: ^29.6.2 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: 1635cd66e4b3dbba0689ecefabc6137301756c9c12d1d23e25124dd0dd9b4a6a38653d51e825e90f74faa022152ac1eaf200591fb50417aa7e1f7d1d1c2bc11d + checksum: ffb8c3c344cd48bedadec295d9c436737eccc39c1f0868aa9753b76397b33b2e5b121058af6f287ba6f2036181137e37df1212334bfa9d9a712986a4518cdc18 languageName: node linkType: hard @@ -1782,6 +1783,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.5 + resolution: "@jridgewell/source-map@npm:0.3.5" + dependencies: + "@jridgewell/gen-mapping": ^0.3.0 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 1ad4dec0bdafbade57920a50acec6634f88a0eb735851e0dda906fa9894e7f0549c492678aad1a10f8e144bfe87f238307bf2a914a1bc85b7781d345417e9f6f + languageName: node + linkType: hard + "@jridgewell/sourcemap-codec@npm:1.4.14": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" @@ -2357,17 +2368,17 @@ __metadata: linkType: hard "@libp2p/tracked-map@npm:^3.0.0": - version: 3.0.3 - resolution: "@libp2p/tracked-map@npm:3.0.3" + version: 3.0.4 + resolution: "@libp2p/tracked-map@npm:3.0.4" dependencies: "@libp2p/interface-metrics": ^4.0.0 - checksum: 1575965b3e6fa31f9c72309f3be67dd3ad6d3566412deb7d95c1b07a9d55835c88c894f3a21a04bb8a4e27bcfacd07bfcc2325e9381646de89dd9808b459d0de + checksum: 45ad798d986b33692d6606db05f74202c93fcd4bbe119207b4327b94aa5aa769ea8c576feea12607a1557f1cc921314c371ffe96256c397808f1c2b005e99475 languageName: node linkType: hard "@libp2p/utils@npm:^3.0.0, @libp2p/utils@npm:^3.0.10, @libp2p/utils@npm:^3.0.2": - version: 3.0.12 - resolution: "@libp2p/utils@npm:3.0.12" + version: 3.0.13 + resolution: "@libp2p/utils@npm:3.0.13" dependencies: "@achingbrain/ip-address": ^8.1.0 "@libp2p/interface-connection": ^5.0.1 @@ -2380,7 +2391,7 @@ __metadata: it-stream-types: ^2.0.1 private-ip: ^3.0.0 uint8arraylist: ^2.3.2 - checksum: fa7b0684d10492dc80d95488ef70f0e546f17b7a8cb68ef36e6d2cfd8eb9a2f821cc95e3e616e1ad8c02b2e3a68ab0a800cc05b3058c6705998670249dec0fa6 + checksum: c305138b4d0f52a8c73484cbb3303a2c1ad89b576d488efa6383672b2b4623daa94dbfebb6ffa28c1bac1b56c74b2d355a07d7186eb9cdb5e0c70517416d21ae languageName: node linkType: hard @@ -2447,26 +2458,24 @@ __metadata: linkType: hard "@multiformats/multiaddr@npm:^12.0.0, @multiformats/multiaddr@npm:^12.1.3": - version: 12.1.3 - resolution: "@multiformats/multiaddr@npm:12.1.3" + version: 12.1.5 + resolution: "@multiformats/multiaddr@npm:12.1.5" dependencies: "@chainsafe/is-ip": ^2.0.1 "@chainsafe/netmask": ^2.0.0 "@libp2p/interfaces": ^3.3.1 dns-over-http-resolver: ^2.1.0 - multiformats: ^11.0.0 + multiformats: ^12.0.1 uint8arrays: ^4.0.2 varint: ^6.0.0 - checksum: 46d1b9d14d9563a7576a2c85af3bfadbcbb402f65fb164a953aeb4aa1633d672692b513f153f2e20158b331720650b5fb572a9b8e317212ec7469c1fe4ea06c1 + checksum: 01181807070382fb96019aec68df6276c90801185eedeb82c69dfef0ff6898eacc87a13e639c364dc0da976c5be623b56198e7107f2da40e4ef3a2d3523e8c49 languageName: node linkType: hard -"@nicolo-ribaudo/semver-v6@npm:^6.3.3": - version: 6.3.3 - resolution: "@nicolo-ribaudo/semver-v6@npm:6.3.3" - bin: - semver: bin/semver.js - checksum: 8290855b1591477d2298364541fda64fafd4acc110b387067a71c9b05f4105c0a4ac079857ae9cd107c42ee884e8724a406b5116f069575e02d7ab87a35a5272 +"@noble/ciphers@npm:^0.1.4": + version: 0.1.4 + resolution: "@noble/ciphers@npm:0.1.4" + checksum: a846f91dc876ea8cf01c20f04df2816926ad4e4d90169e6334de39b477ce13bf5e720f4df9f9898dd2a87643660ccc8a04aa466baf885c43860c270bcc7deced languageName: node linkType: hard @@ -2479,7 +2488,7 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:^1.0.0": +"@noble/curves@npm:^1.0.0, @noble/curves@npm:^1.1.0": version: 1.1.0 resolution: "@noble/curves@npm:1.1.0" dependencies: @@ -2502,7 +2511,7 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.3.1, @noble/hashes@npm:^1.3.0, @noble/hashes@npm:~1.3.0": +"@noble/hashes@npm:1.3.1, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:~1.3.0": version: 1.3.1 resolution: "@noble/hashes@npm:1.3.1" checksum: 7fdefc0f7a0c1ec27acc6ff88841793e3f93ec4ce6b8a6a12bfc0dd70ae6b7c4c82fe305fdfeda1735d5ad4a9eebe761e6693b3d355689c559e91242f4bc95b1 @@ -2662,6 +2671,28 @@ __metadata: languageName: node linkType: hard +"@puppeteer/browsers@npm:1.4.6": + version: 1.4.6 + resolution: "@puppeteer/browsers@npm:1.4.6" + dependencies: + debug: 4.3.4 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.3.0 + tar-fs: 3.0.4 + unbzip2-stream: 1.4.3 + yargs: 17.7.1 + peerDependencies: + typescript: ">= 4.7.4" + peerDependenciesMeta: + typescript: + optional: true + bin: + browsers: lib/cjs/main-cli.js + checksum: 29569dd8a8a41737bb0dd40cce6279cfc8764afc6242d2f9d8ae610bed7e466fc77eeb27b9b3ac53dd04927a1a0e26389f282f6ba057210979b36ab455009d64 + languageName: node + linkType: hard + "@rushstack/eslint-patch@npm:^1.1.4, @rushstack/eslint-patch@npm:^1.2.0": version: 1.3.2 resolution: "@rushstack/eslint-patch@npm:1.3.2" @@ -2722,114 +2753,6 @@ __metadata: languageName: node linkType: hard -"@stablelib/aead@npm:^1.0.1": - version: 1.0.1 - resolution: "@stablelib/aead@npm:1.0.1" - checksum: 1a6f68d138f105d17dd65349751515bd252ab0498c77255b8555478d28415600dde493f909eb718245047a993f838dfae546071e1687566ffb7b8c3e10c918d9 - languageName: node - linkType: hard - -"@stablelib/binary@npm:^1.0.1": - version: 1.0.1 - resolution: "@stablelib/binary@npm:1.0.1" - dependencies: - "@stablelib/int": ^1.0.1 - checksum: dca9b98eb1f56a4002b5b9e7351fbc49f3d8616af87007c01e833bd763ac89214eb5f3b7e18673c91ce59d4a0e4856a2eb661ace33d39f17fb1ad267271fccd8 - languageName: node - linkType: hard - -"@stablelib/bytes@npm:^1.0.1": - version: 1.0.1 - resolution: "@stablelib/bytes@npm:1.0.1" - checksum: 456267e08c3384abcb71d3ad3e97a6f99185ad754bac016f501ebea4e4886f37900589143b57e33bdbbf513a92fc89368c15dd4517e0540d0bdc79ecdf9dd087 - languageName: node - linkType: hard - -"@stablelib/chacha20poly1305@npm:^1.0.1": - version: 1.0.1 - resolution: "@stablelib/chacha20poly1305@npm:1.0.1" - dependencies: - "@stablelib/aead": ^1.0.1 - "@stablelib/binary": ^1.0.1 - "@stablelib/chacha": ^1.0.1 - "@stablelib/constant-time": ^1.0.1 - "@stablelib/poly1305": ^1.0.1 - "@stablelib/wipe": ^1.0.1 - checksum: 81f1a32330838d31e4dc3144d76eba7244b56d9ea38c1f604f2c34d93ed8e67e9a6167d2cfd72254c13cc46dfc1f5ce5157b37939a575295d69d9144abb4e4fb - languageName: node - linkType: hard - -"@stablelib/chacha@npm:^1.0.1": - version: 1.0.1 - resolution: "@stablelib/chacha@npm:1.0.1" - dependencies: - "@stablelib/binary": ^1.0.1 - "@stablelib/wipe": ^1.0.1 - checksum: f061f36c4ca4bf177dd7cac11e7c65ced164f141b6065885141ae5a55f32e16ba0209aefcdcc966aef013f1da616ce901a3a80653b4b6f833cf7e3397ae2d6bd - languageName: node - linkType: hard - -"@stablelib/constant-time@npm:^1.0.1": - version: 1.0.1 - resolution: "@stablelib/constant-time@npm:1.0.1" - checksum: dba4f4bf508de2ff15f7f0cbd875e70391aa3ba3698290fe1ed2feb151c243ba08a90fc6fb390ec2230e30fcc622318c591a7c0e35dcb8150afb50c797eac3d7 - languageName: node - linkType: hard - -"@stablelib/int@npm:^1.0.1": - version: 1.0.1 - resolution: "@stablelib/int@npm:1.0.1" - checksum: 65bfbf50a382eea70c68e05366bf379cfceff8fbc076f1c267ef2f2411d7aed64fd140c415cb6c29f19a3910d3b8b7805d4b32ad5721a5007a8e744a808c7ae3 - languageName: node - linkType: hard - -"@stablelib/keyagreement@npm:^1.0.1": - version: 1.0.1 - resolution: "@stablelib/keyagreement@npm:1.0.1" - dependencies: - "@stablelib/bytes": ^1.0.1 - checksum: 3c8ec904dd50f72f3162f5447a0fa8f1d9ca6e24cd272d3dbe84971267f3b47f9bd5dc4e4eeedf3fbac2fe01f2d9277053e57c8e60db8c5544bfb35c62d290dd - languageName: node - linkType: hard - -"@stablelib/poly1305@npm:^1.0.1": - version: 1.0.1 - resolution: "@stablelib/poly1305@npm:1.0.1" - dependencies: - "@stablelib/constant-time": ^1.0.1 - "@stablelib/wipe": ^1.0.1 - checksum: 70b845bb0481c66b7ba3f3865d01e4c67a4dffc9616fc6de1d23efc5e828ec09de25f8e3be4e1f15a23b8e87e3036ee3d949c2fd4785047e6f7028bbec0ead18 - languageName: node - linkType: hard - -"@stablelib/random@npm:^1.0.2": - version: 1.0.2 - resolution: "@stablelib/random@npm:1.0.2" - dependencies: - "@stablelib/binary": ^1.0.1 - "@stablelib/wipe": ^1.0.1 - checksum: f5ace0a588dc4c21f01cb85837892d4c872e994ae77a58a8eb7dd61aa0b26fb1e9b46b0445e71af57d963ef7d9f5965c64258fc0d04df7b2947bc48f2d3560c5 - languageName: node - linkType: hard - -"@stablelib/wipe@npm:^1.0.1": - version: 1.0.1 - resolution: "@stablelib/wipe@npm:1.0.1" - checksum: 287802eb146810a46ba72af70b82022caf83a8aeebde23605f5ee0decf64fe2b97a60c856e43b6617b5801287c30cfa863cfb0469e7fcde6f02d143cf0c6cbf4 - languageName: node - linkType: hard - -"@stablelib/x25519@npm:^1.0.3": - version: 1.0.3 - resolution: "@stablelib/x25519@npm:1.0.3" - dependencies: - "@stablelib/keyagreement": ^1.0.1 - "@stablelib/random": ^1.0.2 - "@stablelib/wipe": ^1.0.1 - checksum: f8537066b542b6770c1b5b2ae5ad0688d1b986e4bf818067c152c123a5471531987bbf024224f75f387f481ccc5b628e391e49e92102b8b1a3e2d449d6105402 - languageName: node - linkType: hard - "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -2837,9 +2760,16 @@ __metadata: languageName: node linkType: hard +"@tootallnate/quickjs-emscripten@npm:^0.23.0": + version: 0.23.0 + resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" + checksum: c350a2947ffb80b22e14ff35099fd582d1340d65723384a0fd0515e905e2534459ad2f301a43279a37308a27c99273c932e64649abd57d0bb3ca8c557150eccc + languageName: node + linkType: hard + "@trivago/prettier-plugin-sort-imports@npm:^4.1.1": - version: 4.1.1 - resolution: "@trivago/prettier-plugin-sort-imports@npm:4.1.1" + version: 4.2.0 + resolution: "@trivago/prettier-plugin-sort-imports@npm:4.2.0" dependencies: "@babel/generator": 7.17.7 "@babel/parser": ^7.20.5 @@ -2849,11 +2779,11 @@ __metadata: lodash: ^4.17.21 peerDependencies: "@vue/compiler-sfc": 3.x - prettier: 2.x + prettier: 2.x - 3.x peerDependenciesMeta: "@vue/compiler-sfc": optional: true - checksum: 09b4c3c3f4a9e7883737acf92ae7f2a59eb3f7a6f104621a883bdb2a962dcf98398891489267a6fdbba1227a3484676f8d7470e1b3bc6422b4f457382fd030ce + checksum: 2081ba9f1a2d33b9a3eeadeb3e713d404ee3d1a5cff3b20a23d94d6d915f0a8ff549616c1e77cd728f1b33733e0d7ab8e4c2512f344a612d81ece40025351160 languageName: node linkType: hard @@ -3003,6 +2933,33 @@ __metadata: languageName: node linkType: hard +"@types/eslint-scope@npm:^3.7.3": + version: 3.7.4 + resolution: "@types/eslint-scope@npm:3.7.4" + dependencies: + "@types/eslint": "*" + "@types/estree": "*" + checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460 + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 8.44.1 + resolution: "@types/eslint@npm:8.44.1" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: 8b45be72d3c22a1ee0b1cc7e7fb0e34e32bbf959e6b7e0e46d160c17894aedf159c1db5c85750f10068884c741eebc37a1cc7ea659de23a8df0c9a3203e2ff9d + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.0": + version: 1.0.1 + resolution: "@types/estree@npm:1.0.1" + checksum: e9aa175eacb797216fafce4d41e8202c7a75555bc55232dee0f9903d7171f8f19f0ae7d5191bb1a88cb90e65468be508c0df850a9fb81b4433b293a5a749899d + languageName: node + linkType: hard + "@types/express-serve-static-core@npm:^4.17.33": version: 4.17.35 resolution: "@types/express-serve-static-core@npm:4.17.35" @@ -3095,7 +3052,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.12": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.8": version: 7.0.12 resolution: "@types/json-schema@npm:7.0.12" checksum: 00239e97234eeb5ceefb0c1875d98ade6e922bfec39dd365ec6bd360b5c2f825e612ac4f6e5f1d13601b8b30f378f15e6faa805a3a732f4a1bbe61915163d293 @@ -3171,9 +3128,28 @@ __metadata: languageName: node linkType: hard +"@types/koa-send@npm:*": + version: 4.1.3 + resolution: "@types/koa-send@npm:4.1.3" + dependencies: + "@types/koa": "*" + checksum: f20f6a0dcccd0d090348c7cce3635220cc82420b9579fa521dc6deae23c242aa8adb760a5a3fc84d7590a7f393b41b71b18312f9519c1c4a0b16ee24aae2e104 + languageName: node + linkType: hard + +"@types/koa-static@npm:^4.0.2": + version: 4.0.2 + resolution: "@types/koa-static@npm:4.0.2" + dependencies: + "@types/koa": "*" + "@types/koa-send": "*" + checksum: a9c557a37b25a677f3aae084b2afd267fa78a728cd69aec20821d8acca3ef4bda172d1fd16a23711266d97e77962d037ffd25ee76b24608413032226321f461f + languageName: node + linkType: hard + "@types/koa@npm:*, @types/koa@npm:^2.13.5, @types/koa@npm:^2.13.6": - version: 2.13.6 - resolution: "@types/koa@npm:2.13.6" + version: 2.13.8 + resolution: "@types/koa@npm:2.13.8" dependencies: "@types/accepts": "*" "@types/content-disposition": "*" @@ -3183,7 +3159,7 @@ __metadata: "@types/keygrip": "*" "@types/koa-compose": "*" "@types/node": "*" - checksum: a4061c2e29cd4ccb65a704fe3ef6868eac82558856c7c00a5bcc0f9fdf18c595e0156c52508eb8ba926a9108d9cf5c9a1a1b73cccf50e29b37ea1154323d0b26 + checksum: 76a2a6d219c65f242a43efca42970d864701c58319c346a91dd8c3b4df2021786fd0d600a88dfb098358c9085f9f4a2dfe62563641441cf21e11e2bfe04f4fdf languageName: node linkType: hard @@ -3360,9 +3336,9 @@ __metadata: linkType: hard "@types/lodash@npm:*": - version: 4.14.195 - resolution: "@types/lodash@npm:4.14.195" - checksum: 39b75ca635b3fa943d17d3d3aabc750babe4c8212485a4df166fe0516e39288e14b0c60afc6e21913cc0e5a84734633c71e617e2bd14eaa1cf51b8d7799c432e + version: 4.14.196 + resolution: "@types/lodash@npm:4.14.196" + checksum: 201d17c3e62ae02a93c99ec78e024b2be9bd75564dd8fd8c26f6ac51a985ab280d28ce2688c3bcdfe785b0991cd9814edff19ee000234c7b45d9a697f09feb6a languageName: node linkType: hard @@ -3404,16 +3380,16 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=13.7.0": - version: 20.4.1 - resolution: "@types/node@npm:20.4.1" - checksum: 22cbcc792f2eb636fe4188778ed0f32658ab872aa7fcb9847b3fa289a42b14b9f5e30c6faec50ef3c7adbc6c2a246926e5858136bb8b10c035a3fcaa6afbeed2 + version: 20.4.5 + resolution: "@types/node@npm:20.4.5" + checksum: 36a0304a8dc346a1b2d2edac4c4633eecf70875793d61a5274d0df052d7a7af7a8e34f29884eac4fbd094c4f0201477dcb39c0ecd3307ca141688806538d1138 languageName: node linkType: hard "@types/node@npm:^18.14.6, @types/node@npm:^18.15.11, @types/node@npm:^18.15.3, @types/node@npm:^18.7.23": - version: 18.16.19 - resolution: "@types/node@npm:18.16.19" - checksum: 63c31f09616508aa7135380a4c79470a897b75f9ff3a70eb069e534dfabdec3f32fb0f9df5939127f1086614d980ddea0fa5e8cc29a49103c4f74cd687618aaf + version: 18.17.1 + resolution: "@types/node@npm:18.17.1" + checksum: 56201bda9a2d05d68602df63b4e67b0545ac8c6d0280bd5fb31701350a978a577a027501fbf49db99bf177f2242ebd1244896bfd35e89042d5bd7dfebff28d4e languageName: node linkType: hard @@ -3424,13 +3400,6 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.1.5": - version: 2.7.3 - resolution: "@types/prettier@npm:2.7.3" - checksum: 705384209cea6d1433ff6c187c80dcc0b95d99d5c5ce21a46a9a58060c527973506822e428789d842761e0280d25e3359300f017fbe77b9755bc772ab3dc2f83 - languageName: node - linkType: hard - "@types/qs@npm:*": version: 6.9.7 resolution: "@types/qs@npm:6.9.7" @@ -3490,11 +3459,11 @@ __metadata: linkType: hard "@types/sinon@npm:^10.0.14, @types/sinon@npm:^10.0.15": - version: 10.0.15 - resolution: "@types/sinon@npm:10.0.15" + version: 10.0.16 + resolution: "@types/sinon@npm:10.0.16" dependencies: "@types/sinonjs__fake-timers": "*" - checksum: cec6d7d9d5582ca3ac851b029d5d90451bfe6d376164253792a6eb6ddcd609a0411a7fac9ed92e1879e7d3ec091d2ea2e8dbb4f6140a1065439b81dc20cafa7c + checksum: 1216aac584500d6bf845ca76f57e82f8459cf9de4ed80a55e50aa4438360fc418789a42181e211c5d279e97f86a3a994e3c81e43971d540737caca0193242bbf languageName: node linkType: hard @@ -3556,6 +3525,15 @@ __metadata: languageName: node linkType: hard +"@types/yauzl@npm:^2.9.1": + version: 2.10.0 + resolution: "@types/yauzl@npm:2.10.0" + dependencies: + "@types/node": "*" + checksum: 55d27ae5d346ea260e40121675c24e112ef0247649073848e5d4e03182713ae4ec8142b98f61a1c6cbe7d3b72fa99bbadb65d8b01873e5e605cdc30f1ff70ef2 + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:^6.2.1": version: 6.2.1 resolution: "@typescript-eslint/eslint-plugin@npm:6.2.1" @@ -3679,143 +3657,383 @@ __metadata: languageName: node linkType: hard -"@wagmi/chains@npm:1.2.0": - version: 1.2.0 - resolution: "@wagmi/chains@npm:1.2.0" +"@wagmi/chains@npm:1.6.0": + version: 1.6.0 + resolution: "@wagmi/chains@npm:1.6.0" peerDependencies: typescript: ">=5.0.4" peerDependenciesMeta: typescript: optional: true - checksum: adac1caf245820bb50292bf2509be195e8efb3b349dc2ac0e0ed7370993b5fed93db57deaf4d27192b20e8418e9f10cdc7a59bd0a6ce1ac0447e61af76efe423 + checksum: 6c3d477936622f763b9e44c4a66c080020f1119165c8f6b840c51f5822880fedd5031036461d4b28df5cf1ae19cb12e139e4a4b3c129b475f0363fd9c4c8bb0d languageName: node linkType: hard -"abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 +"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/ast@npm:1.11.6" + dependencies: + "@webassemblyjs/helper-numbers": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + checksum: 38ef1b526ca47c210f30975b06df2faf1a8170b1636ce239fc5738fc231ce28389dd61ecedd1bacfc03cbe95b16d1af848c805652080cb60982836eb4ed2c6cf languageName: node linkType: hard -"abitype@npm:0.8.11, abitype@npm:^0.8.11": - version: 0.8.11 - resolution: "abitype@npm:0.8.11" - peerDependencies: - typescript: ">=5.0.4" - zod: ^3 >=3.19.1 - peerDependenciesMeta: - zod: - optional: true - checksum: 94e6ad5d3d3851f68ea54d090312d35e38aa15d19b65d25f02d8c54400b184a87b121adb23e930f2e92d597e9290e8ca4f2ff70751e6dada4e8f1440948e0c44 +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 languageName: node linkType: hard -"abortable-iterator@npm:^5.0.0, abortable-iterator@npm:^5.0.1": - version: 5.0.1 - resolution: "abortable-iterator@npm:5.0.1" - dependencies: - get-iterator: ^2.0.0 - it-stream-types: ^2.0.1 - checksum: 9f50b2d2416d1c4312288d8a981f9cae8caeaaac6f4b0aa13be361c13f8e7e375b0ff2099d515ea46ade7cf2a91b9573f1f224434ff63966f76eb09be3202ed9 +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f languageName: node linkType: hard -"abstract-leveldown@npm:^7.2.0": - version: 7.2.0 - resolution: "abstract-leveldown@npm:7.2.0" +"@webassemblyjs/helper-buffer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" + checksum: b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" dependencies: - buffer: ^6.0.3 - catering: ^2.0.0 - is-buffer: ^2.0.5 - level-concat-iterator: ^3.0.0 - level-supports: ^2.0.1 - queue-microtask: ^1.2.3 - checksum: d558111f2d123da95ac80b8ba3b9b0a5bc8cd87296e64b05dca693f5f4839aa0e2fc97bad56a101766f499824e2962611750f8a76bbac4a5db35801968fbbe02 + "@webassemblyjs/floating-point-hex-parser": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 + "@xtuc/long": 4.2.2 + checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 languageName: node linkType: hard -"accepts@npm:^1.3.5": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" dependencies: - mime-types: ~2.1.34 - negotiator: 0.6.3 - checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + checksum: b2cf751bf4552b5b9999d27bbb7692d0aca75260140195cb58ea6374d7b9c2dc69b61e10b211a0e773f66209c3ddd612137ed66097e3684d7816f854997682e9 languageName: node linkType: hard -"acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": ^1.2.0 + checksum: 13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de languageName: node linkType: hard -"acorn-walk@npm:^8.1.1": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" + dependencies: + "@xtuc/long": 4.2.2 + checksum: 7ea942dc9777d4b18a5ebfa3a937b30ae9e1d2ce1fee637583ed7f376334dd1d4274f813d2e250056cca803e0952def4b954913f1a3c9068bcd4ab4ee5143bf0 languageName: node linkType: hard -"acorn@npm:^8.4.1, acorn@npm:^8.9.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" - bin: - acorn: bin/acorn - checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 807fe5b5ce10c390cfdd93e0fb92abda8aebabb5199980681e7c3743ee3306a75729bcd1e56a3903980e96c885ee53ef901fcbaac8efdfa480f9c0dae1d08713 languageName: node linkType: hard -"acvm_js@github:noir-lang/acvm-simulator-wasm#b9d9ca9dfc5140839f23998d9466307215607c42": - version: 0.0.0-d576736 - resolution: "acvm_js@https://github.com/noir-lang/acvm-simulator-wasm.git#commit=b9d9ca9dfc5140839f23998d9466307215607c42" - checksum: ea88c231451e7aeab2ecf4219c062d1193860c5bd782ea1b0d8f778990798a27ab983ae5036e2cb99248cb75d22d961d1dd4b9c1c8c0ce0215e955f00e07944f +"@webassemblyjs/wasm-edit@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/helper-wasm-section": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + "@webassemblyjs/wasm-opt": 1.11.6 + "@webassemblyjs/wasm-parser": 1.11.6 + "@webassemblyjs/wast-printer": 1.11.6 + checksum: 29ce75870496d6fad864d815ebb072395a8a3a04dc9c3f4e1ffdc63fc5fa58b1f34304a1117296d8240054cfdbc38aca88e71fb51483cf29ffab0a61ef27b481 languageName: node linkType: hard -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" +"@webassemblyjs/wasm-gen@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: a645a2eecbea24833c3260a249704a7f554ef4a94c6000984728e94bb2bc9140a68dfd6fd21d5e0bbb09f6dfc98e083a45760a83ae0417b41a0196ff6d45a23a languageName: node linkType: hard -"agentkeepalive@npm:^4.2.1": - version: 4.3.0 - resolution: "agentkeepalive@npm:4.3.0" +"@webassemblyjs/wasm-opt@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" dependencies: - debug: ^4.1.0 - depd: ^2.0.0 - humanize-ms: ^1.2.1 - checksum: 982453aa44c11a06826c836025e5162c846e1200adb56f2d075400da7d32d87021b3b0a58768d949d824811f5654223d5a8a3dad120921a2439625eb847c6260 + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-buffer": 1.11.6 + "@webassemblyjs/wasm-gen": 1.11.6 + "@webassemblyjs/wasm-parser": 1.11.6 + checksum: b4557f195487f8e97336ddf79f7bef40d788239169aac707f6eaa2fa5fe243557c2d74e550a8e57f2788e70c7ae4e7d32f7be16101afe183d597b747a3bdd528 languageName: node linkType: hard -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" +"@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + "@webassemblyjs/ast": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/ieee754": 1.11.6 + "@webassemblyjs/leb128": 1.11.6 + "@webassemblyjs/utf8": 1.11.6 + checksum: 8200a8d77c15621724a23fdabe58d5571415cda98a7058f542e670ea965dd75499f5e34a48675184947c66f3df23adf55df060312e6d72d57908e3f049620d8a languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.4, ajv@npm:~6.12.6": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" +"@webassemblyjs/wast-printer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wast-printer@npm:1.11.6" 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 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 + "@webassemblyjs/ast": 1.11.6 + "@xtuc/long": 4.2.2 + checksum: d2fa6a4c427325ec81463e9c809aa6572af6d47f619f3091bf4c4a6fc34f1da3df7caddaac50b8e7a457f8784c62cd58c6311b6cb69b0162ccd8d4c072f79cf8 + languageName: node + linkType: hard + +"@webpack-cli/configtest@npm:^2.1.1": + version: 2.1.1 + resolution: "@webpack-cli/configtest@npm:2.1.1" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 9f9f9145c2d05471fc83d426db1df85cf49f329836b0c4b9f46b6948bed4b013464c00622b136d2a0a26993ce2306976682592245b08ee717500b1db45009a72 + languageName: node + linkType: hard + +"@webpack-cli/info@npm:^2.0.2": + version: 2.0.2 + resolution: "@webpack-cli/info@npm:2.0.2" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 8f9a178afca5c82e113aed1efa552d64ee5ae4fdff63fe747c096a981ec74f18a5d07bd6e89bbe6715c3e57d96eea024a410e58977169489fe1df044c10dd94e + languageName: node + linkType: hard + +"@webpack-cli/serve@npm:^2.0.5": + version: 2.0.5 + resolution: "@webpack-cli/serve@npm:2.0.5" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + peerDependenciesMeta: + webpack-dev-server: + optional: true + checksum: 75f0e54681796d567a71ac3e2781d2901a8d8cf1cdfc82f261034dddac59a8343e8c3bc5e32b4bb9d6766759ba49fb29a5cd86ef1701d79c506fe886bb63ac75 + languageName: node + linkType: hard + +"@xtuc/ieee754@npm:^1.2.0": + version: 1.2.0 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec + languageName: node + linkType: hard + +"abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + languageName: node + linkType: hard + +"abitype@npm:0.9.3": + version: 0.9.3 + resolution: "abitype@npm:0.9.3" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.19.1 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + checksum: f97c5a118180563b9ed8b97da492a82d3ce53dcd7d96c87764e90dbe84c04ae72dd5703d1ed5a54601033ab1772b8a235a1b5aadaf7aad6c4b5fdad7fd3a69a7 + languageName: node + linkType: hard + +"abitype@npm:^0.8.11": + version: 0.8.11 + resolution: "abitype@npm:0.8.11" + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.19.1 + peerDependenciesMeta: + zod: + optional: true + checksum: 94e6ad5d3d3851f68ea54d090312d35e38aa15d19b65d25f02d8c54400b184a87b121adb23e930f2e92d597e9290e8ca4f2ff70751e6dada4e8f1440948e0c44 + languageName: node + linkType: hard + +"abortable-iterator@npm:^5.0.0, abortable-iterator@npm:^5.0.1": + version: 5.0.1 + resolution: "abortable-iterator@npm:5.0.1" + dependencies: + get-iterator: ^2.0.0 + it-stream-types: ^2.0.1 + checksum: 9f50b2d2416d1c4312288d8a981f9cae8caeaaac6f4b0aa13be361c13f8e7e375b0ff2099d515ea46ade7cf2a91b9573f1f224434ff63966f76eb09be3202ed9 + languageName: node + linkType: hard + +"abstract-leveldown@npm:^7.2.0": + version: 7.2.0 + resolution: "abstract-leveldown@npm:7.2.0" + dependencies: + buffer: ^6.0.3 + catering: ^2.0.0 + is-buffer: ^2.0.5 + level-concat-iterator: ^3.0.0 + level-supports: ^2.0.1 + queue-microtask: ^1.2.3 + checksum: d558111f2d123da95ac80b8ba3b9b0a5bc8cd87296e64b05dca693f5f4839aa0e2fc97bad56a101766f499824e2962611750f8a76bbac4a5db35801968fbbe02 + languageName: node + linkType: hard + +"accepts@npm:^1.3.5": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: ~2.1.34 + negotiator: 0.6.3 + checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + languageName: node + linkType: hard + +"acorn-import-assertions@npm:^1.9.0": + version: 1.9.0 + resolution: "acorn-import-assertions@npm:1.9.0" + peerDependencies: + acorn: ^8 + checksum: 944fb2659d0845c467066bdcda2e20c05abe3aaf11972116df457ce2627628a81764d800dd55031ba19de513ee0d43bb771bc679cc0eda66dc8b4fade143bc0c + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.1.1": + version: 8.2.0 + resolution: "acorn-walk@npm:8.2.0" + checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 + languageName: node + linkType: hard + +"acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.10.0 + resolution: "acorn@npm:8.10.0" + bin: + acorn: bin/acorn + checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d + languageName: node + linkType: hard + +"acvm_js@github:noir-lang/acvm-simulator-wasm#b9d9ca9dfc5140839f23998d9466307215607c42": + version: 0.0.0-d576736 + resolution: "acvm_js@https://github.com/noir-lang/acvm-simulator-wasm.git#commit=b9d9ca9dfc5140839f23998d9466307215607c42" + checksum: ea88c231451e7aeab2ecf4219c062d1193860c5bd782ea1b0d8f778990798a27ab983ae5036e2cb99248cb75d22d961d1dd4b9c1c8c0ce0215e955f00e07944f + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: 4 + checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + languageName: node + linkType: hard + +"agent-base@npm:^7.0.1, agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" + dependencies: + debug: ^4.3.4 + checksum: f7828f991470a0cc22cb579c86a18cbae83d8a3cbed39992ab34fc7217c4d126017f1c74d0ab66be87f71455318a8ea3e757d6a37881b8d0f2a2c6aa55e5418f + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": + version: 4.3.0 + resolution: "agentkeepalive@npm:4.3.0" + dependencies: + debug: ^4.1.0 + depd: ^2.0.0 + humanize-ms: ^1.2.1 + checksum: 982453aa44c11a06826c836025e5162c846e1200adb56f2d075400da7d32d87021b3b0a58768d949d824811f5654223d5a8a3dad120921a2439625eb847c6260 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: ^2.0.0 + indent-string: ^4.0.0 + checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 + languageName: node + linkType: hard + +"ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:~6.12.6": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + 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 + checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 languageName: node linkType: hard @@ -3843,9 +4061,9 @@ __metadata: linkType: hard "ansi-sequence-parser@npm:^1.1.0": - version: 1.1.0 - resolution: "ansi-sequence-parser@npm:1.1.0" - checksum: 75f4d3a4c555655a698aec05b5763cbddcd16ccccdbfd178fb0aa471ab74fdf98e031b875ef26e64be6a95cf970c89238744b26de6e34af97f316d5186b1df53 + version: 1.1.1 + resolution: "ansi-sequence-parser@npm:1.1.1" + checksum: ead5b15c596e8e85ca02951a844366c6776769dcc9fd1bd3a0db11bb21364554822c6a439877fb599e7e1ffa0b5f039f1e5501423950457f3dcb2f480c30b188 languageName: node linkType: hard @@ -3968,6 +4186,19 @@ __metadata: languageName: node linkType: hard +"array.prototype.findlastindex@npm:^1.2.2": + version: 1.2.2 + resolution: "array.prototype.findlastindex@npm:1.2.2" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + es-shim-unscopables: ^1.0.0 + get-intrinsic: ^1.1.3 + checksum: 8a166359f69a2a751c843f26b9c8cd03d0dc396a92cdcb85f4126b5f1cecdae5b2c0c616a71ea8aff026bde68165b44950b3664404bb73db0673e288495ba264 + languageName: node + linkType: hard + "array.prototype.flat@npm:^1.3.1": version: 1.3.1 resolution: "array.prototype.flat@npm:1.3.1" @@ -4020,6 +4251,27 @@ __metadata: languageName: node linkType: hard +"asn1.js@npm:^5.2.0": + version: 5.4.1 + resolution: "asn1.js@npm:5.4.1" + dependencies: + bn.js: ^4.0.0 + inherits: ^2.0.1 + minimalistic-assert: ^1.0.0 + safer-buffer: ^2.1.0 + checksum: 3786a101ac6f304bd4e9a7df79549a7561950a13d4bcaec0c7790d44c80d147c1a94ba3d4e663673406064642a40b23fcd6c82a9952468e386c1a1376d747f9a + languageName: node + linkType: hard + +"ast-types@npm:^0.13.4": + version: 0.13.4 + resolution: "ast-types@npm:0.13.4" + dependencies: + tslib: ^2.0.1 + checksum: 5a51f7b70588ecced3601845a0e203279ca2f5fdc184416a0a1640c93ec0a267241d6090a328e78eebb8de81f8754754e0a4f1558ba2a3d638f8ccbd0b1f0eff + languageName: node + linkType: hard + "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -4034,11 +4286,18 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.6.1": - version: 29.6.1 - resolution: "babel-jest@npm:29.6.1" +"b4a@npm:^1.6.4": + version: 1.6.4 + resolution: "b4a@npm:1.6.4" + checksum: 81b086f9af1f8845fbef4476307236bda3d660c158c201db976f19cdce05f41f93110ab6b12fd7a2696602a490cc43d5410ee36a56d6eef93afb0d6ca69ac3b2 + languageName: node + linkType: hard + +"babel-jest@npm:^29.6.2": + version: 29.6.2 + resolution: "babel-jest@npm:29.6.2" dependencies: - "@jest/transform": ^29.6.1 + "@jest/transform": ^29.6.2 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 babel-preset-jest: ^29.5.0 @@ -4047,7 +4306,7 @@ __metadata: slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: bc46cfba468edde91f34a8292501d4448a39fab72d80d7d95f4349feb114fa21becb01def007d6166de7933ab9633bf5b5e1b72ba6ffeaa991f7abf014a2f61d + checksum: 3936b5d6ed6f08670c830ed919e38a4a593d0643b8e30fdeb16f4588b262ea5255fb96fd1849c02fba0b082ecfa4e788ce9a128ad1b9e654d46aac09c3a55504 languageName: node linkType: hard @@ -4124,6 +4383,13 @@ __metadata: languageName: node linkType: hard +"basic-ftp@npm:^5.0.2": + version: 5.0.3 + resolution: "basic-ftp@npm:5.0.3" + checksum: 8b04e88eb85a64de9311721bb0707c9cd70453eefdd854cab85438e6f46fb6c597ddad57ed1acf0a9ede3c677b14e657f51051688a5f23d6f3ea7b5d9073b850 + languageName: node + linkType: hard + "benchmark@npm:^2.1.4": version: 2.1.4 resolution: "benchmark@npm:2.1.4" @@ -4141,6 +4407,20 @@ __metadata: languageName: node linkType: hard +"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": + version: 4.12.0 + resolution: "bn.js@npm:4.12.0" + checksum: 39afb4f15f4ea537b55eaf1446c896af28ac948fdcf47171961475724d1bb65118cca49fa6e3d67706e4790955ec0e74de584e45c8f1ef89f46c812bee5b5a12 + languageName: node + linkType: hard + +"bn.js@npm:^5.0.0, bn.js@npm:^5.1.1": + version: 5.2.1 + resolution: "bn.js@npm:5.2.1" + checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd3 + languageName: node + linkType: hard + "bplist-parser@npm:^0.2.0": version: 0.2.0 resolution: "bplist-parser@npm:0.2.0" @@ -4178,7 +4458,14 @@ __metadata: languageName: node linkType: hard -"browserify-aes@npm:^1.0.4": +"brorand@npm:^1.0.1, brorand@npm:^1.1.0": + version: 1.1.0 + resolution: "brorand@npm:1.1.0" + checksum: 8a05c9f3c4b46572dec6ef71012b1946db6cae8c7bb60ccd4b7dd5a84655db49fe043ecc6272e7ef1f69dc53d6730b9e2a3a03a8310509a3d797a618cbee52be + languageName: node + linkType: hard + +"browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": version: 1.2.0 resolution: "browserify-aes@npm:1.2.0" dependencies: @@ -4192,7 +4479,7 @@ __metadata: languageName: node linkType: hard -"browserify-cipher@npm:^1.0.1": +"browserify-cipher@npm:^1.0.0, browserify-cipher@npm:^1.0.1": version: 1.0.1 resolution: "browserify-cipher@npm:1.0.1" dependencies: @@ -4215,17 +4502,44 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.21.9": - version: 4.21.9 - resolution: "browserslist@npm:4.21.9" +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.0.1": + version: 4.1.0 + resolution: "browserify-rsa@npm:4.1.0" + dependencies: + bn.js: ^5.0.0 + randombytes: ^2.0.1 + checksum: 155f0c135873efc85620571a33d884aa8810e40176125ad424ec9d85016ff105a07f6231650914a760cca66f29af0494087947b7be34880dd4599a0cd3c38e54 + languageName: node + linkType: hard + +"browserify-sign@npm:^4.0.0": + version: 4.2.1 + resolution: "browserify-sign@npm:4.2.1" + dependencies: + bn.js: ^5.1.1 + browserify-rsa: ^4.0.1 + create-hash: ^1.2.0 + create-hmac: ^1.1.7 + elliptic: ^6.5.3 + inherits: ^2.0.4 + parse-asn1: ^5.1.5 + readable-stream: ^3.6.0 + safe-buffer: ^5.2.0 + checksum: 0221f190e3f5b2d40183fa51621be7e838d9caa329fe1ba773406b7637855f37b30f5d83e52ff8f244ed12ffe6278dd9983638609ed88c841ce547e603855707 + languageName: node + linkType: hard + +"browserslist@npm:^4.14.5, browserslist@npm:^4.21.9": + version: 4.21.10 + resolution: "browserslist@npm:4.21.10" dependencies: - caniuse-lite: ^1.0.30001503 - electron-to-chromium: ^1.4.431 - node-releases: ^2.0.12 + caniuse-lite: ^1.0.30001517 + electron-to-chromium: ^1.4.477 + node-releases: ^2.0.13 update-browserslist-db: ^1.0.11 bin: browserslist: cli.js - checksum: 80d3820584e211484ad1b1a5cfdeca1dd00442f47be87e117e1dda34b628c87e18b81ae7986fa5977b3e6a03154f6d13cd763baa6b8bf5dd9dd19f4926603698 + checksum: 1e27c0f111a35d1dd0e8fc2c61781b0daefabc2c9471b0b10537ce54843014bceb2a1ce4571af1a82b2bf1e6e6e05d38865916689a158f03bc2c7a4ec2577db8 languageName: node linkType: hard @@ -4247,6 +4561,13 @@ __metadata: languageName: node linkType: hard +"buffer-crc32@npm:~0.2.3": + version: 0.2.13 + resolution: "buffer-crc32@npm:0.2.13" + checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -4271,6 +4592,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^5.2.1": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.1.13 + checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 + languageName: node + linkType: hard + "bundle-name@npm:^3.0.0": version: 3.0.0 resolution: "bundle-name@npm:3.0.0" @@ -4377,10 +4708,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001503": - version: 1.0.30001515 - resolution: "caniuse-lite@npm:1.0.30001515" - checksum: ec5d51785aea6af5cf62ca9d35821d36ab7fa0f85e3e7f752d532025ad59e07131fa3cb3a0a6c486b5ac8620c8c3440e761dc5b38c990d49c17655906f216123 +"caniuse-lite@npm:^1.0.30001517": + version: 1.0.30001518 + resolution: "caniuse-lite@npm:1.0.30001518" + checksum: 1b63272f6e3d628ac52e2547e0b75fc477004d4b19b63e34b2c045de7f2e48909f9ea513978fc5a46c4ab5ac6c9daf9cc5e6a78466e90684fb824c3f2105e8f5 languageName: node linkType: hard @@ -4426,6 +4757,24 @@ __metadata: languageName: node linkType: hard +"chrome-trace-event@npm:^1.0.2": + version: 1.0.3 + resolution: "chrome-trace-event@npm:1.0.3" + checksum: cb8b1fc7e881aaef973bd0c4a43cd353c2ad8323fb471a041e64f7c2dd849cde4aad15f8b753331a32dda45c973f032c8a03b8177fc85d60eaa75e91e08bfb97 + languageName: node + linkType: hard + +"chromium-bidi@npm:0.4.16": + version: 0.4.16 + resolution: "chromium-bidi@npm:0.4.16" + dependencies: + mitt: 3.0.0 + peerDependencies: + devtools-protocol: "*" + checksum: 9cbb362fdf589dbdfd1618499c5bbdac45a3aa1291c1d2faa2f1ea3768738677985175d1bb1511dfe3e188bc78e6ea2acb453564ece7e09f535bbcd2253ce06a + languageName: node + linkType: hard + "ci-info@npm:^3.2.0": version: 3.8.0 resolution: "ci-info@npm:3.8.0" @@ -4433,7 +4782,7 @@ __metadata: languageName: node linkType: hard -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1": +"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": version: 1.0.4 resolution: "cipher-base@npm:1.0.4" dependencies: @@ -4468,6 +4817,17 @@ __metadata: languageName: node linkType: hard +"clone-deep@npm:^4.0.1": + version: 4.0.1 + resolution: "clone-deep@npm:4.0.1" + dependencies: + is-plain-object: ^2.0.4 + kind-of: ^6.0.2 + shallow-clone: ^3.0.0 + checksum: 770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 + languageName: node + linkType: hard + "co-body@npm:^6.0.0": version: 6.1.0 resolution: "co-body@npm:6.1.0" @@ -4535,6 +4895,13 @@ __metadata: languageName: node linkType: hard +"colorette@npm:^2.0.14": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d + languageName: node + linkType: hard + "combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" @@ -4551,6 +4918,20 @@ __metadata: languageName: node linkType: hard +"commander@npm:^10.0.1": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 + languageName: node + linkType: hard + +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e + languageName: node + linkType: hard + "commander@npm:^9.0.0": version: 9.5.0 resolution: "commander@npm:9.5.0" @@ -4716,9 +5097,9 @@ __metadata: linkType: hard "core-js@npm:^3.6.5": - version: 3.31.1 - resolution: "core-js@npm:3.31.1" - checksum: 14519213a63c55cf188bdd2f4dece54583feaf6b90e75d6c65e07f509cd487055bf64898aeda7c97c36029ac1ea2f2ed8e4b02281553f6a257e7143a32a14015 + version: 3.32.0 + resolution: "core-js@npm:3.32.0" + checksum: 52921395028550e4c9d21d47b9836439bb5b6b9eefc34d45a3948a68d81fdd093acc0fadf69f9cf632b82f01f95f22f484408a93dd9e940b19119ac204cd2925 languageName: node linkType: hard @@ -4729,7 +5110,29 @@ __metadata: languageName: node linkType: hard -"create-hash@npm:^1.1.0": +"cosmiconfig@npm:8.2.0": + version: 8.2.0 + resolution: "cosmiconfig@npm:8.2.0" + dependencies: + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + parse-json: ^5.0.0 + path-type: ^4.0.0 + checksum: 836d5d8efa750f3fb17b03d6ca74cd3154ed025dffd045304b3ef59637f662bde1e5dc88f8830080d180ec60841719cf4ea2ce73fb21ec694b16865c478ff297 + languageName: node + linkType: hard + +"create-ecdh@npm:^4.0.0": + version: 4.0.4 + resolution: "create-ecdh@npm:4.0.4" + dependencies: + bn.js: ^4.1.0 + elliptic: ^6.5.3 + checksum: 0dd7fca9711d09e152375b79acf1e3f306d1a25ba87b8ff14c2fd8e68b83aafe0a7dd6c4e540c9ffbdd227a5fa1ad9b81eca1f233c38bb47770597ba247e614b + languageName: node + linkType: hard + +"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": version: 1.2.0 resolution: "create-hash@npm:1.2.0" dependencies: @@ -4742,6 +5145,20 @@ __metadata: languageName: node linkType: hard +"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": + version: 1.1.7 + resolution: "create-hmac@npm:1.1.7" + dependencies: + cipher-base: ^1.0.3 + create-hash: ^1.1.0 + inherits: ^2.0.1 + ripemd160: ^2.0.0 + safe-buffer: ^5.0.1 + sha.js: ^2.4.8 + checksum: ba12bb2257b585a0396108c72830e85f882ab659c3320c83584b1037f8ab72415095167ced80dc4ce8e446a8ecc4b2acf36d87befe0707d73b26cf9dc77440ed + languageName: node + linkType: hard + "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" @@ -4749,6 +5166,15 @@ __metadata: languageName: node linkType: hard +"cross-fetch@npm:4.0.0": + version: 4.0.0 + resolution: "cross-fetch@npm:4.0.0" + dependencies: + node-fetch: ^2.6.12 + checksum: ecca4f37ffa0e8283e7a8a590926b66713a7ef7892757aa36c2d20ffa27b0ac5c60dcf453119c809abe5923fc0bae3702a4d896bfb406ef1077b0d0018213e24 + languageName: node + linkType: hard + "cross-fetch@npm:^3.1.5": version: 3.1.8 resolution: "cross-fetch@npm:3.1.8" @@ -4769,6 +5195,32 @@ __metadata: languageName: node linkType: hard +"crypto-browserify@npm:^3.12.0": + version: 3.12.0 + resolution: "crypto-browserify@npm:3.12.0" + dependencies: + browserify-cipher: ^1.0.0 + browserify-sign: ^4.0.0 + create-ecdh: ^4.0.0 + create-hash: ^1.1.0 + create-hmac: ^1.1.0 + diffie-hellman: ^5.0.0 + inherits: ^2.0.1 + pbkdf2: ^3.0.3 + public-encrypt: ^4.0.0 + randombytes: ^2.0.0 + randomfill: ^1.0.3 + checksum: c1609af82605474262f3eaa07daa0b2140026bd264ab316d4bf1170272570dbe02f0c49e29407fe0d3634f96c507c27a19a6765fb856fed854a625f9d15618e2 + languageName: node + linkType: hard + +"data-uri-to-buffer@npm:^5.0.1": + version: 5.0.1 + resolution: "data-uri-to-buffer@npm:5.0.1" + checksum: 10958f89c0047b84bd86d572b6b77c9bf238ebe7b55a9a9ab04c90fbf5ab1881783b72e31dc0febdffd30ec914930244f2f728e3629bb8911d922baba129426f + languageName: node + linkType: hard + "datastore-core@npm:^9.0.0, datastore-core@npm:^9.0.1": version: 9.2.0 resolution: "datastore-core@npm:9.2.0" @@ -4799,7 +5251,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -4811,7 +5263,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.7": +"debug@npm:^3.1.0, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -4837,10 +5289,15 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a languageName: node linkType: hard @@ -4923,6 +5380,17 @@ __metadata: languageName: node linkType: hard +"degenerator@npm:^5.0.0": + version: 5.0.1 + resolution: "degenerator@npm:5.0.1" + dependencies: + ast-types: ^0.13.4 + escodegen: ^2.1.0 + esprima: ^4.0.1 + checksum: a64fa39cdf6c2edd75188157d32338ee9de7193d7dbb2aeb4acb1eb30fa4a15ed80ba8dae9bd4d7b085472cf174a5baf81adb761aaa8e326771392c922084152 + languageName: node + linkType: hard + "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -4982,6 +5450,13 @@ __metadata: languageName: node linkType: hard +"devtools-protocol@npm:0.0.1147663": + version: 0.0.1147663 + resolution: "devtools-protocol@npm:0.0.1147663" + checksum: 0631f2b6c6cd7f56e7d62a85bfc291f7e167f0f2de90969ef61fb24e2bd546b2e9530043d2bc3fe6c4d7a9e00473004272d2c2832a10a05e4b75c03a22f549fc + languageName: node + linkType: hard + "dezalgo@npm:^1.0.4": version: 1.0.4 resolution: "dezalgo@npm:1.0.4" @@ -5006,6 +5481,17 @@ __metadata: languageName: node linkType: hard +"diffie-hellman@npm:^5.0.0": + version: 5.0.3 + resolution: "diffie-hellman@npm:5.0.3" + dependencies: + bn.js: ^4.1.0 + miller-rabin: ^4.0.0 + randombytes: ^2.0.0 + checksum: 0e620f322170c41076e70181dd1c24e23b08b47dbb92a22a644f3b89b6d3834b0f8ee19e37916164e5eb1ee26d2aa836d6129f92723995267250a0b541811065 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -5084,10 +5570,25 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.431": - version: 1.4.457 - resolution: "electron-to-chromium@npm:1.4.457" - checksum: 5840a25776e77f3769cfdb2e5250e5f5a27d350c373efd323e38ff4763a0375e512447da4477dd887d56df7b12e360d91484af592ac3e61c969ee52d9aaf7249 +"electron-to-chromium@npm:^1.4.477": + version: 1.4.480 + resolution: "electron-to-chromium@npm:1.4.480" + checksum: 074b9d81dffa6ca182f604326c62a12d22139ae141d6ffabdb3b267f42fac88ba3e69d3614f9e939f65a0f03a343f0c81f702e24064bc54c4f138e02378b1e54 + languageName: node + linkType: hard + +"elliptic@npm:^6.5.3": + version: 6.5.4 + resolution: "elliptic@npm:6.5.4" + 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 + checksum: d56d21fd04e97869f7ffcc92e18903b9f67f2d4637a23c860492fbbff5a3155fd9ca0184ce0c865dd6eb2487d234ce9551335c021c376cd2d3b7cb749c7d10f4 languageName: node linkType: hard @@ -5128,7 +5629,16 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.12.0": +"end-of-stream@npm:^1.1.0": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: ^1.4.0 + checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.12.0, enhanced-resolve@npm:^5.15.0": version: 5.15.0 resolution: "enhanced-resolve@npm:5.15.0" dependencies: @@ -5145,6 +5655,15 @@ __metadata: languageName: node linkType: hard +"envinfo@npm:^7.7.3": + version: 7.10.0 + resolution: "envinfo@npm:7.10.0" + bin: + envinfo: dist/cli.js + checksum: 05e81a5768c42cbd5c580dc3f274db3401facadd53e9bd52e2aa49dfbb5d8b26f6181c25a6652d79618a6994185bd2b1c137673101690b147f758e4e71d42f7d + languageName: node + linkType: hard + "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" @@ -5168,7 +5687,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": +"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4, es-abstract@npm:^1.21.2": version: 1.22.1 resolution: "es-abstract@npm:1.22.1" dependencies: @@ -5215,6 +5734,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.2.1": + version: 1.3.0 + resolution: "es-module-lexer@npm:1.3.0" + checksum: 48fd9f504a9d2a894126f75c8b7ccc6273a289983e9b67255f165bfd9ae765d50100218251e94e702ca567826905ea2f7b3b4a0c4d74d3ce99cce3a2a606a238 + languageName: node + linkType: hard + "es-set-tostringtag@npm:^2.0.1": version: 2.0.1 resolution: "es-set-tostringtag@npm:2.0.1" @@ -5247,31 +5773,31 @@ __metadata: linkType: hard "esbuild@npm:^0.18.10": - version: 0.18.11 - resolution: "esbuild@npm:0.18.11" - dependencies: - "@esbuild/android-arm": 0.18.11 - "@esbuild/android-arm64": 0.18.11 - "@esbuild/android-x64": 0.18.11 - "@esbuild/darwin-arm64": 0.18.11 - "@esbuild/darwin-x64": 0.18.11 - "@esbuild/freebsd-arm64": 0.18.11 - "@esbuild/freebsd-x64": 0.18.11 - "@esbuild/linux-arm": 0.18.11 - "@esbuild/linux-arm64": 0.18.11 - "@esbuild/linux-ia32": 0.18.11 - "@esbuild/linux-loong64": 0.18.11 - "@esbuild/linux-mips64el": 0.18.11 - "@esbuild/linux-ppc64": 0.18.11 - "@esbuild/linux-riscv64": 0.18.11 - "@esbuild/linux-s390x": 0.18.11 - "@esbuild/linux-x64": 0.18.11 - "@esbuild/netbsd-x64": 0.18.11 - "@esbuild/openbsd-x64": 0.18.11 - "@esbuild/sunos-x64": 0.18.11 - "@esbuild/win32-arm64": 0.18.11 - "@esbuild/win32-ia32": 0.18.11 - "@esbuild/win32-x64": 0.18.11 + version: 0.18.17 + resolution: "esbuild@npm:0.18.17" + dependencies: + "@esbuild/android-arm": 0.18.17 + "@esbuild/android-arm64": 0.18.17 + "@esbuild/android-x64": 0.18.17 + "@esbuild/darwin-arm64": 0.18.17 + "@esbuild/darwin-x64": 0.18.17 + "@esbuild/freebsd-arm64": 0.18.17 + "@esbuild/freebsd-x64": 0.18.17 + "@esbuild/linux-arm": 0.18.17 + "@esbuild/linux-arm64": 0.18.17 + "@esbuild/linux-ia32": 0.18.17 + "@esbuild/linux-loong64": 0.18.17 + "@esbuild/linux-mips64el": 0.18.17 + "@esbuild/linux-ppc64": 0.18.17 + "@esbuild/linux-riscv64": 0.18.17 + "@esbuild/linux-s390x": 0.18.17 + "@esbuild/linux-x64": 0.18.17 + "@esbuild/netbsd-x64": 0.18.17 + "@esbuild/openbsd-x64": 0.18.17 + "@esbuild/sunos-x64": 0.18.17 + "@esbuild/win32-arm64": 0.18.17 + "@esbuild/win32-ia32": 0.18.17 + "@esbuild/win32-x64": 0.18.17 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -5319,7 +5845,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: fbd981388fe391c4f0a1b71120ca86ee75cc6de88c01bd6883f26d8450cb3beeaae602459f9a8b9dc9e026ad68b67cda2cad5f5327c9960a53fa0cb358c61d97 + checksum: c6e1ffa776978a45697763a07ec9b16411db3d3b3997b2c4a0165a211727fce8b63b87165a28d8ef60d3a28b98197bbbc2833e51b89888a4437e0a483dffc8ff languageName: node linkType: hard @@ -5358,14 +5884,32 @@ __metadata: languageName: node linkType: hard +"escodegen@npm:^2.1.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" + dependencies: + esprima: ^4.0.1 + estraverse: ^5.2.0 + esutils: ^2.0.2 + source-map: ~0.6.1 + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 096696407e161305cd05aebb95134ad176708bc5cb13d0dcc89a5fcbb959b8ed757e7f2591a5f8036f8f4952d4a724de0df14cd419e29212729fa6df5ce16bf6 + languageName: node + linkType: hard + "eslint-config-prettier@npm:^8.5.0": - version: 8.8.0 - resolution: "eslint-config-prettier@npm:8.8.0" + version: 8.9.0 + resolution: "eslint-config-prettier@npm:8.9.0" peerDependencies: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 1e94c3882c4d5e41e1dcfa2c368dbccbfe3134f6ac7d40101644d3bfbe3eb2f2ffac757f3145910b5eacf20c0e85e02b91293d3126d770cbf3dc390b3564681c + checksum: a675d0dabd76b700ef2d062b5ec6a634e105a8e8c070f95281fd2ccb614527fac60b4c758132058c50f0521fd19313f1f5be45ce9ebf081f2e5f77ae6eb7d8db languageName: node linkType: hard @@ -5399,7 +5943,7 @@ __metadata: languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.4": +"eslint-module-utils@npm:^2.7.4, eslint-module-utils@npm:^2.8.0": version: 2.8.0 resolution: "eslint-module-utils@npm:2.8.0" dependencies: @@ -5412,27 +5956,30 @@ __metadata: linkType: hard "eslint-plugin-import@npm:^2.27.5": - version: 2.27.5 - resolution: "eslint-plugin-import@npm:2.27.5" + version: 2.28.0 + resolution: "eslint-plugin-import@npm:2.28.0" dependencies: array-includes: ^3.1.6 + array.prototype.findlastindex: ^1.2.2 array.prototype.flat: ^1.3.1 array.prototype.flatmap: ^1.3.1 debug: ^3.2.7 doctrine: ^2.1.0 eslint-import-resolver-node: ^0.3.7 - eslint-module-utils: ^2.7.4 + eslint-module-utils: ^2.8.0 has: ^1.0.3 - is-core-module: ^2.11.0 + is-core-module: ^2.12.1 is-glob: ^4.0.3 minimatch: ^3.1.2 + object.fromentries: ^2.0.6 + object.groupby: ^1.0.0 object.values: ^1.1.6 - resolve: ^1.22.1 - semver: ^6.3.0 - tsconfig-paths: ^3.14.1 + resolve: ^1.22.3 + semver: ^6.3.1 + tsconfig-paths: ^3.14.2 peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: f500571a380167e25d72a4d925ef9a7aae8899eada57653e5f3051ec3d3c16d08271fcefe41a30a9a2f4fefc232f066253673ee4ea77b30dba65ae173dade85d + checksum: f9eba311b93ca1bb89311856b1f7285bd79e0181d7eb70fe115053ff77e2235fea749b30f538b78927dc65769340b5be61f4c9581d1c82bcdcccb2061f440ad1 languageName: node linkType: hard @@ -5463,43 +6010,53 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.2.0": - version: 7.2.0 - resolution: "eslint-scope@npm:7.2.0" +"eslint-scope@npm:5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^4.1.1 + checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: 64591a2d8b244ade9c690b59ef238a11d5c721a98bcee9e9f445454f442d03d3e04eda88e95a4daec558220a99fa384309d9faae3d459bd40e7a81b4063980ae + checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1": - version: 3.4.1 - resolution: "eslint-visitor-keys@npm:3.4.1" - checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.2": + version: 3.4.2 + resolution: "eslint-visitor-keys@npm:3.4.2" + checksum: 9e0e7e4aaea705c097ae37c97410e5f167d4d2193be2edcb1f0760762ede3df01545e4820ae314f42dcec687745f2c6dcaf6d83575c4a2a241eb0c8517d724f2 languageName: node linkType: hard "eslint@npm:^8.21.0, eslint@npm:^8.35.0, eslint@npm:^8.37.0": - version: 8.44.0 - resolution: "eslint@npm:8.44.0" + version: 8.46.0 + resolution: "eslint@npm:8.46.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 - "@eslint-community/regexpp": ^4.4.0 - "@eslint/eslintrc": ^2.1.0 - "@eslint/js": 8.44.0 + "@eslint-community/regexpp": ^4.6.1 + "@eslint/eslintrc": ^2.1.1 + "@eslint/js": ^8.46.0 "@humanwhocodes/config-array": ^0.11.10 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 - ajv: ^6.10.0 + ajv: ^6.12.4 chalk: ^4.0.0 cross-spawn: ^7.0.2 debug: ^4.3.2 doctrine: ^3.0.0 escape-string-regexp: ^4.0.0 - eslint-scope: ^7.2.0 - eslint-visitor-keys: ^3.4.1 - espree: ^9.6.0 + eslint-scope: ^7.2.2 + eslint-visitor-keys: ^3.4.2 + espree: ^9.6.1 esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 @@ -5509,7 +6066,6 @@ __metadata: globals: ^13.19.0 graphemer: ^1.4.0 ignore: ^5.2.0 - import-fresh: ^3.0.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 is-path-inside: ^3.0.3 @@ -5521,22 +6077,21 @@ __metadata: natural-compare: ^1.4.0 optionator: ^0.9.3 strip-ansi: ^6.0.1 - strip-json-comments: ^3.1.0 text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: d06309ce4aafb9d27d558c8e5e5aa5cba3bbec3ce8ceccbc7d4b7a35f2b67fd40189159155553270e2e6febeb69bd8a3b60d6241c8f5ddc2ef1702ccbd328501 + checksum: 7a7d36b1a3bbc12e08fbb5bc36fd482a7a5a1797e62e762499dd45601b9e45aaa53a129f31ce0b4444551a9639b8b681ad535f379893dd1e3ae37b31dccd82aa languageName: node linkType: hard -"espree@npm:^9.6.0": - version: 9.6.0 - resolution: "espree@npm:9.6.0" +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" dependencies: acorn: ^8.9.0 acorn-jsx: ^5.3.2 eslint-visitor-keys: ^3.4.1 - checksum: 1287979510efb052a6a97c73067ea5d0a40701b29adde87bbe2d3eb1667e39ca55e8129e20e2517fed3da570150e7ef470585228459a8f3e3755f45007a1c662 + checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9 languageName: node linkType: hard @@ -5568,6 +6123,13 @@ __metadata: languageName: node linkType: hard +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 + languageName: node + linkType: hard + "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" @@ -5611,7 +6173,7 @@ __metadata: languageName: node linkType: hard -"events@npm:^3.3.0": +"events@npm:^3.2.0, events@npm:^3.3.0": version: 3.3.0 resolution: "events@npm:3.3.0" checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 @@ -5647,8 +6209,8 @@ __metadata: linkType: hard "execa@npm:^7.1.1": - version: 7.1.1 - resolution: "execa@npm:7.1.1" + version: 7.2.0 + resolution: "execa@npm:7.2.0" dependencies: cross-spawn: ^7.0.3 get-stream: ^6.0.1 @@ -5659,7 +6221,7 @@ __metadata: onetime: ^6.0.0 signal-exit: ^3.0.7 strip-final-newline: ^3.0.0 - checksum: 21fa46fc69314ace4068cf820142bdde5b643a5d89831c2c9349479c1555bff137a291b8e749e7efca36535e4e0a8c772c11008ca2e84d2cbd6ca141a3c8f937 + checksum: 14fd17ba0ca8c87b277584d93b1d9fc24f2a65e5152b31d5eb159a3b814854283eaae5f51efa9525e304447e2f757c691877f7adff8fde5746aae67eb1edd1cc languageName: node linkType: hard @@ -5670,17 +6232,17 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.6.1": - version: 29.6.1 - resolution: "expect@npm:29.6.1" +"expect@npm:^29.0.0, expect@npm:^29.6.2": + version: 29.6.2 + resolution: "expect@npm:29.6.2" dependencies: - "@jest/expect-utils": ^29.6.1 + "@jest/expect-utils": ^29.6.2 "@types/node": "*" jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.1 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 - checksum: 4e712e52c90f6c54e748fd2876be33c43ada6a59088ddf6a1acb08b18b3b97b3a672124684abe32599986d2f2a438d5afad148837ee06ea386d2a4bf0348de78 + jest-matcher-utils: ^29.6.2 + jest-message-util: ^29.6.2 + jest-util: ^29.6.2 + checksum: 71f7b0c560e58bf6d27e0fded261d4bdb7ef81552a6bb4bd1ee09ce7a1f7dca67fbf83cf9b07a6645a88ef52e65085a0dcbe17f6c063b53ff7c2f0f3ea4ef69e languageName: node linkType: hard @@ -5691,6 +6253,23 @@ __metadata: languageName: node linkType: hard +"extract-zip@npm:2.0.1": + version: 2.0.1 + resolution: "extract-zip@npm:2.0.1" + dependencies: + "@types/yauzl": ^2.9.1 + debug: ^4.1.1 + get-stream: ^5.1.0 + yauzl: ^2.10.0 + dependenciesMeta: + "@types/yauzl": + optional: true + bin: + extract-zip: cli.js + checksum: 8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635 + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -5698,16 +6277,23 @@ __metadata: languageName: node linkType: hard +"fast-fifo@npm:^1.1.0, fast-fifo@npm:^1.2.0": + version: 1.3.0 + resolution: "fast-fifo@npm:1.3.0" + checksum: edc589b818eede61d0048f399daf67cbc5ef736588669482a20f37269b4808356e54ab89676fd8fa59b26c216c11e5ac57335cc70dca54fbbf692d4acde10de6 + languageName: node + linkType: hard + "fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": - version: 3.3.0 - resolution: "fast-glob@npm:3.3.0" + version: 3.3.1 + resolution: "fast-glob@npm:3.3.1" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 glob-parent: ^5.1.2 merge2: ^1.3.0 micromatch: ^4.0.4 - checksum: 20df62be28eb5426fe8e40e0d05601a63b1daceb7c3d87534afcad91bdcf1e4b1743cf2d5247d6e225b120b46df0b9053a032b2691ba34ee121e033acd81f547 + checksum: b6f3add6403e02cf3a798bfbb1183d0f6da2afd368f27456010c0bc1f9640aea308243d4cb2c0ab142f618276e65ecb8be1661d7c62a7b4e5ba774b9ce5432e5 languageName: node linkType: hard @@ -5732,6 +6318,13 @@ __metadata: languageName: node linkType: hard +"fastest-levenshtein@npm:^1.0.12": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: a78d44285c9e2ae2c25f3ef0f8a73f332c1247b7ea7fb4a191e6bb51aa6ee1ef0dfb3ed113616dcdc7023e18e35a8db41f61c8d88988e877cf510df8edafbc71 + languageName: node + linkType: hard + "fastq@npm:^1.6.0": version: 1.15.0 resolution: "fastq@npm:1.15.0" @@ -5750,6 +6343,15 @@ __metadata: languageName: node linkType: hard +"fd-slicer@npm:~1.1.0": + version: 1.1.0 + resolution: "fd-slicer@npm:1.1.0" + dependencies: + pend: ~1.2.0 + checksum: c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 + languageName: node + linkType: hard + "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -5879,6 +6481,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 + languageName: node + linkType: hard + "fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -6019,6 +6632,15 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: ^3.0.0 + checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 + languageName: node + linkType: hard + "get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" @@ -6045,6 +6667,18 @@ __metadata: languageName: node linkType: hard +"get-uri@npm:^6.0.1": + version: 6.0.1 + resolution: "get-uri@npm:6.0.1" + dependencies: + basic-ftp: ^5.0.2 + data-uri-to-buffer: ^5.0.1 + debug: ^4.3.4 + fs-extra: ^8.1.0 + checksum: a8aec70e1c67386fbe67f66e344ecd671a19f4cfc8e0f0e14d070563af5123d540e77fbceb6e26566f29846fac864d2862699ab134d307f85c85e7d72ce23d14 + languageName: node + linkType: hard + "glob-parent@npm:^5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -6063,6 +6697,13 @@ __metadata: languageName: node linkType: hard +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 + languageName: node + linkType: hard + "glob@npm:^10.2.2": version: 10.3.3 resolution: "glob@npm:10.3.3" @@ -6153,7 +6794,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -6261,7 +6902,7 @@ __metadata: languageName: node linkType: hard -"hash.js@npm:^1.1.7": +"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3, hash.js@npm:^1.1.7": version: 1.1.7 resolution: "hash.js@npm:1.1.7" dependencies: @@ -6285,6 +6926,17 @@ __metadata: languageName: node linkType: hard +"hmac-drbg@npm:^1.0.1": + version: 1.0.1 + resolution: "hmac-drbg@npm:1.0.1" + dependencies: + hash.js: ^1.0.3 + minimalistic-assert: ^1.0.0 + minimalistic-crypto-utils: ^1.0.1 + checksum: bd30b6a68d7f22d63f10e1888aee497d7c2c5c0bb469e66bbdac99f143904d1dfe95f8131f95b3e86c86dd239963c9d972fcbe147e7cffa00e55d18585c43fe0 + languageName: node + linkType: hard + "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -6329,7 +6981,7 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:^1.6.3, http-errors@npm:^1.8.1, http-errors@npm:~1.8.0": +"http-errors@npm:^1.6.3, http-errors@npm:^1.7.3, http-errors@npm:^1.8.1, http-errors@npm:~1.8.0": version: 1.8.1 resolution: "http-errors@npm:1.8.1" dependencies: @@ -6342,6 +6994,18 @@ __metadata: languageName: node linkType: hard +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" + dependencies: + depd: ~1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: ">= 1.4.0 < 2" + checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c + languageName: node + linkType: hard + "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -6353,6 +7017,16 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "http-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^7.1.0 + debug: ^4.3.4 + checksum: 48d4fac997917e15f45094852b63b62a46d0c8a4f0b9c6c23ca26d27b8df8d178bed88389e604745e748bd9a01f5023e25093722777f0593c3f052009ff438b6 + languageName: node + linkType: hard + "https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -6363,6 +7037,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^7.0.0": + version: 7.0.1 + resolution: "https-proxy-agent@npm:7.0.1" + dependencies: + agent-base: ^7.0.2 + debug: 4 + checksum: 2d765c31865071373771f53abdd72912567b76015a4eff61094f586194192950cd89257d50f0e621807a16c083bc8cad5852e3885c6ba154d2ce721a18fac248 + languageName: node + linkType: hard + "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -6404,7 +7088,7 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.2.1": +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e @@ -6418,7 +7102,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.2.1": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -6471,13 +7155,20 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 languageName: node linkType: hard +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 + languageName: node + linkType: hard + "interface-datastore@npm:^8.0.0, interface-datastore@npm:^8.2.0": version: 8.2.3 resolution: "interface-datastore@npm:8.2.3" @@ -6507,6 +7198,13 @@ __metadata: languageName: node linkType: hard +"interpret@npm:^3.1.1": + version: 3.1.1 + resolution: "interpret@npm:3.1.1" + checksum: 35cebcf48c7351130437596d9ab8c8fe131ce4038da4561e6d665f25640e0034702a031cf7e3a5cea60ac7ac548bf17465e0571ede126f3d3a6933152171ac82 + languageName: node + linkType: hard + "ip-regex@npm:^4.0.0": version: 4.3.0 resolution: "ip-regex@npm:4.3.0" @@ -6521,6 +7219,13 @@ __metadata: languageName: node linkType: hard +"ip@npm:^1.1.8": + version: 1.1.8 + resolution: "ip@npm:1.1.8" + checksum: a2ade53eb339fb0cbe9e69a44caab10d6e3784662285eb5d2677117ee4facc33a64679051c35e0dfdb1a3983a51ce2f5d2cb36446d52e10d01881789b76e28fb + languageName: node + linkType: hard + "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" @@ -6535,6 +7240,16 @@ __metadata: languageName: node linkType: hard +"is-arguments@npm:^1.0.4": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: ^1.0.2 + has-tostringtag: ^1.0.0 + checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 + languageName: node + linkType: hard + "is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": version: 3.0.2 resolution: "is-array-buffer@npm:3.0.2" @@ -6586,7 +7301,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.1.0, is-core-module@npm:^2.11.0, is-core-module@npm:^2.12.0": +"is-core-module@npm:^2.1.0, is-core-module@npm:^2.11.0, is-core-module@npm:^2.12.0, is-core-module@npm:^2.12.1": version: 2.12.1 resolution: "is-core-module@npm:2.12.1" dependencies: @@ -6746,6 +7461,15 @@ __metadata: languageName: node linkType: hard +"is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: ^3.0.1 + checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca + languageName: node + linkType: hard + "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -6797,7 +7521,7 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": version: 1.1.12 resolution: "is-typed-array@npm:1.1.12" dependencies: @@ -6838,6 +7562,13 @@ __metadata: languageName: node linkType: hard +"isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 + languageName: node + linkType: hard + "isomorphic-ws@npm:5.0.0": version: 5.0.0 resolution: "isomorphic-ws@npm:5.0.0" @@ -6868,13 +7599,13 @@ __metadata: linkType: hard "istanbul-lib-report@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-report@npm:3.0.0" + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" dependencies: istanbul-lib-coverage: ^3.0.0 - make-dir: ^3.0.0 + make-dir: ^4.0.0 supports-color: ^7.1.0 - checksum: 3f29eb3f53c59b987386e07fe772d24c7f58c6897f34c9d7a296f4000de7ae3de9eb95c3de3df91dc65b134c84dee35c54eee572a56243e8907c48064e34ff1b + checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 languageName: node linkType: hard @@ -6890,12 +7621,12 @@ __metadata: linkType: hard "istanbul-reports@npm:^3.1.3": - version: 3.1.5 - resolution: "istanbul-reports@npm:3.1.5" + version: 3.1.6 + resolution: "istanbul-reports@npm:3.1.6" dependencies: html-escaper: ^2.0.0 istanbul-lib-report: ^3.0.0 - checksum: 7867228f83ed39477b188ea07e7ccb9b4f5320b6f73d1db93a0981b7414fa4ef72d3f80c4692c442f90fc250d9406e71d8d7ab65bb615cb334e6292b73192b89 + checksum: 44c4c0582f287f02341e9720997f9e82c071627e1e862895745d5f52ec72c9b9f38e1d12370015d2a71dcead794f34c7732aaef3fab80a24bc617a21c3d911d6 languageName: node linkType: hard @@ -7085,15 +7816,15 @@ __metadata: linkType: hard "jackspeak@npm:^2.0.3": - version: 2.2.1 - resolution: "jackspeak@npm:2.2.1" + version: 2.2.2 + resolution: "jackspeak@npm:2.2.2" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: e29291c0d0f280a063fa18fbd1e891ab8c2d7519fd34052c0ebde38538a15c603140d60c2c7f432375ff7ee4c5f1c10daa8b2ae19a97c3d4affe308c8360c1df + checksum: 7b1468dd910afc00642db87448f24b062346570b8b47531409aa9012bcb95fdf7ec2b1c48edbb8b57a938c08391f8cc01b5034fc335aa3a2e74dbcc0ee5c555a languageName: node linkType: hard @@ -7114,48 +7845,48 @@ __metadata: languageName: node linkType: hard -"jest-circus@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-circus@npm:29.6.1" +"jest-circus@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-circus@npm:29.6.2" dependencies: - "@jest/environment": ^29.6.1 - "@jest/expect": ^29.6.1 - "@jest/test-result": ^29.6.1 + "@jest/environment": ^29.6.2 + "@jest/expect": ^29.6.2 + "@jest/test-result": ^29.6.2 "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - dedent: ^0.7.0 + dedent: ^1.0.0 is-generator-fn: ^2.0.0 - jest-each: ^29.6.1 - jest-matcher-utils: ^29.6.1 - jest-message-util: ^29.6.1 - jest-runtime: ^29.6.1 - jest-snapshot: ^29.6.1 - jest-util: ^29.6.1 + jest-each: ^29.6.2 + jest-matcher-utils: ^29.6.2 + jest-message-util: ^29.6.2 + jest-runtime: ^29.6.2 + jest-snapshot: ^29.6.2 + jest-util: ^29.6.2 p-limit: ^3.1.0 - pretty-format: ^29.6.1 + pretty-format: ^29.6.2 pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: f3e39a74b601929448df92037f0599978d4d7a4b8f636f64e8020533d2d2b2f669d6729c80c6efed69341ca26753e5061e9787a0acd6c70af2127a94375ebb76 + checksum: 4f5a96a68c3c808c3d5a9279a2f39a2937386e2cebba5096971f267d79562ce2133a13bc05356a39f8f1ba68fcfe1eb39c4572b3fb0f91affbd932950e89c1e3 languageName: node linkType: hard -"jest-cli@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-cli@npm:29.6.1" +"jest-cli@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-cli@npm:29.6.2" dependencies: - "@jest/core": ^29.6.1 - "@jest/test-result": ^29.6.1 + "@jest/core": ^29.6.2 + "@jest/test-result": ^29.6.2 "@jest/types": ^29.6.1 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.6.1 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 + jest-config: ^29.6.2 + jest-util: ^29.6.2 + jest-validate: ^29.6.2 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -7165,34 +7896,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: f5854ffea977b9a12520ea71f8d0cc8a626cbb93d7e1e6eea18a2a1f2b25f70f1b6b08a89f11b4dc7dd36a1776a9ac2cf8ec5c7998086f913ee690c06c07c949 + checksum: 0b7b09ae4bd327caf1981eac5a14679ddda3c5c836c9f8ea0ecfe1e5e10e9a39a5ed783fa38d25383604c4d3405595e74b391d955e99aea7e51acb41a59ea108 languageName: node linkType: hard -"jest-config@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-config@npm:29.6.1" +"jest-config@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-config@npm:29.6.2" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.6.1 + "@jest/test-sequencer": ^29.6.2 "@jest/types": ^29.6.1 - babel-jest: ^29.6.1 + babel-jest: ^29.6.2 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.6.1 - jest-environment-node: ^29.6.1 + jest-circus: ^29.6.2 + jest-environment-node: ^29.6.2 jest-get-type: ^29.4.3 jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.1 - jest-runner: ^29.6.1 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 + jest-resolve: ^29.6.2 + jest-runner: ^29.6.2 + jest-util: ^29.6.2 + jest-validate: ^29.6.2 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.6.1 + pretty-format: ^29.6.2 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -7203,19 +7934,19 @@ __metadata: optional: true ts-node: optional: true - checksum: 3a30afeb28cc5658ef9cd95f2551ab8a29641bb6d377eb239cba8e7522eb4611c9a98cdcf173d87f5ad7b5e1ad242c3cd5434a260107bd3c7e8305d05023e05c + checksum: 3bd104a3ac2dd9d34986238142437606354169766dcf88359a7a12ac106d0dc17dcc6b627e4f20db97a58bac5b0502b5436c9cc4722b3629b2a114bba6da9128 languageName: node linkType: hard -"jest-diff@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-diff@npm:29.6.1" +"jest-diff@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-diff@npm:29.6.2" dependencies: chalk: ^4.0.0 diff-sequences: ^29.4.3 jest-get-type: ^29.4.3 - pretty-format: ^29.6.1 - checksum: c6350178ca27d92c7fd879790fb2525470c1ff1c5d29b1834a240fecd26c6904fb470ebddb98dc96dd85389c56c3b50e6965a1f5203e9236d213886ed9806219 + pretty-format: ^29.6.2 + checksum: 0effd66a0c23f8c139ebf7ca99ed30b479b86fff66f19ad4869f130aaf7ae6a24ca1533f697b7e4930cbe2ddffc85387723fcca673501c653fb77a38f538e959 languageName: node linkType: hard @@ -7228,30 +7959,30 @@ __metadata: languageName: node linkType: hard -"jest-each@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-each@npm:29.6.1" +"jest-each@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-each@npm:29.6.2" dependencies: "@jest/types": ^29.6.1 chalk: ^4.0.0 jest-get-type: ^29.4.3 - jest-util: ^29.6.1 - pretty-format: ^29.6.1 - checksum: 9d2ea7ed5326ee8c22523b22c66c85fe73754ea39f9b389881956508ee441392c61072a5fbf673e39beddd31d011bb94acae3edc77053ba4f9aa5c060114a5c8 + jest-util: ^29.6.2 + pretty-format: ^29.6.2 + checksum: b64194f4ca27afc6070a42b7ecccbc68be0ded19a849f8cd8f91a2abb23fadae2d38d47559a315f4d1f576927761f3ea437a75ab6cf19206332abb8527d7c165 languageName: node linkType: hard -"jest-environment-node@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-environment-node@npm:29.6.1" +"jest-environment-node@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-environment-node@npm:29.6.2" dependencies: - "@jest/environment": ^29.6.1 - "@jest/fake-timers": ^29.6.1 + "@jest/environment": ^29.6.2 + "@jest/fake-timers": ^29.6.2 "@jest/types": ^29.6.1 "@types/node": "*" - jest-mock: ^29.6.1 - jest-util: ^29.6.1 - checksum: a50287e1ff29d131646bd09acc3222ac6ea0ad61e86bf73851d318ef2be0633a421b8558c4a15ddc67e0ffcfc32da7f6a0d8a2ddbfa85453837899dec88d256c + jest-mock: ^29.6.2 + jest-util: ^29.6.2 + checksum: 0b754ac2d3bdb7ce5d6fc28595b9d1c64176f20506b6f773b18b0280ab0b396ed7d927c8519779d3c560fa2b13236ee7077092ccb19a13bea23d40dd30f06450 languageName: node linkType: hard @@ -7262,9 +7993,9 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-haste-map@npm:29.6.1" +"jest-haste-map@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-haste-map@npm:29.6.2" dependencies: "@jest/types": ^29.6.1 "@types/graceful-fs": ^4.1.3 @@ -7274,42 +8005,42 @@ __metadata: fsevents: ^2.3.2 graceful-fs: ^4.2.9 jest-regex-util: ^29.4.3 - jest-util: ^29.6.1 - jest-worker: ^29.6.1 + jest-util: ^29.6.2 + jest-worker: ^29.6.2 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: 7c74d5a0f6aafa9f4e60fae7949d4774770c0243fb529c24f2f4c81229db479fa318dc8b81e8d226865aef1d600af10bd8404dd208e802318434b46f75d5d869 + checksum: 726233972030eb2e5bce6c9468e497310436b455c88b40e744bd053e20a6f3ff19aec340edcbd89537c629ed5cf8916506bc895d690cc39a0862c74dcd95b7b8 languageName: node linkType: hard -"jest-leak-detector@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-leak-detector@npm:29.6.1" +"jest-leak-detector@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-leak-detector@npm:29.6.2" dependencies: jest-get-type: ^29.4.3 - pretty-format: ^29.6.1 - checksum: 5122d40c248effaede4c9ee3a99046a3f30088fef7bfc4af534678b432455161399357af46deb6423de7e05c6597920d6ee8cd570e26048886a90d541334f8c8 + pretty-format: ^29.6.2 + checksum: e00152acdba8aa8f9334775b77375947508051c34646fbeb702275da2b6ac6145f8cad6d5893112e76484d00fa8c0b4fd71b78ab0b4ef34950f5b6a84f37ae67 languageName: node linkType: hard -"jest-matcher-utils@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-matcher-utils@npm:29.6.1" +"jest-matcher-utils@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-matcher-utils@npm:29.6.2" dependencies: chalk: ^4.0.0 - jest-diff: ^29.6.1 + jest-diff: ^29.6.2 jest-get-type: ^29.4.3 - pretty-format: ^29.6.1 - checksum: d2efa6aed6e4820758b732b9fefd315c7fa4508ee690da656e1c5ac4c1a0f4cee5b04c9719ee1fda9aeb883b4209186c145089ced521e715b9fa70afdfa4a9c6 + pretty-format: ^29.6.2 + checksum: 3e1b65dd30d05f75fe56dc45fbe4135aec2ff96a3d1e21afbf6a66f3a45a7e29cd0fd37cf80b9564e0381d6205833f77ccaf766c6f7e1aad6b7924d117be504e languageName: node linkType: hard -"jest-message-util@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-message-util@npm:29.6.1" +"jest-message-util@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-message-util@npm:29.6.2" dependencies: "@babel/code-frame": ^7.12.13 "@jest/types": ^29.6.1 @@ -7317,10 +8048,10 @@ __metadata: chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^29.6.1 + pretty-format: ^29.6.2 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 3e7cb2ff087fe72255292e151d24e4fbb4cd6134885c0a67a4b302f233fe4110bf7580b176f427f05ad7550eb878ed94237209785d09d659a7d171ffa59c068f + checksum: e8e3c8d2301e2ca4038ed6df8cbba7fedc6949d1ede4c0e3f1f44f53afb56d77eb35983fa460140d0eadeab99a5f3ae04b703fe77cd7b316b40b361228b5aa1a languageName: node linkType: hard @@ -7336,14 +8067,14 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-mock@npm:29.6.1" +"jest-mock@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-mock@npm:29.6.2" dependencies: "@jest/types": ^29.6.1 "@types/node": "*" - jest-util: ^29.6.1 - checksum: 5e902f1a7eba1eb1a64eb6c19947fe1316834359d9869d0e2644d8979b9cad0465885dc4c9909c471888cddeea835c938cec6263d386d3d1aad720fc74e52ea1 + jest-util: ^29.6.2 + checksum: 0bacb5d58441462c0e531ec4d2f7377eecbe21f664d8a460e72f94ba61d22635028931678e7a0f1c3e3f5894973db8e409432f7db4c01283456c8fdbd85f5b3b languageName: node linkType: hard @@ -7366,72 +8097,72 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-resolve-dependencies@npm:29.6.1" +"jest-resolve-dependencies@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-resolve-dependencies@npm:29.6.2" dependencies: jest-regex-util: ^29.4.3 - jest-snapshot: ^29.6.1 - checksum: cee0a0fe53fd4531492a526b6ccd32377baad1eff6e6c124f04e9dc920219fd23fd39be88bb9551ee68d5fe92a3af627b423c9bc65a2aa0ac8a223c0e74dbbbb + jest-snapshot: ^29.6.2 + checksum: d40ee11af2c9d2ef0dbbcf9a5b7dda37c2b86cf4e5de1705795919fd8927907569115c502116ab56de0dca576d5faa31ec9b636240333b6830a568a63004da17 languageName: node linkType: hard -"jest-resolve@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-resolve@npm:29.6.1" +"jest-resolve@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-resolve@npm:29.6.2" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.1 + jest-haste-map: ^29.6.2 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 + jest-util: ^29.6.2 + jest-validate: ^29.6.2 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 9ce979a0f4a751bea58caea76415112df2a3f4d58e294019872244728aadd001f0ec20c873a3c805dd8f7c762143b3c14d00f87d124ed87c9981fbf8723090ef + checksum: 01721957e61821a576b2ded043eeab8b392166e0e6d8d680f75657737e2ea7481ff29c2716b866ccd12e743f3a8da465504b1028e78b6a3c68b9561303de7ec8 languageName: node linkType: hard -"jest-runner@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-runner@npm:29.6.1" +"jest-runner@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-runner@npm:29.6.2" dependencies: - "@jest/console": ^29.6.1 - "@jest/environment": ^29.6.1 - "@jest/test-result": ^29.6.1 - "@jest/transform": ^29.6.1 + "@jest/console": ^29.6.2 + "@jest/environment": ^29.6.2 + "@jest/test-result": ^29.6.2 + "@jest/transform": ^29.6.2 "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 jest-docblock: ^29.4.3 - jest-environment-node: ^29.6.1 - jest-haste-map: ^29.6.1 - jest-leak-detector: ^29.6.1 - jest-message-util: ^29.6.1 - jest-resolve: ^29.6.1 - jest-runtime: ^29.6.1 - jest-util: ^29.6.1 - jest-watcher: ^29.6.1 - jest-worker: ^29.6.1 + jest-environment-node: ^29.6.2 + jest-haste-map: ^29.6.2 + jest-leak-detector: ^29.6.2 + jest-message-util: ^29.6.2 + jest-resolve: ^29.6.2 + jest-runtime: ^29.6.2 + jest-util: ^29.6.2 + jest-watcher: ^29.6.2 + jest-worker: ^29.6.2 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 0e4dbda26669ae31fee32f8a62b3119bba510f2d17a098d6157b48a73ed2fc9842405bf893f3045c12b3632c7c0e3399fb22684b18ab5566aff4905b26c79a9a + checksum: 46bd506a08ddf79628a509aed4105ab74c0b03727a3e24c90bbc2915531860b3da99f7ace2fd9603194440553cffac9cfb1a3b7d0ce03d5fc9c5f2d5ffbb3d3f languageName: node linkType: hard -"jest-runtime@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-runtime@npm:29.6.1" +"jest-runtime@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-runtime@npm:29.6.2" dependencies: - "@jest/environment": ^29.6.1 - "@jest/fake-timers": ^29.6.1 - "@jest/globals": ^29.6.1 + "@jest/environment": ^29.6.2 + "@jest/fake-timers": ^29.6.2 + "@jest/globals": ^29.6.2 "@jest/source-map": ^29.6.0 - "@jest/test-result": ^29.6.1 - "@jest/transform": ^29.6.1 + "@jest/test-result": ^29.6.2 + "@jest/transform": ^29.6.2 "@jest/types": ^29.6.1 "@types/node": "*" chalk: ^4.0.0 @@ -7439,51 +8170,50 @@ __metadata: collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.1 - jest-message-util: ^29.6.1 - jest-mock: ^29.6.1 + jest-haste-map: ^29.6.2 + jest-message-util: ^29.6.2 + jest-mock: ^29.6.2 jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.1 - jest-snapshot: ^29.6.1 - jest-util: ^29.6.1 + jest-resolve: ^29.6.2 + jest-snapshot: ^29.6.2 + jest-util: ^29.6.2 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 7c360c9694467d996f3d6d914fefa0e7bda554adda8c2b9fba31546dba663d71a64eda103ff68120a2422f3c16db8f0bc2c445923fe8fb934f37e53ef74fb429 + checksum: 8e7e4486b23b01a9c407313681bed0def39680c2ae21cf01347f111983252ec3a024c56493c5411fed53633f02863eed0816099110cbe04b3889aa5babf1042d languageName: node linkType: hard -"jest-snapshot@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-snapshot@npm:29.6.1" +"jest-snapshot@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-snapshot@npm:29.6.2" 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.6.1 - "@jest/transform": ^29.6.1 + "@jest/expect-utils": ^29.6.2 + "@jest/transform": ^29.6.2 "@jest/types": ^29.6.1 - "@types/prettier": ^2.1.5 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.6.1 + expect: ^29.6.2 graceful-fs: ^4.2.9 - jest-diff: ^29.6.1 + jest-diff: ^29.6.2 jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.1 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 + jest-matcher-utils: ^29.6.2 + jest-message-util: ^29.6.2 + jest-util: ^29.6.2 natural-compare: ^1.4.0 - pretty-format: ^29.6.1 + pretty-format: ^29.6.2 semver: ^7.5.3 - checksum: e8f69d1fd4a29d354d4dca9eb2a22674b300f8ef509e4f1e75337c880414a00d2bdc9d3849a6855dbb5a76bfbe74603f33435378a3877e69f0838e4cc2244350 + checksum: c1c70a9dbce7fca62ed73ac38234b4ee643e8b667acf71b4417ab67776c1188bb08b8ad450e56a2889ad182903ffd416386fa8082a477724ccf8d8c29a4c6906 languageName: node linkType: hard -"jest-util@npm:^29.0.0, jest-util@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-util@npm:29.6.1" +"jest-util@npm:^29.0.0, jest-util@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-util@npm:29.6.2" dependencies: "@jest/types": ^29.6.1 "@types/node": "*" @@ -7491,60 +8221,71 @@ __metadata: ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: fc553556c1350c443449cadaba5fb9d604628e8b5ceb6ceaf4e7e08975b24277d0a14bf2e0f956024e03c23e556fcb074659423422a06fbedf2ab52978697ac7 + checksum: 8aedc0c80083d0cabd6c6c4f04dea1cbcac609fd7bc3b1fc05a3999291bd6e63dd52b0c806f9378d5cae28eff5a6191709a4987861001293f8d03e53984adca4 languageName: node linkType: hard -"jest-validate@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-validate@npm:29.6.1" +"jest-validate@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-validate@npm:29.6.2" dependencies: "@jest/types": ^29.6.1 camelcase: ^6.2.0 chalk: ^4.0.0 jest-get-type: ^29.4.3 leven: ^3.1.0 - pretty-format: ^29.6.1 - checksum: d2491f3f33d9bbc2dcaaa6acbff26f257b59c5eeceb65a52a9c1cec2f679b836ec2a4658b7004c0ef9d90cd0d9bd664e41d5ed6900f932bea742dd8e6b85e7f1 + pretty-format: ^29.6.2 + checksum: 32648d002189c0ad8a958eace7c6b7d05ea1dc440a1b91e0f22dc1aef489899446ec80b2d527fd13713862d89dfb4606e24a3bf8a10c4ddac3c911e93b7f0374 languageName: node linkType: hard -"jest-watcher@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-watcher@npm:29.6.1" +"jest-watcher@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-watcher@npm:29.6.2" dependencies: - "@jest/test-result": ^29.6.1 + "@jest/test-result": ^29.6.2 "@jest/types": ^29.6.1 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.6.1 + jest-util: ^29.6.2 string-length: ^4.0.1 - checksum: 69bd5a602284fdce6eba5486c5c57aca6b511d91cb0907c34c104d6dd931e18ce67baa7f8e280fa473e5d81ea3e7b9e7d94f712c37ab0b3b8cc2aec30676955d + checksum: 14624190fc8b5fbae466a2ec81458a88c15716d99f042bb4674d53e9623d305cb2905bc1dffeda05fd1a10a05c2a83efe5ac41942477e2b15eaebb08d0aaab32 languageName: node linkType: hard -"jest-worker@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-worker@npm:29.6.1" +"jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" dependencies: "@types/node": "*" - jest-util: ^29.6.1 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 0af309ea4db17c4c47e84a9246f907960a15577683c005fdeafc8f3c06bc455136f95a6f28fa2a3e924b767eb4dacd9b40915a7707305f88586f099af3ac27a8 + checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 + languageName: node + linkType: hard + +"jest-worker@npm:^29.6.2": + version: 29.6.2 + resolution: "jest-worker@npm:29.6.2" + dependencies: + "@types/node": "*" + jest-util: ^29.6.2 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 11035564534bf181ead80b25be138c2d42372bd5626151a3e705200d47a74fd9da3ca79f8a7b15806cdc325ad73c3d21d23acceeed99d50941589ff02915ed38 languageName: node linkType: hard "jest@npm:^29.5.0": - version: 29.6.1 - resolution: "jest@npm:29.6.1" + version: 29.6.2 + resolution: "jest@npm:29.6.2" dependencies: - "@jest/core": ^29.6.1 + "@jest/core": ^29.6.2 "@jest/types": ^29.6.1 import-local: ^3.0.2 - jest-cli: ^29.6.1 + jest-cli: ^29.6.2 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -7552,7 +8293,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 7b8c0ca72f483e00ec19dcf9549f9a9af8ae468ab62925b148d714b58eb52d5fea9a082625193bc833d2d9b64cf65a11f3d37857636c5551af05c10aec4ce71b + checksum: dd63facd4e6aefc35d2c42acd7e4c9fb0d8fe4705df4b3ccedd953605424d7aa89c88af8cf4c9951752709cac081d29c35b264e1794643d5688ea724ccc9a485 languageName: node linkType: hard @@ -7616,7 +8357,7 @@ __metadata: languageName: node linkType: hard -"json-parse-even-better-errors@npm:^2.3.0": +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f @@ -7664,6 +8405,18 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: ^4.1.6 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e + languageName: node + linkType: hard + "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" @@ -7686,7 +8439,7 @@ __metadata: languageName: node linkType: hard -"kind-of@npm:^6.0.3": +"kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b @@ -7759,6 +8512,27 @@ __metadata: languageName: node linkType: hard +"koa-send@npm:^5.0.0": + version: 5.0.1 + resolution: "koa-send@npm:5.0.1" + dependencies: + debug: ^4.1.1 + http-errors: ^1.7.3 + resolve-path: ^1.4.0 + checksum: a9fbaadbe0f50efd157a733df4a1cc2b3b79b0cdf12e67c718641e6038d1792c0bebe40913e6d4ceb707d970301155be3859b98d1ef08b0fd1766f7326b82853 + languageName: node + linkType: hard + +"koa-static@npm:^5.0.0": + version: 5.0.0 + resolution: "koa-static@npm:5.0.0" + dependencies: + debug: ^3.1.0 + koa-send: ^5.0.0 + checksum: 8d9b9c4d2b3b13e8818e804245d784099c4b353b55ddd7dbeeb90f27a2e9f5b6f86bd16a4909e337cb89db4d332d9002e6c0f5056caf75749cab62f93c1f0cc5 + languageName: node + linkType: hard + "koa@npm:^2.14.1, koa@npm:^2.14.2": version: 2.14.2 resolution: "koa@npm:2.14.2" @@ -7957,6 +8731,13 @@ __metadata: languageName: node linkType: hard +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 + languageName: node + linkType: hard + "locate-path@npm:^5.0.0": version: 5.0.0 resolution: "locate-path@npm:5.0.0" @@ -8143,7 +8924,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.7.1": +"lru-cache@npm:^7.14.1, lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 @@ -8171,12 +8952,12 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^3.0.0": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" dependencies: - semver: ^6.0.0 - checksum: 484200020ab5a1fdf12f393fe5f385fc8e4378824c940fba1729dcd198ae4ff24867bc7a5646331e50cead8abff5d9270c456314386e629acec6dff4b8016b78 + semver: ^7.5.3 + checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a languageName: node linkType: hard @@ -8329,7 +9110,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.4": +"micromatch@npm:^4.0.0, micromatch@npm:^4.0.4": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -8339,6 +9120,18 @@ __metadata: languageName: node linkType: hard +"miller-rabin@npm:^4.0.0": + version: 4.0.1 + resolution: "miller-rabin@npm:4.0.1" + dependencies: + bn.js: ^4.0.0 + brorand: ^1.0.1 + bin: + miller-rabin: bin/miller-rabin + checksum: 00cd1ab838ac49b03f236cc32a14d29d7d28637a53096bf5c6246a032a37749c9bd9ce7360cbf55b41b89b7d649824949ff12bc8eee29ac77c6b38eada619ece + languageName: node + linkType: hard + "mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -8346,7 +9139,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -8392,6 +9185,13 @@ __metadata: languageName: node linkType: hard +"minimalistic-crypto-utils@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-crypto-utils@npm:1.0.1" + checksum: 6e8a0422b30039406efd4c440829ea8f988845db02a3299f372fceba56ffa94994a9c0f2fd70c17f9969eedfbd72f34b5070ead9656a34d3f71c0bd72583a0ed + languageName: node + linkType: hard + "minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -8512,6 +9312,20 @@ __metadata: languageName: node linkType: hard +"mitt@npm:3.0.0": + version: 3.0.0 + resolution: "mitt@npm:3.0.0" + checksum: f7be5049d27d18b1dbe9408452d66376fa60ae4a79fe9319869d1b90ae8cbaedadc7e9dab30b32d781411256d468be5538996bb7368941c09009ef6bbfa6bfc7 + languageName: node + linkType: hard + +"mkdirp-classic@npm:^0.5.2": + version: 0.5.3 + resolution: "mkdirp-classic@npm:0.5.3" + checksum: 3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac + languageName: node + linkType: hard + "mkdirp@npm:^1.0.3": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -8646,6 +9460,13 @@ __metadata: languageName: node linkType: hard +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 + languageName: node + linkType: hard + "netmask@npm:^2.0.2": version: 2.0.2 resolution: "netmask@npm:2.0.2" @@ -8720,7 +9541,7 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.12": +"node-releases@npm:^2.0.13": version: 2.0.13 resolution: "node-releases@npm:2.0.13" checksum: 17ec8f315dba62710cae71a8dad3cd0288ba943d2ece43504b3b1aa8625bf138637798ab470b1d9035b0545996f63000a8a926e0f6d35d0996424f8b6d36dda3 @@ -8813,6 +9634,29 @@ __metadata: languageName: node linkType: hard +"object.fromentries@npm:^2.0.6": + version: 2.0.6 + resolution: "object.fromentries@npm:2.0.6" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.4 + es-abstract: ^1.20.4 + checksum: 453c6d694180c0c30df451b60eaf27a5b9bca3fb43c37908fd2b78af895803dc631242bcf05582173afa40d8d0e9c96e16e8874b39471aa53f3ac1f98a085d85 + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.0": + version: 1.0.0 + resolution: "object.groupby@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.2.0 + es-abstract: ^1.21.2 + get-intrinsic: ^1.2.1 + checksum: 64b00b287d57580111c958e7ff375c9b61811fa356f2cf0d35372d43cab61965701f00fac66c19fd8f49c4dfa28744bee6822379c69a73648ad03e09fcdeae70 + languageName: node + linkType: hard + "object.values@npm:^1.1.6": version: 1.1.6 resolution: "object.values@npm:1.1.6" @@ -8840,7 +9684,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0, once@npm:^1.4.0": +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -9002,6 +9846,33 @@ __metadata: languageName: node linkType: hard +"pac-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "pac-proxy-agent@npm:7.0.0" + dependencies: + "@tootallnate/quickjs-emscripten": ^0.23.0 + agent-base: ^7.0.2 + debug: ^4.3.4 + get-uri: ^6.0.1 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.0 + pac-resolver: ^7.0.0 + socks-proxy-agent: ^8.0.1 + checksum: 45fe10ae58b1700d5419a9e5b525fb261b866ed6a65c1382fe45c3d5af9f81d9a58250d407941a363b1955e0315f3d97e02a2f20e4c7e2ba793bd46585db7ec8 + languageName: node + linkType: hard + +"pac-resolver@npm:^7.0.0": + version: 7.0.0 + resolution: "pac-resolver@npm:7.0.0" + dependencies: + degenerator: ^5.0.0 + ip: ^1.1.8 + netmask: ^2.0.2 + checksum: fa3a898c09848e93e35f5e23443fea36ddb393a851c76a23664a5bf3fcbe58ff77a0bcdae1e4f01b9ea87ea493c52e14d97a0fe39f92474d14cd45559c6e3cde + languageName: node + linkType: hard + "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -9011,6 +9882,19 @@ __metadata: languageName: node linkType: hard +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.5": + version: 5.1.6 + resolution: "parse-asn1@npm:5.1.6" + dependencies: + asn1.js: ^5.2.0 + browserify-aes: ^1.0.0 + evp_bytestokey: ^1.0.0 + pbkdf2: ^3.0.3 + safe-buffer: ^5.1.1 + checksum: 9243311d1f88089bc9f2158972aa38d1abd5452f7b7cabf84954ed766048fe574d434d82c6f5a39b988683e96fb84cd933071dda38927e03469dc8c8d14463c7 + languageName: node + linkType: hard + "parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" @@ -9037,7 +9921,7 @@ __metadata: languageName: node linkType: hard -"path-is-absolute@npm:^1.0.0": +"path-is-absolute@npm:1.0.1, path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 @@ -9098,6 +9982,26 @@ __metadata: languageName: node linkType: hard +"pbkdf2@npm:^3.0.3": + version: 3.1.2 + resolution: "pbkdf2@npm:3.1.2" + dependencies: + create-hash: ^1.1.2 + create-hmac: ^1.1.4 + ripemd160: ^2.0.1 + safe-buffer: ^5.0.1 + sha.js: ^2.4.8 + checksum: 2c950a100b1da72123449208e231afc188d980177d021d7121e96a2de7f2abbc96ead2b87d03d8fe5c318face097f203270d7e27908af9f471c165a4e8e69c92 + languageName: node + linkType: hard + +"pend@npm:~1.2.0": + version: 1.2.0 + resolution: "pend@npm:1.2.0" + checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d + languageName: node + linkType: hard + "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" @@ -9135,14 +10039,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.25": - version: 8.4.25 - resolution: "postcss@npm:8.4.25" +"postcss@npm:^8.4.26": + version: 8.4.27 + resolution: "postcss@npm:8.4.27" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 9ed3ab8af43ad5210c28f56f916fd9b8c9f94fbeaebbf645dcf579bc28bdd8056c2a7ecc934668d399b81fedb6128f0c4b299f931e50454964bc911c25a3a0a2 + checksum: 1cdd0c298849df6cd65f7e646a3ba36870a37b65f55fd59d1a165539c263e9b4872a402bf4ed1ca1bc31f58b68b2835545e33ea1a23b161a1f8aa6d5ded81e78 languageName: node linkType: hard @@ -9162,14 +10066,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.1": - version: 29.6.1 - resolution: "pretty-format@npm:29.6.1" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.2": + version: 29.6.2 + resolution: "pretty-format@npm:29.6.2" dependencies: "@jest/schemas": ^29.6.0 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: 6f923a2379a37a425241dc223d76f671c73c4f37dba158050575a54095867d565c068b441843afdf3d7c37bed9df4bbadf46297976e60d4149972b779474203a + checksum: a0f972a44f959023c0df9cdfe9eed7540264d7f7ddf74667db8a5294444d5aa153fd47d20327df10ae86964e2ceec10e46ea06b1a5c9c12e02348b78c952c9fc languageName: node linkType: hard @@ -9185,6 +10089,13 @@ __metadata: languageName: node linkType: hard +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 + languageName: node + linkType: hard + "progress-events@npm:^1.0.0": version: 1.0.0 resolution: "progress-events@npm:1.0.0" @@ -9192,6 +10103,13 @@ __metadata: languageName: node linkType: hard +"progress@npm:2.0.3": + version: 2.0.3 + resolution: "progress@npm:2.0.3" + checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 + languageName: node + linkType: hard + "promise-readable@npm:^6.0.0": version: 6.0.0 resolution: "promise-readable@npm:6.0.0" @@ -9253,6 +10171,29 @@ __metadata: languageName: node linkType: hard +"proxy-agent@npm:6.3.0": + version: 6.3.0 + resolution: "proxy-agent@npm:6.3.0" + dependencies: + agent-base: ^7.0.2 + debug: ^4.3.4 + http-proxy-agent: ^7.0.0 + https-proxy-agent: ^7.0.0 + lru-cache: ^7.14.1 + pac-proxy-agent: ^7.0.0 + proxy-from-env: ^1.1.0 + socks-proxy-agent: ^8.0.1 + checksum: e3fb0633d665e352ed4efe23ae5616b8301423dfa4ff1c5975d093da8a636181a97391f7a91c6a7ffae17c1a305df855e95507f73bcdafda8876198c64b88f5b + languageName: node + linkType: hard + +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 + languageName: node + linkType: hard + "ps-tree@npm:^1.2.0": version: 1.2.0 resolution: "ps-tree@npm:1.2.0" @@ -9264,6 +10205,30 @@ __metadata: languageName: node linkType: hard +"public-encrypt@npm:^4.0.0": + version: 4.0.3 + resolution: "public-encrypt@npm:4.0.3" + dependencies: + bn.js: ^4.1.0 + browserify-rsa: ^4.0.0 + create-hash: ^1.1.0 + parse-asn1: ^5.0.0 + randombytes: ^2.0.1 + safe-buffer: ^5.1.2 + checksum: 215d446e43cef021a20b67c1df455e5eea134af0b1f9b8a35f9e850abf32991b0c307327bc5b9bc07162c288d5cdb3d4a783ea6c6640979ed7b5017e3e0c9935 + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.0 + resolution: "pump@npm:3.0.0" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 + languageName: node + linkType: hard + "punycode@npm:^2.1.0": version: 2.3.0 resolution: "punycode@npm:2.3.0" @@ -9271,6 +10236,36 @@ __metadata: languageName: node linkType: hard +"puppeteer-core@npm:20.9.0": + version: 20.9.0 + resolution: "puppeteer-core@npm:20.9.0" + dependencies: + "@puppeteer/browsers": 1.4.6 + chromium-bidi: 0.4.16 + cross-fetch: 4.0.0 + debug: 4.3.4 + devtools-protocol: 0.0.1147663 + ws: 8.13.0 + peerDependencies: + typescript: ">= 4.7.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: d298598445b0f2032c02d0ed7d1d18a8d2d2fcaf6fc31fc96e93e2669a7fc6fbee0338bd9b8c8f8822887f18a8fb680b77bb56e96fe1928baadb52292bbd93b4 + languageName: node + linkType: hard + +"puppeteer@npm:^20.9.0": + version: 20.9.0 + resolution: "puppeteer@npm:20.9.0" + dependencies: + "@puppeteer/browsers": 1.4.6 + cosmiconfig: 8.2.0 + puppeteer-core: 20.9.0 + checksum: c328eca0a649d5e5d68ee2874c25254b8498ab8bbfa1731b444c2dd69380c2f6df1741b3ad427d448fb8e5bcdd259cc9c1ed749dddfc634a64a6a607403fe53c + languageName: node + linkType: hard + "pure-rand@npm:^6.0.0": version: 6.0.2 resolution: "pure-rand@npm:6.0.2" @@ -9294,6 +10289,13 @@ __metadata: languageName: node linkType: hard +"queue-tick@npm:^1.0.1": + version: 1.0.1 + resolution: "queue-tick@npm:1.0.1" + checksum: 57c3292814b297f87f792fbeb99ce982813e4e54d7a8bdff65cf53d5c084113913289d4a48ec8bbc964927a74b847554f9f4579df43c969a6c8e0f026457ad01 + languageName: node + linkType: hard + "quick-lru@npm:^4.0.1": version: 4.0.1 resolution: "quick-lru@npm:4.0.1" @@ -9301,10 +10303,29 @@ __metadata: languageName: node linkType: hard +"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: ^5.1.0 + checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 + languageName: node + linkType: hard + +"randomfill@npm:^1.0.3": + version: 1.0.4 + resolution: "randomfill@npm:1.0.4" + dependencies: + randombytes: ^2.0.5 + safe-buffer: ^5.1.0 + checksum: 33734bb578a868d29ee1b8555e21a36711db084065d94e019a6d03caa67debef8d6a1bfd06a2b597e32901ddc761ab483a85393f0d9a75838f1912461d4dbfc7 + languageName: node + linkType: hard + "rate-limiter-flexible@npm:^2.3.11, rate-limiter-flexible@npm:^2.3.9": - version: 2.4.1 - resolution: "rate-limiter-flexible@npm:2.4.1" - checksum: 5eea3ffbb6a11f634edd8b9575815c2bf239a8becdfdc82c4183cad92025e853913972a2b2f2d45c16e81aea1a3451fbad8da76dee1ba0e4549c22a0ba58c50f + version: 2.4.2 + resolution: "rate-limiter-flexible@npm:2.4.2" + checksum: 039e58b664991963ba2668a83d0406a72e5822683103acbe416854deb92ed834b840ce6e0acfea35917d9b49685bd53946ae47435a9f5916c2e7550395dec9dc languageName: node linkType: hard @@ -9350,7 +10371,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": +"readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -9370,6 +10391,15 @@ __metadata: languageName: node linkType: hard +"rechoir@npm:^0.8.0": + version: 0.8.0 + resolution: "rechoir@npm:0.8.0" + dependencies: + resolve: ^1.20.0 + checksum: ad3caed8afdefbc33fbc30e6d22b86c35b3d51c2005546f4e79bcc03c074df804b3640ad18945e6bef9ed12caedc035655ec1082f64a5e94c849ff939dc0a788 + languageName: node + linkType: hard + "redent@npm:^3.0.0": version: 3.0.0 resolution: "redent@npm:3.0.0" @@ -9435,6 +10465,16 @@ __metadata: languageName: node linkType: hard +"resolve-path@npm:^1.4.0": + version: 1.4.0 + resolution: "resolve-path@npm:1.4.0" + dependencies: + http-errors: ~1.6.2 + path-is-absolute: 1.0.1 + checksum: 1a39f569ee54dd5f8ee8576ef8671c9724bea65d9f9982fbb5352af9fb4e500e1e459c1bfb1ae3ebfd8d43a709c3a01dfa4f46cf5b831e45e2caed4f1a208300 + languageName: node + linkType: hard + "resolve-pkg-maps@npm:^1.0.0": version: 1.0.0 resolution: "resolve-pkg-maps@npm:1.0.0" @@ -9442,6 +10482,17 @@ __metadata: languageName: node linkType: hard +"resolve-typescript-plugin@npm:^2.0.1": + version: 2.0.1 + resolution: "resolve-typescript-plugin@npm:2.0.1" + dependencies: + tslib: 2.5.0 + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 78c557cb6a7a14f15be0032e3a0b90c7209ae04c12bcced88eb4360d8dda1910e23f8016b20c09b07db19c6871b04d292b5af3472ded41d8189b379bbdaa8116 + languageName: node + linkType: hard + "resolve.exports@npm:^2.0.0": version: 2.0.2 resolution: "resolve.exports@npm:2.0.2" @@ -9449,7 +10500,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1": +"resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.3": version: 1.22.3 resolution: "resolve@npm:1.22.3" dependencies: @@ -9472,7 +10523,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": +"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.3#~builtin": version: 1.22.3 resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=c3c19d" dependencies: @@ -9527,7 +10578,7 @@ __metadata: languageName: node linkType: hard -"ripemd160@npm:^2.0.1": +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": version: 2.0.2 resolution: "ripemd160@npm:2.0.2" dependencies: @@ -9538,8 +10589,8 @@ __metadata: linkType: hard "rollup@npm:^3.25.2": - version: 3.26.2 - resolution: "rollup@npm:3.26.2" + version: 3.27.0 + resolution: "rollup@npm:3.27.0" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -9547,7 +10598,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 7186beeba0e6fd33b37aa33ede7157e77af0a0be4b75d345a51dab4be5962a8e7a1c5ec8868e7c4cd361b456eb1b47bdb75e5db32ab37a546bed383d06b40384 + checksum: f60c2c288d039dc14e1f6e7fd673b7fcb11928b5a781675791b37a741f63b7af110fc5d040d60d603175b6e03ff978bed83db018dd2ac542ef809fe1a5b32dae languageName: node linkType: hard @@ -9590,7 +10641,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -9608,7 +10659,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 @@ -9631,6 +10682,17 @@ __metadata: languageName: node linkType: hard +"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" + dependencies: + "@types/json-schema": ^7.0.8 + ajv: ^6.12.5 + ajv-keywords: ^3.5.2 + checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 + languageName: node + linkType: hard + "semver-match@npm:0.1.1": version: 0.1.1 resolution: "semver-match@npm:0.1.1" @@ -9649,7 +10711,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.3.0": +"semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -9658,7 +10720,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": +"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -9669,6 +10731,15 @@ __metadata: languageName: node linkType: hard +"serialize-javascript@npm:^6.0.1": + version: 6.0.1 + resolution: "serialize-javascript@npm:6.0.1" + dependencies: + randombytes: ^2.1.0 + checksum: 3c4f4cb61d0893b988415bdb67243637333f3f574e9e9cc9a006a2ced0b390b0b3b44aef8d51c951272a9002ec50885eefdc0298891bc27eb2fe7510ea87dc4f + languageName: node + linkType: hard + "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -9676,6 +10747,13 @@ __metadata: languageName: node linkType: hard +"setprototypeof@npm:1.1.0": + version: 1.1.0 + resolution: "setprototypeof@npm:1.1.0" + checksum: 27cb44304d6c9e1a23bc6c706af4acaae1a7aa1054d4ec13c05f01a99fd4887109a83a8042b67ad90dbfcd100d43efc171ee036eb080667172079213242ca36e + languageName: node + linkType: hard + "setprototypeof@npm:1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" @@ -9683,7 +10761,7 @@ __metadata: languageName: node linkType: hard -"sha.js@npm:^2.4.0": +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": version: 2.4.11 resolution: "sha.js@npm:2.4.11" dependencies: @@ -9714,6 +10792,15 @@ __metadata: languageName: node linkType: hard +"shallow-clone@npm:^3.0.0": + version: 3.0.1 + resolution: "shallow-clone@npm:3.0.1" + dependencies: + kind-of: ^6.0.2 + checksum: 39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7 + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -9768,9 +10855,9 @@ __metadata: linkType: hard "signal-exit@npm:^4.0.1": - version: 4.0.2 - resolution: "signal-exit@npm:4.0.2" - checksum: 41f5928431cc6e91087bf0343db786a6313dd7c6fd7e551dbc141c95bb5fb26663444fd9df8ea47c5d7fc202f60aa7468c3162a9365cbb0615fc5e1b1328fe31 + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 languageName: node linkType: hard @@ -9813,7 +10900,18 @@ __metadata: languageName: node linkType: hard -"socks@npm:^2.6.2": +"socks-proxy-agent@npm:^8.0.1": + version: 8.0.1 + resolution: "socks-proxy-agent@npm:8.0.1" + dependencies: + agent-base: ^7.0.1 + debug: ^4.3.4 + socks: ^2.7.1 + checksum: f6538fd16cb545094d20b9a1ae97bb2c4ddd150622ad7cc6b64c89c889d8847b7bac179757838ce5487cbac49a499537e3991c975fe13b152b76b10027470dfb + languageName: node + linkType: hard + +"socks@npm:^2.6.2, socks@npm:^2.7.1": version: 2.7.1 resolution: "socks@npm:2.7.1" dependencies: @@ -9840,6 +10938,16 @@ __metadata: languageName: node linkType: hard +"source-map-support@npm:~0.5.20": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: ^1.0.0 + source-map: ^0.6.0 + checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 + languageName: node + linkType: hard + "source-map@npm:^0.5.0": version: 0.5.7 resolution: "source-map@npm:0.5.7" @@ -9847,7 +10955,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.6.0, source-map@npm:^0.6.1": +"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 @@ -9943,13 +11051,23 @@ __metadata: languageName: node linkType: hard -"statuses@npm:>= 1.5.0 < 2, statuses@npm:^1.5.0": +"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:^1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c languageName: node linkType: hard +"stream-browserify@npm:^3.0.0": + version: 3.0.0 + resolution: "stream-browserify@npm:3.0.0" + dependencies: + inherits: ~2.0.4 + readable-stream: ^3.5.0 + checksum: 4c47ef64d6f03815a9ca3874e2319805e8e8a85f3550776c47ce523b6f4c6cd57f40e46ec6a9ab8ad260fde61863c2718f250d3bedb3fe9052444eb9abfd9921 + languageName: node + linkType: hard + "stream-combiner@npm:~0.0.4": version: 0.0.4 resolution: "stream-combiner@npm:0.0.4" @@ -9975,6 +11093,16 @@ __metadata: languageName: node linkType: hard +"streamx@npm:^2.15.0": + version: 2.15.0 + resolution: "streamx@npm:2.15.0" + dependencies: + fast-fifo: ^1.1.0 + queue-tick: ^1.0.1 + checksum: 6f1dcdc326d57fa4ec0c2aade730b701d28e4e206047c230c6b3f6ac25b28f79809533342dd3e11861237dbd14f3af9ab83be972f569ccdf5eddc5c7ffeb657a + languageName: node + linkType: hard + "string-argv@npm:^0.3.1": version: 0.3.2 resolution: "string-argv@npm:0.3.2" @@ -10111,7 +11239,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -10190,13 +11318,35 @@ __metadata: languageName: node linkType: hard -"tapable@npm:^2.2.0": +"tapable@npm:^2.1.1, tapable@npm:^2.2.0": version: 2.2.1 resolution: "tapable@npm:2.2.1" checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 languageName: node linkType: hard +"tar-fs@npm:3.0.4": + version: 3.0.4 + resolution: "tar-fs@npm:3.0.4" + dependencies: + mkdirp-classic: ^0.5.2 + pump: ^3.0.0 + tar-stream: ^3.1.5 + checksum: dcf4054f9e92ca0efe61c2b3f612914fb259a47900aa908a63106513a6d006c899b426ada53eb88d9dbbf089b5724c8e90b96a2c4ca6171845fa14203d734e30 + languageName: node + linkType: hard + +"tar-stream@npm:^3.1.5": + version: 3.1.6 + resolution: "tar-stream@npm:3.1.6" + dependencies: + b4a: ^1.6.4 + fast-fifo: ^1.2.0 + streamx: ^2.15.0 + checksum: f3627f918581976e954ff03cb8d370551053796b82564f8c7ca8fac84c48e4d042026d0854fc222171a34ff9c682b72fae91be9c9b0a112d4c54f9e4f443e9c5 + languageName: node + linkType: hard + "tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.1.15 resolution: "tar@npm:6.1.15" @@ -10211,6 +11361,42 @@ __metadata: languageName: node linkType: hard +"terser-webpack-plugin@npm:^5.3.7": + version: 5.3.9 + resolution: "terser-webpack-plugin@npm:5.3.9" + dependencies: + "@jridgewell/trace-mapping": ^0.3.17 + jest-worker: ^27.4.5 + schema-utils: ^3.1.1 + serialize-javascript: ^6.0.1 + terser: ^5.16.8 + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 41705713d6f9cb83287936b21e27c658891c78c4392159f5148b5623f0e8c48559869779619b058382a4c9758e7820ea034695e57dc7c474b4962b79f553bc5f + languageName: node + linkType: hard + +"terser@npm:^5.16.8": + version: 5.19.2 + resolution: "terser@npm:5.19.2" + dependencies: + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 + commander: ^2.20.0 + source-map-support: ~0.5.20 + bin: + terser: bin/terser + checksum: e059177775b4d4f4cff219ad89293175aefbd1b081252270444dc83e42a2c5f07824eb2a85eae6e22ef6eb7ef04b21af36dd7d1dd7cfb93912310e57d416a205 + languageName: node + linkType: hard + "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -10229,7 +11415,7 @@ __metadata: languageName: node linkType: hard -"through@npm:2, through@npm:~2.3, through@npm:~2.3.1": +"through@npm:2, through@npm:^2.3.8, through@npm:~2.3, through@npm:~2.3.1": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd @@ -10370,6 +11556,21 @@ __metadata: languageName: node linkType: hard +"ts-loader@npm:^9.4.4": + version: 9.4.4 + resolution: "ts-loader@npm:9.4.4" + dependencies: + chalk: ^4.1.0 + enhanced-resolve: ^5.0.0 + micromatch: ^4.0.0 + semver: ^7.3.4 + peerDependencies: + typescript: "*" + webpack: ^5.0.0 + checksum: 8e5e6b839b0edfa40d2156c880d88ccab58226894ea5978221bc48c7db3215e2e856bfd0093f148e925a2befc42d6c94cafa9a994a7da274541efaa916012b63 + languageName: node + linkType: hard + "ts-node@npm:^10.9.1": version: 10.9.1 resolution: "ts-node@npm:10.9.1" @@ -10424,7 +11625,7 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.14.1": +"tsconfig-paths@npm:^3.14.2": version: 3.14.2 resolution: "tsconfig-paths@npm:3.14.2" dependencies: @@ -10436,10 +11637,17 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0": - version: 2.6.0 - resolution: "tslib@npm:2.6.0" - checksum: c01066038f950016a18106ddeca4649b4d76caa76ec5a31e2a26e10586a59fceb4ee45e96719bf6c715648e7c14085a81fee5c62f7e9ebee68e77a5396e5538f +"tslib@npm:2.5.0": + version: 2.5.0 + resolution: "tslib@npm:2.5.0" + checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 + languageName: node + linkType: hard + +"tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.0": + version: 2.6.1 + resolution: "tslib@npm:2.6.1" + checksum: b0d176d176487905b66ae4d5856647df50e37beea7571c53b8d10ba9222c074b81f1410fb91da13debaf2cbc970663609068bdebafa844ea9d69b146527c38fe languageName: node linkType: hard @@ -10450,6 +11658,13 @@ __metadata: languageName: node linkType: hard +"tty-browserify@npm:^0.0.1": + version: 0.0.1 + resolution: "tty-browserify@npm:0.0.1" + checksum: 93b745d43fa5a7d2b948fa23be8d313576d1d884b48acd957c07710bac1c0d8ac34c0556ad4c57c73d36e11741763ef66b3fb4fb97b06b7e4d525315a3cd45f5 + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -10645,6 +11860,16 @@ __metadata: languageName: node linkType: hard +"unbzip2-stream@npm:1.4.3": + version: 1.4.3 + resolution: "unbzip2-stream@npm:1.4.3" + dependencies: + buffer: ^5.2.1 + through: ^2.3.8 + checksum: 0e67c4a91f4fa0fc7b4045f8b914d3498c2fc2e8c39c359977708ec85ac6d6029840e97f508675fdbdf21fcb8d276ca502043406f3682b70f075e69aae626d1d + languageName: node + linkType: hard + "undici@npm:^5.12.0": version: 5.22.1 resolution: "undici@npm:5.22.1" @@ -10672,6 +11897,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff + languageName: node + linkType: hard + "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" @@ -10737,6 +11969,19 @@ __metadata: languageName: node linkType: hard +"util@npm:^0.12.5": + version: 0.12.5 + resolution: "util@npm:0.12.5" + dependencies: + inherits: ^2.0.3 + is-arguments: ^1.0.4 + is-generator-function: ^1.0.7 + is-typed-array: ^1.1.3 + which-typed-array: ^1.1.2 + checksum: 705e51f0de5b446f4edec10739752ac25856541e0254ea1e7e45e5b9f9b0cb105bc4bd415736a6210edc68245a7f903bf085ffb08dd7deb8a0e847f60538a38a + languageName: node + linkType: hard + "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" @@ -10779,17 +12024,39 @@ __metadata: languageName: node linkType: hard +"viem@npm:1.4.2": + version: 1.4.2 + resolution: "viem@npm:1.4.2" + dependencies: + "@adraffy/ens-normalize": 1.9.0 + "@noble/curves": 1.0.0 + "@noble/hashes": 1.3.0 + "@scure/bip32": 1.3.0 + "@scure/bip39": 1.2.0 + "@wagmi/chains": 1.6.0 + abitype: 0.9.3 + isomorphic-ws: 5.0.0 + ws: 8.12.0 + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 225f11847d4b4c1d19ada3d29638e138034702f251f955707766ef24e2a438effcc9130f3465d38657e5e88af19cf331a9eca9f40d4a6460454068be765babc1 + languageName: node + linkType: hard + "viem@npm:^1.2.5": - version: 1.2.13 - resolution: "viem@npm:1.2.13" + version: 1.5.0 + resolution: "viem@npm:1.5.0" dependencies: "@adraffy/ens-normalize": 1.9.0 "@noble/curves": 1.0.0 "@noble/hashes": 1.3.0 "@scure/bip32": 1.3.0 "@scure/bip39": 1.2.0 - "@wagmi/chains": 1.2.0 - abitype: 0.8.11 + "@wagmi/chains": 1.6.0 + abitype: 0.9.3 isomorphic-ws: 5.0.0 ws: 8.12.0 peerDependencies: @@ -10797,17 +12064,17 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 8c6c47ee2fb2894e7caac6319a77e1d7b821961dc46d0f28add4522c718fcf83d2d85521bb36a6b51ed081514fe503c73d3c5803b8abee89dd5604e667ff863b + checksum: 28ff9e64a3076b339182a3bab5dc442222400da4c66d258bf35e961f9a2e555ba2b0f3b30bdb87f63142682530c25f0807113580fbf888f840930f39df4bd8e3 languageName: node linkType: hard "vite@npm:^4.2.3": - version: 4.4.3 - resolution: "vite@npm:4.4.3" + version: 4.4.8 + resolution: "vite@npm:4.4.8" dependencies: esbuild: ^0.18.10 fsevents: ~2.3.2 - postcss: ^8.4.25 + postcss: ^8.4.26 rollup: ^3.25.2 peerDependencies: "@types/node": ">= 14" @@ -10837,7 +12104,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 2f7c90de35c840ed7f33000d65006053885c0342aa7c19cee7369d7b3d92473a9bae790f910eb3e9900bdb7ca89559a772ee4782f35636ec4e6bd10717e7f5ff + checksum: e8ffe688f8a7396b1357778f00cb06d1f3dadad200823c47a1955cf52774a0cbff5ac4d6a8f8d09e26c1d4e588e5815956f9eba02ae301e77a36c3d181a1bc86 languageName: node linkType: hard @@ -10864,6 +12131,16 @@ __metadata: languageName: node linkType: hard +"watchpack@npm:^2.4.0": + version: 2.4.0 + resolution: "watchpack@npm:2.4.0" + dependencies: + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.1.2 + checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 + languageName: node + linkType: hard + "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -10871,6 +12148,92 @@ __metadata: languageName: node linkType: hard +"webpack-cli@npm:^5.1.4": + version: 5.1.4 + resolution: "webpack-cli@npm:5.1.4" + dependencies: + "@discoveryjs/json-ext": ^0.5.0 + "@webpack-cli/configtest": ^2.1.1 + "@webpack-cli/info": ^2.0.2 + "@webpack-cli/serve": ^2.0.5 + colorette: ^2.0.14 + commander: ^10.0.1 + cross-spawn: ^7.0.3 + envinfo: ^7.7.3 + fastest-levenshtein: ^1.0.12 + import-local: ^3.0.2 + interpret: ^3.1.1 + rechoir: ^0.8.0 + webpack-merge: ^5.7.3 + peerDependencies: + webpack: 5.x.x + peerDependenciesMeta: + "@webpack-cli/generators": + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + bin: + webpack-cli: bin/cli.js + checksum: 3a4ad0d0342a6815c850ee4633cc2a8a5dae04f918e7847f180bf24ab400803cf8a8943707ffbed03eb20fe6ce647f996f60a2aade87b0b4a9954da3da172ce0 + languageName: node + linkType: hard + +"webpack-merge@npm:^5.7.3": + version: 5.9.0 + resolution: "webpack-merge@npm:5.9.0" + dependencies: + clone-deep: ^4.0.1 + wildcard: ^2.0.0 + checksum: 64fe2c23aacc5f19684452a0e84ec02c46b990423aee6fcc5c18d7d471155bd14e9a6adb02bd3656eb3e0ac2532c8e97d69412ad14c97eeafe32fa6d10050872 + languageName: node + linkType: hard + +"webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 + languageName: node + linkType: hard + +"webpack@npm:^5.88.2": + version: 5.88.2 + resolution: "webpack@npm:5.88.2" + dependencies: + "@types/eslint-scope": ^3.7.3 + "@types/estree": ^1.0.0 + "@webassemblyjs/ast": ^1.11.5 + "@webassemblyjs/wasm-edit": ^1.11.5 + "@webassemblyjs/wasm-parser": ^1.11.5 + acorn: ^8.7.1 + acorn-import-assertions: ^1.9.0 + browserslist: ^4.14.5 + chrome-trace-event: ^1.0.2 + enhanced-resolve: ^5.15.0 + es-module-lexer: ^1.2.1 + eslint-scope: 5.1.1 + events: ^3.2.0 + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.2.9 + json-parse-even-better-errors: ^2.3.1 + loader-runner: ^4.2.0 + mime-types: ^2.1.27 + neo-async: ^2.6.2 + schema-utils: ^3.2.0 + tapable: ^2.1.1 + terser-webpack-plugin: ^5.3.7 + watchpack: ^2.4.0 + webpack-sources: ^3.2.3 + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 79476a782da31a21f6dd38fbbd06b68da93baf6a62f0d08ca99222367f3b8668f5a1f2086b7bb78e23172e31fa6df6fa7ab09b25e827866c4fc4dc2b30443ce2 + languageName: node + linkType: hard + "whatwg-url@npm:^5.0.0": version: 5.0.0 resolution: "whatwg-url@npm:5.0.0" @@ -10903,7 +12266,7 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11": +"which-typed-array@npm:^1.1.10, which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2": version: 1.1.11 resolution: "which-typed-array@npm:1.1.11" dependencies: @@ -10936,6 +12299,13 @@ __metadata: languageName: node linkType: hard +"wildcard@npm:^2.0.0": + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c + languageName: node + linkType: hard + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -10990,7 +12360,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.13.0": +"ws@npm:8.13.0, ws@npm:^8.13.0": version: 8.13.0 resolution: "ws@npm:8.13.0" peerDependencies: @@ -11016,12 +12386,12 @@ __metadata: linkType: hard "xml2js@npm:^0.6.0": - version: 0.6.0 - resolution: "xml2js@npm:0.6.0" + version: 0.6.2 + resolution: "xml2js@npm:0.6.2" dependencies: sax: ">=0.6.0" xmlbuilder: ~11.0.0 - checksum: 437f353fd66d367bf158e9555a0625df9965d944e499728a5c6bc92a54a2763179b144f14b7e1c725040f56bbd22b0fa6cfcb09ec4faf39c45ce01efe631f40b + checksum: 458a83806193008edff44562c0bdb982801d61ee7867ae58fd35fab781e69e17f40dfeb8fc05391a4648c9c54012066d3955fe5d993ffbe4dc63399023f32ac2 languageName: node linkType: hard @@ -11084,6 +12454,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:17.7.1": + version: 17.7.1 + resolution: "yargs@npm:17.7.1" + 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 + checksum: 3d8a43c336a4942bc68080768664aca85c7bd406f018bad362fd255c41c8f4e650277f42fd65d543fce99e084124ddafee7bbfc1a5c6a8fda4cec78609dcf8d4 + languageName: node + linkType: hard + "yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" @@ -11099,6 +12484,16 @@ __metadata: languageName: node linkType: hard +"yauzl@npm:^2.10.0": + version: 2.10.0 + resolution: "yauzl@npm:2.10.0" + dependencies: + buffer-crc32: ~0.2.3 + fd-slicer: ~1.1.0 + checksum: 7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b + languageName: node + linkType: hard + "ylru@npm:^1.2.0": version: 1.3.2 resolution: "ylru@npm:1.3.2"