From 005233a8c8e71ed299cdab6e847dfecd7feb4270 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Sun, 20 Apr 2025 10:12:27 +0000 Subject: [PATCH 01/10] Constrain proposed block header. --- l1-contracts/src/core/RollupCore.sol | 5 +- l1-contracts/src/core/interfaces/IRollup.sol | 4 +- .../src/core/libraries/ConstantsGen.sol | 6 +- .../core/libraries/rollup/EpochProofLib.sol | 19 +- .../src/core/libraries/rollup/HeaderLib.sol | 142 +--- .../src/core/libraries/rollup/ProposeLib.sol | 60 +- .../src/core/libraries/rollup/STFLib.sol | 2 +- l1-contracts/test/MultiProof.t.sol | 5 +- l1-contracts/test/Rollup.t.sol | 148 +--- l1-contracts/test/base/DecoderBase.sol | 194 ++++- l1-contracts/test/base/RollupBase.sol | 96 +-- l1-contracts/test/benchmark/happy.t.sol | 56 +- l1-contracts/test/decoders/Decoders.t.sol | 98 +-- l1-contracts/test/fees/FeeRollup.t.sol | 39 +- l1-contracts/test/fixtures/empty_block_1.json | 55 +- l1-contracts/test/fixtures/empty_block_2.json | 57 +- l1-contracts/test/fixtures/mixed_block_1.json | 125 ++- l1-contracts/test/fixtures/mixed_block_2.json | 127 ++- .../test/fixtures/single_tx_block_1.json | 77 +- .../test/fixtures/single_tx_block_2.json | 79 +- l1-contracts/test/ignition.t.sol | 5 +- .../ValidatorSelection.t.sol | 47 +- .../crates/private-kernel-init/Prover.toml | 94 +-- .../crates/private-kernel-inner/Prover.toml | 244 +++--- .../crates/private-kernel-reset/Prover.toml | 56 +- .../private-kernel-tail-to-public/Prover.toml | 44 +- .../crates/private-kernel-tail/Prover.toml | 152 ++-- .../crates/rollup-base-private/Prover.toml | 264 +++---- .../crates/rollup-base-public/Prover.toml | 284 +++---- .../crates/rollup-block-merge/Prover.toml | 708 ++++++++++------- .../crates/rollup-block-root/Prover.toml | 511 +++++++------ ...block_root_or_block_merge_public_inputs.nr | 5 + .../block_merge/block_merge_rollup_inputs.nr | 4 + .../block_root_rollup_output_composer.nr | 50 +- .../crates/rollup-lib/src/components.nr | 10 + .../rollup-lib/src/root/root_rollup_inputs.nr | 4 + .../src/root/root_rollup_public_inputs.nr | 2 + .../crates/rollup-merge/Prover.toml | 480 ++++++------ .../crates/rollup-root/Prover.toml | 722 ++++++++++-------- .../crates/types/src/address/eth_address.nr | 9 + .../crates/types/src/constants.nr | 25 +- .../crates/types/src/lib.nr | 1 + .../crates/types/src/proposed_block_header.nr | 155 ++++ .../archiver/src/archiver/archiver.test.ts | 18 +- .../archiver/src/archiver/archiver.ts | 18 +- .../archiver/src/archiver/data_retrieval.ts | 99 ++- yarn-project/constants/src/constants.gen.ts | 6 +- .../composed/integration_l1_publisher.test.ts | 57 +- .../src/e2e_p2p/gossip_network.test.ts | 6 +- .../end-to-end/src/e2e_p2p/reex.test.ts | 1 + .../src/serialize/buffer_reader.test.ts | 23 +- .../foundation/src/serialize/buffer_reader.ts | 21 +- .../foundation/src/serialize/free_funcs.ts | 13 + .../src/conversion/server.ts | 7 + yarn-project/p2p/src/client/p2p_client.ts | 4 +- .../attestation_pool_test_suite.ts | 8 +- .../attestation_pool/kv_attestation_pool.ts | 4 +- .../memory_attestation_pool.ts | 4 +- .../src/mem_pools/attestation_pool/mocks.ts | 4 +- .../attestation_validator.ts | 2 +- .../block_proposal_validator.ts | 2 +- .../p2p/src/services/libp2p/libp2p_service.ts | 14 +- .../src/prover-node-publisher.test.ts | 1 + .../global_variable_builder/global_builder.ts | 22 +- .../src/publisher/sequencer-publisher.test.ts | 11 +- .../src/publisher/sequencer-publisher.ts | 33 +- .../src/sequencer/sequencer.test.ts | 12 +- .../src/sequencer/sequencer.ts | 77 +- yarn-project/stdlib/src/block/l2_block.ts | 60 -- .../stdlib/src/p2p/block_attestation.ts | 26 +- yarn-project/stdlib/src/p2p/block_proposal.ts | 20 +- .../stdlib/src/p2p/consensus_payload.ts | 19 +- ...block_root_or_block_merge_public_inputs.ts | 6 + yarn-project/stdlib/src/rollup/root_rollup.ts | 4 + yarn-project/stdlib/src/tests/factories.ts | 2 + yarn-project/stdlib/src/tests/mocks.ts | 18 +- .../proposed_block_header.test.ts.snap | 5 + yarn-project/stdlib/src/tx/block_header.ts | 14 + yarn-project/stdlib/src/tx/index.ts | 1 + .../src/tx/proposed_block_header.test.ts | 41 + .../stdlib/src/tx/proposed_block_header.ts | 168 ++++ yarn-project/stdlib/src/types/shared.ts | 5 + .../src/duties/validation_service.test.ts | 3 +- .../src/duties/validation_service.ts | 18 +- .../validator-client/src/validator.test.ts | 12 +- .../validator-client/src/validator.ts | 31 +- 86 files changed, 3361 insertions(+), 2829 deletions(-) create mode 100644 noir-projects/noir-protocol-circuits/crates/types/src/proposed_block_header.nr create mode 100644 yarn-project/stdlib/src/tx/__snapshots__/proposed_block_header.test.ts.snap create mode 100644 yarn-project/stdlib/src/tx/proposed_block_header.test.ts create mode 100644 yarn-project/stdlib/src/tx/proposed_block_header.ts diff --git a/l1-contracts/src/core/RollupCore.sol b/l1-contracts/src/core/RollupCore.sol index 20dc0daf00f7..7ac4e852dfc6 100644 --- a/l1-contracts/src/core/RollupCore.sol +++ b/l1-contracts/src/core/RollupCore.sol @@ -210,7 +210,10 @@ contract RollupCore is function propose( ProposeArgs calldata _args, Signature[] memory _signatures, - bytes calldata _blobInput + bytes calldata _blobInput, + // TODO: Temporary sending it as calldata so that the block source can reconstruct the full block header. + // Should be removed once the block source can refer to the world state to access the state reference. + bytes calldata _stateReference ) external override(IRollupCore) { ExtRollupLib.propose(_args, _signatures, _blobInput, checkBlob); } diff --git a/l1-contracts/src/core/interfaces/IRollup.sol b/l1-contracts/src/core/interfaces/IRollup.sol index dc1174027e7f..633e9647d934 100644 --- a/l1-contracts/src/core/interfaces/IRollup.sol +++ b/l1-contracts/src/core/interfaces/IRollup.sol @@ -35,6 +35,7 @@ struct SubmitEpochRootProofArgs { struct BlockLog { bytes32 archive; + bytes32 headerHash; // hash of the proposed block header Slot slotNumber; } @@ -146,7 +147,8 @@ interface IRollupCore { function propose( ProposeArgs calldata _args, Signature[] memory _signatures, - bytes calldata _blobInput + bytes calldata _blobInput, + bytes calldata _stateReference ) external; function submitEpochRootProof(SubmitEpochRootProofArgs calldata _args) external; diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 96728ea9fe8b..1b13869742bc 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -193,6 +193,8 @@ library Constants { uint256 internal constant TOTAL_MANA_USED_LENGTH = 1; uint256 internal constant BLOCK_HEADER_LENGTH = 25; uint256 internal constant BLOCK_HEADER_LENGTH_BYTES = 648; + uint256 internal constant PROPOSED_BLOCK_HEADER_LENGTH = 12; + uint256 internal constant PROPOSED_BLOCK_HEADER_LENGTH_BYTES = 348; uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 724; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 908; uint256 internal constant PRIVATE_CONTEXT_INPUTS_LENGTH = 40; @@ -214,8 +216,8 @@ library Constants { uint256 internal constant PRIVATE_TO_ROLLUP_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 782; uint256 internal constant CONSTANT_ROLLUP_DATA_LENGTH = 13; uint256 internal constant BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; - uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 984; - uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 970; + uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 1032; + uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 1018; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol b/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol index f3238a23bb4b..9ee628b84cc1 100644 --- a/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol +++ b/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol @@ -116,12 +116,6 @@ library EpochProofLib { bytes calldata _blobPublicInputs ) internal view returns (bytes32[] memory) { RollupStore storage rollupStore = STFLib.getStorage(); - // Args are defined as an array because Solidity complains with "stack too deep" otherwise - // 0 bytes32 _previousArchive, - // 1 bytes32 _endArchive, - // 2 bytes32 _endTimestamp, - // 3 bytes32 _outHash, - // 4 bytes32 _proverId, // TODO(#7373): Public inputs are not fully verified @@ -154,6 +148,7 @@ library EpochProofLib { // end_timestamp: u64, // end_block_number: Field, // out_hash: Field, + // proposedBlockHeaderHashes: [Field; Constants.AZTEC_MAX_EPOCH_DURATION], // fees: [FeeRecipient; Constants.AZTEC_MAX_EPOCH_DURATION], // vk_tree_root: Field, // protocol_contract_tree_root: Field, @@ -185,12 +180,18 @@ library EpochProofLib { publicInputs[6] = _args.outHash; } + for (uint256 i = 0; i < Constants.AZTEC_MAX_EPOCH_DURATION; i++) { + publicInputs[7 + i] = rollupStore.blocks[_start + i].headerHash; + } + + uint256 offset = 7 + Constants.AZTEC_MAX_EPOCH_DURATION; + uint256 feesLength = Constants.AZTEC_MAX_EPOCH_DURATION * 2; - // fees[9 to (9+feesLength-1)]: array of recipient-value pairs + // fees[2n to 2n + 1]: a fee element, which contains of a recipient and a value for (uint256 i = 0; i < feesLength; i++) { - publicInputs[7 + i] = _fees[i]; + publicInputs[offset + i] = _fees[i]; } - uint256 offset = 7 + feesLength; + offset += feesLength; // vk_tree_root publicInputs[offset] = rollupStore.config.vkTreeRoot; diff --git a/l1-contracts/src/core/libraries/rollup/HeaderLib.sol b/l1-contracts/src/core/libraries/rollup/HeaderLib.sol index 5db6291fc0a5..c881bade194c 100644 --- a/l1-contracts/src/core/libraries/rollup/HeaderLib.sol +++ b/l1-contracts/src/core/libraries/rollup/HeaderLib.sol @@ -3,44 +3,16 @@ pragma solidity >=0.8.27; import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; +import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; import {Errors} from "@aztec/core/libraries/Errors.sol"; import {Slot, Timestamp} from "@aztec/core/libraries/TimeLib.sol"; -struct AppendOnlyTreeSnapshot { - bytes32 root; - uint32 nextAvailableLeafIndex; -} - -struct PartialStateReference { - AppendOnlyTreeSnapshot noteHashTree; - AppendOnlyTreeSnapshot nullifierTree; - AppendOnlyTreeSnapshot contractTree; - AppendOnlyTreeSnapshot publicDataTree; -} - -struct StateReference { - AppendOnlyTreeSnapshot l1ToL2MessageTree; - // Note: Can't use "partial" name here as in protocol specs because it is a reserved solidity keyword - PartialStateReference partialStateReference; -} - struct GasFees { uint256 feePerDaGas; uint256 feePerL2Gas; } -struct GlobalVariables { - uint256 chainId; - uint256 version; - uint256 blockNumber; - Slot slotNumber; - Timestamp timestamp; - address coinbase; - bytes32 feeRecipient; - GasFees gasFees; -} - struct ContentCommitment { uint256 numTxs; bytes32 blobsHash; @@ -49,11 +21,13 @@ struct ContentCommitment { } struct Header { - AppendOnlyTreeSnapshot lastArchive; + bytes32 lastArchiveRoot; ContentCommitment contentCommitment; - StateReference stateReference; - GlobalVariables globalVariables; - uint256 totalFees; + Slot slotNumber; + Timestamp timestamp; + address coinbase; + bytes32 feeRecipient; + GasFees gasFees; uint256 totalManaUsed; } @@ -71,44 +45,24 @@ struct Header { * * | byte start | num bytes | name * | --- | --- | --- - * | | | Header { - * | 0x0000 | 0x20 | lastArchive.root - * | 0x0020 | 0x04 | lastArchive.nextAvailableLeafIndex - * | | | ContentCommitment { - * | 0x0024 | 0x20 | numTxs - * | 0x0044 | 0x20 | blobsHash - * | 0x0064 | 0x20 | inHash - * | 0x0084 | 0x20 | outHash - * | | | StateReference { - * | 0x00a4 | 0x20 | l1ToL2MessageTree.root - * | 0x00c4 | 0x04 | l1ToL2MessageTree.nextAvailableLeafIndex - * | | | PartialStateReference { - * | 0x00c8 | 0x20 | noteHashTree.root - * | 0x00e8 | 0x04 | noteHashTree.nextAvailableLeafIndex - * | 0x00ec | 0x20 | nullifierTree.root - * | 0x010c | 0x04 | nullifierTree.nextAvailableLeafIndex - * | 0x0110 | 0x20 | publicDataTree.root - * | 0x0130 | 0x04 | publicDataTree.nextAvailableLeafIndex - * | | | } - * | | | } - * | | | GlobalVariables { - * | 0x0134 | 0x20 | chainId - * | 0x0154 | 0x20 | version - * | 0x0174 | 0x20 | blockNumber - * | 0x0194 | 0x20 | slotNumber - * | 0x01b4 | 0x20 | timestamp - * | 0x01d4 | 0x14 | coinbase - * | 0x01e8 | 0x20 | feeRecipient - * | 0x0208 | 0x20 | gasFees.feePerDaGas - * | 0x0228 | 0x20 | gasFees.feePerL2Gas - * | | | } + * | 0x0000 | 0x20 | lastArchiveRoot + * | | | ContentCommitment { + * | 0x0020 | 0x20 | numTxs + * | 0x0040 | 0x20 | blobsHash + * | 0x0060 | 0x20 | inHash + * | 0x0080 | 0x20 | outHash * | | | } - * | 0x0248 | 0x20 | total_fees - * | 0x0268 | 0x20 | total_mana_used + * | 0x00a0 | 0x20 | slotNumber + * | 0x00c0 | 0x08 | timestamp + * | 0x00c8 | 0x14 | coinbase + * | 0x00dc | 0x20 | feeRecipient + * | 0x00fc | 0x20 | gasFees.feePerDaGas + * | 0x011c | 0x20 | gasFees.feePerL2Gas + * | 0x013c | 0x20 | totalManaUsed * | --- | --- | --- */ library HeaderLib { - uint256 private constant HEADER_LENGTH = Constants.BLOCK_HEADER_LENGTH_BYTES; // Header byte length + uint256 private constant HEADER_LENGTH = Constants.PROPOSED_BLOCK_HEADER_LENGTH_BYTES; // Header byte length /** * @notice Decodes the header @@ -124,47 +78,29 @@ library HeaderLib { Header memory header; // Reading lastArchive - header.lastArchive = AppendOnlyTreeSnapshot( - bytes32(_header[0x0000:0x0020]), uint32(bytes4(_header[0x0020:0x0024])) - ); + header.lastArchiveRoot = bytes32(_header[0x0000:0x0020]); // Reading ContentCommitment - header.contentCommitment.numTxs = uint256(bytes32(_header[0x0024:0x0044])); - header.contentCommitment.blobsHash = bytes32(_header[0x0044:0x0064]); - header.contentCommitment.inHash = bytes32(_header[0x0064:0x0084]); - header.contentCommitment.outHash = bytes32(_header[0x0084:0x00a4]); - - // Reading StateReference - header.stateReference.l1ToL2MessageTree = AppendOnlyTreeSnapshot( - bytes32(_header[0x00a4:0x00c4]), uint32(bytes4(_header[0x00c4:0x00c8])) - ); - header.stateReference.partialStateReference.noteHashTree = AppendOnlyTreeSnapshot( - bytes32(_header[0x00c8:0x00e8]), uint32(bytes4(_header[0x00e8:0x00ec])) - ); - header.stateReference.partialStateReference.nullifierTree = AppendOnlyTreeSnapshot( - bytes32(_header[0x00ec:0x010c]), uint32(bytes4(_header[0x010c:0x0110])) - ); - header.stateReference.partialStateReference.publicDataTree = AppendOnlyTreeSnapshot( - bytes32(_header[0x0110:0x0130]), uint32(bytes4(_header[0x0130:0x0134])) - ); - - // Reading GlobalVariables - header.globalVariables.chainId = uint256(bytes32(_header[0x0134:0x0154])); - header.globalVariables.version = uint256(bytes32(_header[0x0154:0x0174])); - header.globalVariables.blockNumber = uint256(bytes32(_header[0x0174:0x0194])); - header.globalVariables.slotNumber = Slot.wrap(uint256(bytes32(_header[0x0194:0x01b4]))); - header.globalVariables.timestamp = Timestamp.wrap(uint256(bytes32(_header[0x01b4:0x01d4]))); - header.globalVariables.coinbase = address(bytes20(_header[0x01d4:0x01e8])); - header.globalVariables.feeRecipient = bytes32(_header[0x01e8:0x0208]); - header.globalVariables.gasFees.feePerDaGas = uint256(bytes32(_header[0x0208:0x0228])); - header.globalVariables.gasFees.feePerL2Gas = uint256(bytes32(_header[0x0228:0x0248])); - - // Reading totalFees - header.totalFees = uint256(bytes32(_header[0x0248:0x0268])); + header.contentCommitment.numTxs = uint256(bytes32(_header[0x0020:0x0040])); + header.contentCommitment.blobsHash = bytes32(_header[0x0040:0x0060]); + header.contentCommitment.inHash = bytes32(_header[0x0060:0x0080]); + header.contentCommitment.outHash = bytes32(_header[0x0080:0x00a0]); + + // Reading partial GlobalVariables + header.slotNumber = Slot.wrap(uint256(bytes32(_header[0x00a0:0x00c0]))); + header.timestamp = Timestamp.wrap(uint256(uint64(bytes8(_header[0x00c0:0x00c8])))); + header.coinbase = address(bytes20(_header[0x00c8:0x00dc])); + header.feeRecipient = bytes32(_header[0x00dc:0x00fc]); + header.gasFees.feePerDaGas = uint256(bytes32(_header[0x00fc:0x011c])); + header.gasFees.feePerL2Gas = uint256(bytes32(_header[0x011c:0x013c])); // Reading totalManaUsed - header.totalManaUsed = uint256(bytes32(_header[0x0268:0x0288])); + header.totalManaUsed = uint256(bytes32(_header[0x013c:0x015c])); return header; } + + function hash(bytes memory _header) internal pure returns (bytes32) { + return Hash.sha256ToField(_header); + } } diff --git a/l1-contracts/src/core/libraries/rollup/ProposeLib.sol b/l1-contracts/src/core/libraries/rollup/ProposeLib.sol index 2ad05a1a704e..308b3b028e0c 100644 --- a/l1-contracts/src/core/libraries/rollup/ProposeLib.sol +++ b/l1-contracts/src/core/libraries/rollup/ProposeLib.sol @@ -28,12 +28,20 @@ struct ProposeArgs { bytes32[] txHashes; } +struct ProposePayload { + bytes32 archive; + OracleInput oracleInput; + bytes32 headerHash; + bytes32[] txHashes; +} + struct InterimProposeValues { bytes32[] blobHashes; bytes32 blobsHashesCommitment; bytes32 blobPublicInputsHash; bytes32 inHash; uint256 outboxMinsize; + bytes32 headerHash; } /** @@ -86,6 +94,8 @@ library ProposeLib { Header memory header = HeaderLib.decode(_args.header); + v.headerHash = HeaderLib.hash(_args.header); + ValidatorSelectionLib.setupEpoch(StakingLib.getStorage()); ManaBaseFeeComponents memory components = @@ -95,7 +105,14 @@ library ProposeLib { ValidateHeaderArgs({ header: header, attestations: _signatures, - digest: digest(_args), + digest: digest( + ProposePayload({ + archive: _args.archive, + oracleInput: _args.oracleInput, + headerHash: v.headerHash, + txHashes: _args.txHashes + }) + ), currentTime: Timestamp.wrap(block.timestamp), manaBaseFee: FeeLib.summedBaseFee(components), blobsHashesCommitment: v.blobsHashesCommitment, @@ -107,7 +124,7 @@ library ProposeLib { uint256 blockNumber = ++rollupStore.tips.pendingBlockNumber; rollupStore.blocks[blockNumber] = - BlockLog({archive: _args.archive, slotNumber: header.globalVariables.slotNumber}); + BlockLog({archive: _args.archive, headerHash: v.headerHash, slotNumber: header.slotNumber}); FeeLib.writeFeeHeader( blockNumber, @@ -138,38 +155,19 @@ library ProposeLib { // @note: not view as sampling validators uses tstore function validateHeader(ValidateHeaderArgs memory _args) internal { - require( - block.chainid == _args.header.globalVariables.chainId, - Errors.Rollup__InvalidChainId(block.chainid, _args.header.globalVariables.chainId) - ); - require(_args.header.totalManaUsed <= FeeLib.getManaLimit(), Errors.Rollup__ManaLimitExceeded()); RollupStore storage rollupStore = STFLib.getStorage(); - require( - _args.header.globalVariables.version == rollupStore.config.version, - Errors.Rollup__InvalidVersion( - rollupStore.config.version, _args.header.globalVariables.version - ) - ); - uint256 pendingBlockNumber = STFLib.getEffectivePendingBlockNumber(_args.currentTime); - require( - _args.header.globalVariables.blockNumber == pendingBlockNumber + 1, - Errors.Rollup__InvalidBlockNumber( - pendingBlockNumber + 1, _args.header.globalVariables.blockNumber - ) - ); - bytes32 tipArchive = rollupStore.blocks[pendingBlockNumber].archive; require( - tipArchive == _args.header.lastArchive.root, - Errors.Rollup__InvalidArchive(tipArchive, _args.header.lastArchive.root) + tipArchive == _args.header.lastArchiveRoot, + Errors.Rollup__InvalidArchive(tipArchive, _args.header.lastArchiveRoot) ); - Slot slot = _args.header.globalVariables.slotNumber; + Slot slot = _args.header.slotNumber; Slot lastSlot = rollupStore.blocks[pendingBlockNumber].slotNumber; require(slot > lastSlot, Errors.Rollup__SlotAlreadyInChain(lastSlot, slot)); @@ -178,8 +176,8 @@ library ProposeLib { Timestamp timestamp = TimeLib.toTimestamp(slot); require( - _args.header.globalVariables.timestamp == timestamp, - Errors.Rollup__InvalidTimestamp(timestamp, _args.header.globalVariables.timestamp) + _args.header.timestamp == timestamp, + Errors.Rollup__InvalidTimestamp(timestamp, _args.header.timestamp) ); require( @@ -192,12 +190,10 @@ library ProposeLib { Errors.Rollup__UnavailableTxs(_args.header.contentCommitment.blobsHash) ); - require(_args.header.globalVariables.gasFees.feePerDaGas == 0, Errors.Rollup__NonZeroDaFee()); + require(_args.header.gasFees.feePerDaGas == 0, Errors.Rollup__NonZeroDaFee()); require( - _args.header.globalVariables.gasFees.feePerL2Gas == _args.manaBaseFee, - Errors.Rollup__InvalidManaBaseFee( - _args.manaBaseFee, _args.header.globalVariables.gasFees.feePerL2Gas - ) + _args.header.gasFees.feePerL2Gas == _args.manaBaseFee, + Errors.Rollup__InvalidManaBaseFee(_args.manaBaseFee, _args.header.gasFees.feePerL2Gas) ); ValidatorSelectionLib.verify( @@ -229,7 +225,7 @@ library ProposeLib { return FeeLib.getManaBaseFeeComponentsAt(blockOfInterest, _timestamp, _inFeeAsset); } - function digest(ProposeArgs memory _args) internal pure returns (bytes32) { + function digest(ProposePayload memory _args) internal pure returns (bytes32) { return keccak256(abi.encode(SignatureLib.SignatureDomainSeparator.blockAttestation, _args)); } } diff --git a/l1-contracts/src/core/libraries/rollup/STFLib.sol b/l1-contracts/src/core/libraries/rollup/STFLib.sol index 92c47761a2ac..68cefdaf3102 100644 --- a/l1-contracts/src/core/libraries/rollup/STFLib.sol +++ b/l1-contracts/src/core/libraries/rollup/STFLib.sol @@ -23,7 +23,7 @@ library STFLib { rollupStore.config.protocolContractTreeRoot = _genesisState.protocolContractTreeRoot; rollupStore.blocks[0] = - BlockLog({archive: _genesisState.genesisArchiveRoot, slotNumber: Slot.wrap(0)}); + BlockLog({archive: _genesisState.genesisArchiveRoot, headerHash: 0, slotNumber: Slot.wrap(0)}); } function prune() internal { diff --git a/l1-contracts/test/MultiProof.t.sol b/l1-contracts/test/MultiProof.t.sol index 13a3b8c52952..3471d2333c60 100644 --- a/l1-contracts/test/MultiProof.t.sol +++ b/l1-contracts/test/MultiProof.t.sol @@ -64,9 +64,8 @@ contract MultiProofTest is RollupBase { testERC20 = new TestERC20("test", "TEST", address(this)); DecoderBase.Full memory full = load(_name); - uint256 slotNumber = full.block.decodedHeader.globalVariables.slotNumber; - uint256 initialTime = - full.block.decodedHeader.globalVariables.timestamp - slotNumber * SLOT_DURATION; + uint256 slotNumber = full.block.decodedHeader.slotNumber; + uint256 initialTime = full.block.decodedHeader.timestamp - slotNumber * SLOT_DURATION; vm.warp(initialTime); } diff --git a/l1-contracts/test/Rollup.t.sol b/l1-contracts/test/Rollup.t.sol index 8d8baebc594a..58d7db00010f 100644 --- a/l1-contracts/test/Rollup.t.sol +++ b/l1-contracts/test/Rollup.t.sol @@ -80,9 +80,8 @@ contract RollupTest is RollupBase { testERC20 = new TestERC20("test", "TEST", address(this)); DecoderBase.Full memory full = load(_name); - uint256 slotNumber = full.block.decodedHeader.globalVariables.slotNumber; - uint256 initialTime = - full.block.decodedHeader.globalVariables.timestamp - slotNumber * SLOT_DURATION; + uint256 slotNumber = full.block.decodedHeader.slotNumber; + uint256 initialTime = full.block.decodedHeader.timestamp - slotNumber * SLOT_DURATION; vm.warp(initialTime); } @@ -217,7 +216,7 @@ contract RollupTest is RollupBase { txHashes: new bytes32[](0) }); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobHash.selector, blobHashes[0])); - rollup.propose(args, signatures, data.blobInputs); + rollup.propose(args, signatures, data.blobInputs, new bytes(0)); } function testInvalidBlobProof() public setUpFor("mixed_block_1") { @@ -244,7 +243,7 @@ contract RollupTest is RollupBase { txHashes: new bytes32[](0) }); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobProof.selector, blobHashes[0])); - rollup.propose(args, signatures, blobInput); + rollup.propose(args, signatures, blobInput, new bytes(0)); } function testRevertPrune() public setUpFor("mixed_block_1") { @@ -290,14 +289,13 @@ contract RollupTest is RollupBase { DecoderBase.Full memory full = load("mixed_block_1"); DecoderBase.Data memory data = full.block; bytes memory header = data.header; - assembly { - mstore(add(header, add(0x20, 0x0208)), 1) - } - header = _updateHeaderVersion(header, rollup.getVersion()); bytes32[] memory txHashes = new bytes32[](0); + // Tweak the da fee. + header = DecoderBase.updateHeaderDaFee(header, 1); + // We jump to the time of the block. (unless it is in the past) - vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, data.decodedHeader.timestamp)); skipBlobCheck(address(rollup)); @@ -308,21 +306,20 @@ contract RollupTest is RollupBase { oracleInput: OracleInput(0), txHashes: txHashes }); - rollup.propose(args, signatures, data.blobInputs); + rollup.propose(args, signatures, data.blobInputs, new bytes(0)); } function testInvalidL2Fee() public setUpFor("mixed_block_1") { DecoderBase.Full memory full = load("mixed_block_1"); DecoderBase.Data memory data = full.block; bytes memory header = data.header; - assembly { - mstore(add(header, add(0x20, 0x0228)), 1) - } - header = _updateHeaderVersion(header, rollup.getVersion()); bytes32[] memory txHashes = new bytes32[](0); + // Tweak the base fee. + header = DecoderBase.updateHeaderBaseFee(header, 1); + // We jump to the time of the block. (unless it is in the past) - vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, data.decodedHeader.timestamp)); skipBlobCheck(address(rollup)); @@ -338,7 +335,7 @@ contract RollupTest is RollupBase { oracleInput: OracleInput(0), txHashes: txHashes }); - rollup.propose(args, signatures, data.blobInputs); + rollup.propose(args, signatures, data.blobInputs, new bytes(0)); } function testProvingFeeUpdates() public setUpFor("mixed_block_1") { @@ -386,7 +383,7 @@ contract RollupTest is RollupBase { interim.manaUsed = 1e6; // Progress time as necessary - vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, data.decodedHeader.timestamp)); interim.time = block.timestamp; @@ -395,19 +392,17 @@ contract RollupTest is RollupBase { assertEq(testERC20.balanceOf(address(rollup)), 0, "invalid rollup balance"); // We jump to the time of the block. (unless it is in the past) - vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, data.decodedHeader.timestamp)); - uint256 coinbaseBalance = testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase); + uint256 coinbaseBalance = testERC20.balanceOf(data.decodedHeader.coinbase); assertEq(coinbaseBalance, 0, "invalid initial coinbase balance"); skipBlobCheck(address(rollup)); interim.baseFee = rollup.getManaBaseFeeAt(Timestamp.wrap(block.timestamp), true); - header = _updateHeaderVersion(header, rollup.getVersion()); - header = _updateHeaderBaseFee(header, interim.baseFee); - header = _updateHeaderManaUsed(header, interim.manaUsed); + header = DecoderBase.updateHeaderBaseFee(header, interim.baseFee); + header = DecoderBase.updateHeaderManaUsed(header, interim.manaUsed); // We mess up the fees and say that someone is paying a massive priority which surpass the amount available. interim.feeAmount = interim.manaUsed * interim.baseFee + interim.portalBalance; - header = _updateHeaderTotalFees(header, interim.feeAmount); // Assert that balance have NOT been increased by proposing the block ProposeArgs memory args = ProposeArgs({ @@ -416,12 +411,8 @@ contract RollupTest is RollupBase { oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); - rollup.propose(args, signatures, data.blobInputs); - assertEq( - testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase), - 0, - "invalid coinbase balance" - ); + rollup.propose(args, signatures, data.blobInputs, new bytes(0)); + assertEq(testERC20.balanceOf(data.decodedHeader.coinbase), 0, "invalid coinbase balance"); } BlockLog memory blockLog = rollup.getBlock(0); @@ -446,19 +437,13 @@ contract RollupTest is RollupBase { data.archive, blobPublicInputs, prover, - data.decodedHeader.globalVariables.coinbase, + data.decodedHeader.coinbase, interim.feeAmount ); } + assertEq(testERC20.balanceOf(data.decodedHeader.coinbase), 0, "invalid coinbase balance"); assertEq( - testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase), - 0, - "invalid coinbase balance" - ); - assertEq( - rollup.getSequencerRewards(data.decodedHeader.globalVariables.coinbase), - 0, - "invalid sequencer rewards" + rollup.getSequencerRewards(data.decodedHeader.coinbase), 0, "invalid sequencer rewards" ); assertEq(testERC20.balanceOf(prover), 0, "invalid prover balance"); assertEq(rollup.getCollectiveProverRewardsForEpoch(Epoch.wrap(0)), 0, "invalid prover rewards"); @@ -474,7 +459,7 @@ contract RollupTest is RollupBase { data.archive, this.getBlobPublicInputs(data.blobInputs), address(42), - data.decodedHeader.globalVariables.coinbase, + data.decodedHeader.coinbase, interim.feeAmount ); @@ -496,7 +481,7 @@ contract RollupTest is RollupBase { - FeeAssetValue.unwrap(interim.provingCostPerManaInFeeAsset) * interim.manaUsed; assertEq( - rollup.getSequencerRewards(data.decodedHeader.globalVariables.coinbase), + rollup.getSequencerRewards(data.decodedHeader.coinbase), expectedSequencerReward, "invalid sequencer rewards" ); @@ -671,86 +656,20 @@ contract RollupTest is RollupBase { assertEq(rollup.getProvenBlockNumber(), 0 + toProve, "Invalid proven block number"); } - function testRevertInvalidBlockNumber() public setUpFor("empty_block_1") { - DecoderBase.Data memory data = load("empty_block_1").block; - bytes memory header = data.header; - bytes32 archive = data.archive; - bytes32[] memory txHashes = new bytes32[](0); - - assembly { - // TODO: Hardcoding offsets in the middle of tests is annoying to say the least. - mstore(add(header, add(0x20, 0x0174)), 0x420) - } - header = _updateHeaderVersion(header, rollup.getVersion()); - skipBlobCheck(address(rollup)); - vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlockNumber.selector, 1, 0x420)); - ProposeArgs memory args = ProposeArgs({ - header: header, - archive: archive, - oracleInput: OracleInput(0), - txHashes: txHashes - }); - rollup.propose(args, signatures, data.blobInputs); - } - - function testRevertInvalidChainId() public setUpFor("empty_block_1") { - DecoderBase.Data memory data = load("empty_block_1").block; - bytes memory header = data.header; - header = _updateHeaderVersion(header, rollup.getVersion()); - bytes32 archive = data.archive; - bytes32[] memory txHashes = new bytes32[](0); - - assembly { - mstore(add(header, add(0x20, 0x0134)), 0x420) - } - skipBlobCheck(address(rollup)); - vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidChainId.selector, 31337, 0x420)); - ProposeArgs memory args = ProposeArgs({ - header: header, - archive: archive, - oracleInput: OracleInput(0), - txHashes: txHashes - }); - rollup.propose(args, signatures, data.blobInputs); - } - - function testRevertInvalidVersion() public setUpFor("empty_block_1") { - DecoderBase.Data memory data = load("empty_block_1").block; - bytes memory header = data.header; - bytes32 archive = data.archive; - bytes32[] memory txHashes = new bytes32[](0); - - assembly { - mstore(add(header, add(0x20, 0x0154)), 0x420) - } - skipBlobCheck(address(rollup)); - vm.expectRevert( - abi.encodeWithSelector(Errors.Rollup__InvalidVersion.selector, rollup.getVersion(), 0x420) - ); - ProposeArgs memory args = ProposeArgs({ - header: header, - archive: archive, - oracleInput: OracleInput(0), - txHashes: txHashes - }); - rollup.propose(args, signatures, data.blobInputs); - } - function testRevertInvalidTimestamp() public setUpFor("empty_block_1") { DecoderBase.Data memory data = load("empty_block_1").block; bytes memory header = data.header; - header = _updateHeaderVersion(header, rollup.getVersion()); bytes32 archive = data.archive; bytes32[] memory txHashes = new bytes32[](0); - uint256 realTs = data.decodedHeader.globalVariables.timestamp; + uint256 realTs = data.decodedHeader.timestamp; uint256 badTs = realTs + 1; vm.warp(max(block.timestamp, realTs)); - assembly { - mstore(add(header, add(0x20, 0x01b4)), badTs) - } + // Tweak the timestamp. + header = DecoderBase.updateHeaderTimestamp(header, badTs); + skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidTimestamp.selector, realTs, badTs)); ProposeArgs memory args = ProposeArgs({ @@ -759,10 +678,10 @@ contract RollupTest is RollupBase { oracleInput: OracleInput(0), txHashes: txHashes }); - rollup.propose(args, signatures, new bytes(144)); + rollup.propose(args, signatures, new bytes(144), new bytes(0)); } - function testSubmitProofNonExistantBlock() public setUpFor("empty_block_1") { + function testSubmitProofNonExistentBlock() public setUpFor("empty_block_1") { _proposeBlock("empty_block_1", 1); DecoderBase.Data memory data = load("empty_block_1").block; bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); @@ -800,8 +719,7 @@ contract RollupTest is RollupBase { blobPublicInputs[100] = 0x01; BlockLog memory blockLog = rollup.getBlock(0); - bytes32 actualBlobPublicInputsHash = - rollup.getBlobPublicInputsHash(data.decodedHeader.globalVariables.blockNumber); + bytes32 actualBlobPublicInputsHash = rollup.getBlobPublicInputsHash(data.blockNumber); bytes32 wrongBlobPublicInputsHash = this.getBlobPublicInputsHash(blobPublicInputs); vm.expectRevert( abi.encodeWithSelector( diff --git a/l1-contracts/test/base/DecoderBase.sol b/l1-contracts/test/base/DecoderBase.sol index 840362d591e0..35a68b3fee69 100644 --- a/l1-contracts/test/base/DecoderBase.sol +++ b/l1-contracts/test/base/DecoderBase.sol @@ -4,16 +4,12 @@ pragma solidity >=0.8.27; import {TestBase} from "../base/Base.sol"; +import {Timestamp, Slot} from "@aztec/core/libraries/TimeLib.sol"; // Many of the structs in here match what you see in `header` but with very important exceptions! // The order of variables is sorted alphabetically in the structs in here to work with the // JSON cheatcodes. contract DecoderBase is TestBase { - struct AppendOnlyTreeSnapshot { - uint32 nextAvailableLeafIndex; - bytes32 root; - } - // When I had data and messages as one combined struct it failed, but I can have this top-layer and it works :shrug: // Note: Members of the struct (and substructs) have to be in ALPHABETICAL order! struct Full { @@ -35,43 +31,29 @@ contract DecoderBase is TestBase { struct Data { bytes32 archive; bytes blobInputs; + uint256 blockNumber; bytes body; DecodedHeader decodedHeader; bytes header; // Note: The following could be decoded from body but having it explicitaly here makes tests more robust against // decoder changes uint32 numTxs; - bytes32 publicInputsHash; } struct DecodedHeader { - ContentCommitment contentCommitment; - GlobalVariables globalVariables; - AppendOnlyTreeSnapshot lastArchive; - StateReference stateReference; - uint256 totalFees; - uint256 totalManaUsed; - } - - struct GasFees { - uint256 feePerDaGas; - uint256 feePerL2Gas; - } - - struct GlobalVariables { - uint256 blockNumber; - uint256 chainId; address coinbase; + ContentCommitment contentCommitment; bytes32 feeRecipient; GasFees gasFees; + bytes32 lastArchiveRoot; uint256 slotNumber; uint256 timestamp; - uint256 version; + uint256 totalManaUsed; } - struct StateReference { - AppendOnlyTreeSnapshot l1ToL2MessageTree; - PartialStateReference partialStateReference; + struct GasFees { + uint256 feePerDaGas; + uint256 feePerL2Gas; } struct ContentCommitment { @@ -81,12 +63,6 @@ contract DecoderBase is TestBase { bytes32 outHash; } - struct PartialStateReference { - AppendOnlyTreeSnapshot noteHashTree; - AppendOnlyTreeSnapshot nullifierTree; - AppendOnlyTreeSnapshot publicDataTree; - } - function load(string memory name) internal view returns (Full memory) { string memory root = vm.projectRoot(); string memory path = string.concat(root, "/test/fixtures/", name, ".json"); @@ -99,4 +75,158 @@ contract DecoderBase is TestBase { function max(uint256 a, uint256 b) internal pure returns (uint256) { return a > b ? a : b; } + + function updateHeaderArchive(bytes memory _header, bytes32 _archive) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, 0x20), _archive) + } + return _header; + } + + function updateHeaderNumTxs(bytes memory _header, uint256 _numTxs) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x0020)), _numTxs) + } + return _header; + } + + function updateHeaderBlobsHash(bytes memory _header, bytes32 _blobsHash) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x0040)), _blobsHash) + } + return _header; + } + + function updateHeaderInboxRoot(bytes memory _header, bytes32 _inboxRoot) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x0060)), _inboxRoot) + } + return _header; + } + + function updateHeaderOutboxRoot(bytes memory _header, bytes32 _outboxRoot) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x0080)), _outboxRoot) + } + return _header; + } + + function updateHeaderSlot(bytes memory _header, Slot _slot) internal pure returns (bytes memory) { + assembly { + mstore(add(_header, add(0x20, 0x00a0)), _slot) + } + return _header; + } + + function getHeaderSlot(bytes memory _header) internal pure returns (Slot) { + Slot slot; + assembly { + slot := mload(add(_header, add(0x20, 0x00a0))) + } + return slot; + } + + function updateHeaderTimestamp(bytes memory _header, Timestamp _timestamp) + internal + pure + returns (bytes memory) + { + return updateHeaderTimestamp(_header, Timestamp.unwrap(_timestamp)); + } + + function updateHeaderTimestamp(bytes memory _header, uint256 _timestamp) + internal + pure + returns (bytes memory) + { + assembly { + let ptr := add(_header, add(0x20, 0x00c0)) + // Timestamp is only 8 bytes, so we need to keep the the other 24 bytes. + let prev := mload(ptr) + let mask := shr(mul(8, 8), not(0)) + let updated := or(and(prev, mask), shl(mul(24, 8), _timestamp)) + mstore(ptr, updated) + } + return _header; + } + + function updateHeaderCoinbase(bytes memory _header, address _coinbase) + internal + pure + returns (bytes memory) + { + assembly { + let ptr := add(_header, add(0x20, 0x00c8)) + // Coinbase is only 20 bytes, so we need to keep the the other 12 bytes. + let prev := mload(ptr) + let mask := shr(mul(20, 8), not(0)) + let updated := or(and(prev, mask), shl(mul(12, 8), _coinbase)) + mstore(ptr, updated) + } + return _header; + } + + function updateHeaderFeeRecipient(bytes memory _header, address _feeRecipient) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x00dc)), _feeRecipient) + } + return _header; + } + + function updateHeaderDaFee(bytes memory _header, uint256 _fee) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x00fc)), _fee) + } + return _header; + } + + function updateHeaderBaseFee(bytes memory _header, uint256 _baseFee) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x011c)), _baseFee) + } + return _header; + } + + function updateHeaderManaUsed(bytes memory _header, uint256 _manaUsed) + internal + pure + returns (bytes memory) + { + assembly { + mstore(add(_header, add(0x20, 0x013c)), _manaUsed) + } + return _header; + } } diff --git a/l1-contracts/test/base/RollupBase.sol b/l1-contracts/test/base/RollupBase.sol index eb9875cdabac..0a7e503d46e2 100644 --- a/l1-contracts/test/base/RollupBase.sol +++ b/l1-contracts/test/base/RollupBase.sol @@ -59,8 +59,8 @@ contract RollupBase is DecoderBase { DecoderBase.Full memory startFull = load(string.concat(_name, Strings.toString(_start))); DecoderBase.Full memory endFull = load(string.concat(_name, Strings.toString(_end))); - uint256 startBlockNumber = uint256(startFull.block.decodedHeader.globalVariables.blockNumber); - uint256 endBlockNumber = uint256(endFull.block.decodedHeader.globalVariables.blockNumber); + uint256 startBlockNumber = uint256(startFull.block.blockNumber); + uint256 endBlockNumber = uint256(endFull.block.blockNumber); assertEq(startBlockNumber, _start, "Invalid start block number"); assertEq(endBlockNumber, _end, "Invalid end block number"); @@ -108,61 +108,6 @@ contract RollupBase is DecoderBase { ); } - function _updateHeaderVersion(bytes memory _header, uint256 _version) - internal - pure - returns (bytes memory) - { - assembly { - mstore(add(_header, add(0x20, 0x0154)), _version) - } - return _header; - } - - function _updateHeaderBaseFee(bytes memory _header, uint256 _baseFee) - internal - pure - returns (bytes memory) - { - assembly { - mstore(add(_header, add(0x20, 0x0228)), _baseFee) - } - return _header; - } - - function _updateHeaderManaUsed(bytes memory _header, uint256 _manaUsed) - internal - pure - returns (bytes memory) - { - assembly { - mstore(add(_header, add(0x20, 0x0268)), _manaUsed) - } - return _header; - } - - function _updateHeaderInboxRoot(bytes memory _header, bytes32 _inboxRoot) - internal - pure - returns (bytes memory) - { - assembly { - mstore(add(_header, add(0x20, 0x0064)), _inboxRoot) - } - return _header; - } - - function _updateHeaderTotalFees(bytes memory _header, uint256 _totalFees) - internal - pure - returns (bytes memory) - { - assembly { - mstore(add(_header, add(0x20, 0x0248)), _totalFees) - } - return _header; - } - function _proposeBlock(string memory _name, uint256 _slotNumber) public { _proposeBlock(_name, _slotNumber, 0); } @@ -196,31 +141,26 @@ contract RollupBase is DecoderBase { if (slotNumber != Slot.wrap(0)) { Timestamp ts = rollup.getTimestampForSlot(slotNumber); - full.block.decodedHeader.globalVariables.timestamp = Timestamp.unwrap(ts); - full.block.decodedHeader.globalVariables.slotNumber = Slot.unwrap(slotNumber); - assembly { - mstore(add(header, add(0x20, 0x0194)), slotNumber) - mstore(add(header, add(0x20, 0x01b4)), ts) - } + full.block.decodedHeader.timestamp = Timestamp.unwrap(ts); + full.block.decodedHeader.slotNumber = Slot.unwrap(slotNumber); + + header = DecoderBase.updateHeaderTimestamp(header, ts); + header = DecoderBase.updateHeaderSlot(header, slotNumber); } - uint256 baseFee = rollup.getManaBaseFeeAt( - Timestamp.wrap(full.block.decodedHeader.globalVariables.timestamp), true - ); - header = _updateHeaderVersion(header, rollup.getVersion()); - header = _updateHeaderBaseFee(header, baseFee); - header = _updateHeaderManaUsed(header, _manaUsed); - header = _updateHeaderTotalFees(header, _manaUsed * baseFee); + uint256 baseFee = + rollup.getManaBaseFeeAt(Timestamp.wrap(full.block.decodedHeader.timestamp), true); + header = DecoderBase.updateHeaderBaseFee(header, baseFee); + header = DecoderBase.updateHeaderManaUsed(header, _manaUsed); - blockFees[full.block.decodedHeader.globalVariables.blockNumber] = _manaUsed * baseFee; + blockFees[full.block.blockNumber] = _manaUsed * baseFee; // We jump to the time of the block. (unless it is in the past) - vm.warp(max(block.timestamp, full.block.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, full.block.decodedHeader.timestamp)); _populateInbox(full.populate.sender, full.populate.recipient, full.populate.l1ToL2Content); - header = _updateHeaderInboxRoot( - header, rollup.getInbox().getRoot(full.block.decodedHeader.globalVariables.blockNumber) - ); + header = + DecoderBase.updateHeaderInboxRoot(header, rollup.getInbox().getRoot(full.block.blockNumber)); { bytes32[] memory blobHashes = new bytes32[](1); @@ -250,7 +190,7 @@ contract RollupBase is DecoderBase { if (_revertMsg.length > 0) { vm.expectRevert(_revertMsg); } - rollup.propose(args, signatures, blobInputs); + rollup.propose(args, signatures, blobInputs, new bytes(0)); if (_revertMsg.length > 0) { return; @@ -287,10 +227,10 @@ contract RollupBase is DecoderBase { } outbox = Outbox(address(rollup.getOutbox())); - (bytes32 root,) = outbox.getRootData(full.block.decodedHeader.globalVariables.blockNumber); + (bytes32 root,) = outbox.getRootData(full.block.blockNumber); // If we are trying to read a block beyond the proven chain, we should see "nothing". - if (rollup.getProvenBlockNumber() >= full.block.decodedHeader.globalVariables.blockNumber) { + if (rollup.getProvenBlockNumber() >= full.block.blockNumber) { assertEq(l2ToL1MessageTreeRoot, root, "Invalid l2 to l1 message tree root"); } else { assertEq(root, bytes32(0), "Invalid outbox root"); diff --git a/l1-contracts/test/benchmark/happy.t.sol b/l1-contracts/test/benchmark/happy.t.sol index 98a05160dd5e..6f416d838b5b 100644 --- a/l1-contracts/test/benchmark/happy.t.sol +++ b/l1-contracts/test/benchmark/happy.t.sol @@ -33,7 +33,13 @@ import {IERC20Errors} from "@oz/interfaces/draft-IERC6093.sol"; import {IFeeJuicePortal} from "@aztec/core/interfaces/IFeeJuicePortal.sol"; import {IRewardDistributor} from "@aztec/governance/interfaces/IRewardDistributor.sol"; import {IRegistry} from "@aztec/governance/interfaces/IRegistry.sol"; -import {ProposeArgs, OracleInput, ProposeLib} from "@aztec/core/libraries/rollup/ProposeLib.sol"; +import {HeaderLib} from "@aztec/core/libraries/rollup/HeaderLib.sol"; +import { + ProposeArgs, + ProposePayload, + OracleInput, + ProposeLib +} from "@aztec/core/libraries/rollup/ProposeLib.sol"; import {IERC20} from "@oz/token/ERC20/IERC20.sol"; import { FeeLib, @@ -212,39 +218,20 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { TestPoint memory point = points[slotNumber.unwrap() - 1]; Timestamp ts = rollup.getTimestampForSlot(slotNumber); - uint256 bn = rollup.getPendingBlockNumber() + 1; uint256 manaBaseFee = rollup.getManaBaseFeeAt(Timestamp.wrap(block.timestamp), true); uint256 manaSpent = point.block_header.mana_spent; address proposer = rollup.getCurrentProposer(); - uint256 version = rollup.getVersion(); - // Updating the header with important information! - assembly { - let headerRef := add(header, 0x20) - - mstore(add(headerRef, 0x0000), archiveRoot) - // Load the full word at 0x20 (which contains lastArchive.nextAvailableLeafIndex and start of numTxs) - let word := mload(add(headerRef, 0x20)) - // Clear just the first 4 bytes from the left (most significant bytes) - word := and(word, 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff) - // Set the new value for nextAvailableLeafIndex (bn) in the first 4 bytes from left - word := or(word, shl(224, bn)) - // Store the modified word back - mstore(add(headerRef, 0x20), word) - - mstore(add(headerRef, 0x0154), version) - mstore(add(headerRef, 0x0174), bn) - mstore(add(headerRef, 0x0194), slotNumber) - mstore(add(headerRef, 0x01b4), ts) - mstore(add(headerRef, 0x01d4), proposer) // coinbase - mstore(add(headerRef, 0x01e8), 0) // fee recipient - mstore(add(headerRef, 0x0208), 0) // fee per da gas - mstore(add(headerRef, 0x0228), manaBaseFee) // fee per l2 gas - mstore(add(headerRef, 0x0268), manaSpent) // total mana used - } + header = DecoderBase.updateHeaderArchive(header, archiveRoot); + header = DecoderBase.updateHeaderSlot(header, slotNumber); + header = DecoderBase.updateHeaderTimestamp(header, ts); + header = DecoderBase.updateHeaderCoinbase(header, proposer); + header = DecoderBase.updateHeaderFeeRecipient(header, address(0)); + header = DecoderBase.updateHeaderBaseFee(header, manaBaseFee); + header = DecoderBase.updateHeaderManaUsed(header, manaSpent); ProposeArgs memory proposeArgs = ProposeArgs({ header: header, @@ -260,7 +247,16 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { uint256 needed = validators.length * 2 / 3 + 1; signatures = new Signature[](validators.length); - bytes32 digest = ProposeLib.digest(proposeArgs); + bytes32 headerHash = HeaderLib.hash(proposeArgs.header); + + ProposePayload memory proposePayload = ProposePayload({ + archive: proposeArgs.archive, + oracleInput: proposeArgs.oracleInput, + headerHash: headerHash, + txHashes: proposeArgs.txHashes + }); + + bytes32 digest = ProposeLib.digest(proposePayload); for (uint256 i = 0; i < validators.length; i++) { if (i < needed) { @@ -323,7 +319,9 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { targets[0] = address(rollup); bytes[] memory data = new bytes[](1); - data[0] = abi.encodeCall(IRollupCore.propose, (b.proposeArgs, b.signatures, b.blobInputs)); + data[0] = abi.encodeCall( + IRollupCore.propose, (b.proposeArgs, b.signatures, b.blobInputs, new bytes(0)) + ); address caller = proposerToAttester[proposer]; vm.prank(caller); diff --git a/l1-contracts/test/decoders/Decoders.t.sol b/l1-contracts/test/decoders/Decoders.t.sol index 9fa5761bdf05..91fa893108f2 100644 --- a/l1-contracts/test/decoders/Decoders.t.sol +++ b/l1-contracts/test/decoders/Decoders.t.sol @@ -37,32 +37,20 @@ contract DecodersTest is DecoderBase { // GlobalVariables { - DecoderBase.GlobalVariables memory globalVariables = referenceHeader.globalVariables; - - assertEq( - header.globalVariables.blockNumber, globalVariables.blockNumber, "Invalid block number" - ); - assertEq( - header.globalVariables.slotNumber, globalVariables.slotNumber, "Invalid slot number" - ); - assertEq(header.globalVariables.chainId, globalVariables.chainId, "Invalid chain Id"); - assertEq(header.globalVariables.timestamp, globalVariables.timestamp, "Invalid timestamp"); - assertEq(header.globalVariables.version, globalVariables.version, "Invalid version"); - assertEq(header.globalVariables.coinbase, globalVariables.coinbase, "Invalid coinbase"); + assertEq(header.slotNumber, referenceHeader.slotNumber, "Invalid slot number"); + assertEq(header.timestamp, referenceHeader.timestamp, "Invalid timestamp"); + assertEq(header.coinbase, referenceHeader.coinbase, "Invalid coinbase"); assertEq( - header.globalVariables.feeRecipient, globalVariables.feeRecipient, "Invalid feeRecipient" + header.gasFees.feePerL2Gas, + referenceHeader.gasFees.feePerL2Gas, + "Invalid gasFees.feePerL2Gas" ); assertEq( - header.globalVariables.gasFees.feePerDaGas, - globalVariables.gasFees.feePerDaGas, + header.gasFees.feePerDaGas, + referenceHeader.gasFees.feePerDaGas, "Invalid gasFees.feePerDaGas" ); - assertEq( - header.globalVariables.feeRecipient, globalVariables.feeRecipient, "Invalid feeRecipient" - ); - assertEq( - header.globalVariables.feeRecipient, globalVariables.feeRecipient, "Invalid feeRecipient" - ); + assertEq(header.feeRecipient, referenceHeader.feeRecipient, "Invalid feeRecipient"); } // ContentCommitment @@ -77,73 +65,9 @@ contract DecodersTest is DecoderBase { assertEq(header.contentCommitment.outHash, contentCommitment.outHash, "Invalid outHash"); } - // StateReference - { - DecoderBase.StateReference memory stateReference = referenceHeader.stateReference; - - // L1 -> L2 messages - assertEq( - header.stateReference.l1ToL2MessageTree.nextAvailableLeafIndex, - stateReference.l1ToL2MessageTree.nextAvailableLeafIndex, - "Invalid l1ToL2MessageTree.nextAvailableLeafIndex" - ); - assertEq( - header.stateReference.l1ToL2MessageTree.root, - stateReference.l1ToL2MessageTree.root, - "Invalid l1ToL2MessageTree.root" - ); - - // PartialStateReference - { - DecoderBase.PartialStateReference memory partialStateReference = - referenceHeader.stateReference.partialStateReference; - - // NoteHashTree - assertEq( - header.stateReference.partialStateReference.noteHashTree.nextAvailableLeafIndex, - partialStateReference.noteHashTree.nextAvailableLeafIndex, - "Invalid noteHashTree.nextAvailableLeafIndex" - ); - assertEq( - header.stateReference.partialStateReference.noteHashTree.root, - partialStateReference.noteHashTree.root, - "Invalid noteHashTree.root" - ); - - // NullifierTree - assertEq( - header.stateReference.partialStateReference.nullifierTree.nextAvailableLeafIndex, - partialStateReference.nullifierTree.nextAvailableLeafIndex, - "Invalid nullifierTree.nextAvailableLeafIndex" - ); - assertEq( - header.stateReference.partialStateReference.nullifierTree.root, - partialStateReference.nullifierTree.root, - "Invalid nullifierTree.root" - ); - - // PublicDataTree - assertEq( - header.stateReference.partialStateReference.publicDataTree.nextAvailableLeafIndex, - partialStateReference.publicDataTree.nextAvailableLeafIndex, - "Invalid publicDataTree.nextAvailableLeafIndex" - ); - assertEq( - header.stateReference.partialStateReference.publicDataTree.root, - partialStateReference.publicDataTree.root, - "Invalid publicDataTree.root" - ); - } - } + assertEq(header.lastArchiveRoot, referenceHeader.lastArchiveRoot, "Invalid lastArchiveRoot"); - assertEq( - header.lastArchive.nextAvailableLeafIndex, - referenceHeader.lastArchive.nextAvailableLeafIndex, - "Invalid lastArchive.nextAvailableLeafIndex" - ); - assertEq( - header.lastArchive.root, referenceHeader.lastArchive.root, "Invalid lastArchive.root" - ); + assertEq(header.totalManaUsed, referenceHeader.totalManaUsed, "Invalid totalManaUsed"); } // The public inputs are computed based of these values, but not directly part of the decoding per say. } diff --git a/l1-contracts/test/fees/FeeRollup.t.sol b/l1-contracts/test/fees/FeeRollup.t.sol index 4c8f4c899667..12085be6901a 100644 --- a/l1-contracts/test/fees/FeeRollup.t.sol +++ b/l1-contracts/test/fees/FeeRollup.t.sol @@ -160,7 +160,6 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { TestPoint memory point = points[slotNumber.unwrap() - 1]; Timestamp ts = rollup.getTimestampForSlot(slotNumber); - uint256 bn = rollup.getPendingBlockNumber() + 1; uint256 manaBaseFee = ( point.outputs.mana_base_fee_components_in_fee_asset.data_cost @@ -180,32 +179,14 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { // Put coinbase onto the stack address cb = coinbase; - uint256 version = rollup.getVersion(); - // Updating the header with important information! - assembly { - let headerRef := add(header, 0x20) - - mstore(add(headerRef, 0x0000), archiveRoot) - // Load the full word at 0x20 (which contains lastArchive.nextAvailableLeafIndex and start of numTxs) - let word := mload(add(headerRef, 0x20)) - // Clear just the first 4 bytes from the left (most significant bytes) - word := and(word, 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff) - // Set the new value for nextAvailableLeafIndex (bn) in the first 4 bytes from left - word := or(word, shl(224, bn)) - // Store the modified word back - mstore(add(headerRef, 0x20), word) - - mstore(add(headerRef, 0x0154), version) - mstore(add(headerRef, 0x0174), bn) - mstore(add(headerRef, 0x0194), slotNumber) - mstore(add(headerRef, 0x01b4), ts) - mstore(add(headerRef, 0x01d4), cb) // coinbase - mstore(add(headerRef, 0x01e8), 0) // fee recipient - mstore(add(headerRef, 0x0208), 0) // fee per da gas - mstore(add(headerRef, 0x0228), manaBaseFee) // fee per l2 gas - mstore(add(headerRef, 0x0268), manaSpent) // total mana used - } + header = DecoderBase.updateHeaderArchive(header, archiveRoot); + header = DecoderBase.updateHeaderSlot(header, slotNumber); + header = DecoderBase.updateHeaderTimestamp(header, ts); + header = DecoderBase.updateHeaderCoinbase(header, cb); + header = DecoderBase.updateHeaderFeeRecipient(header, address(0)); + header = DecoderBase.updateHeaderBaseFee(header, manaBaseFee); + header = DecoderBase.updateHeaderManaUsed(header, manaSpent); return Block({ archive: archiveRoot, @@ -241,7 +222,8 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { txHashes: b.txHashes }), b.signatures, - b.blobInputs + b.blobInputs, + new bytes(0) ); nextSlot = nextSlot + Slot.wrap(1); } @@ -343,7 +325,8 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { txHashes: b.txHashes }), b.signatures, - b.blobInputs + b.blobInputs, + new bytes(0) ); FeeHeader memory feeHeader = rollup.getFeeHeader(nextSlot.unwrap()); diff --git a/l1-contracts/test/fixtures/empty_block_1.json b/l1-contracts/test/fixtures/empty_block_1.json index d92d41437919..9f0e80bee7ea 100644 --- a/l1-contracts/test/fixtures/empty_block_1.json +++ b/l1-contracts/test/fixtures/empty_block_1.json @@ -25,58 +25,29 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x2367b56a44f1cc971a7a48ee0e3fb63854613261bf995e02cf15b80eb7a49e09", + "archive": "0x038cad86d02ba459db8245a1ce4cbb6dbb8ffe019b7fcf6496da7a25dae8c570", + "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": 1, "body": "0x00000000", "decodedHeader": { + "lastArchiveRoot": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae", "contentCommitment": { "blobsHash": "0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 }, - "globalVariables": { - "blockNumber": 1, - "slotNumber": "0x000000000000000000000000000000000000000000000000000000000000001a", - "chainId": 31337, - "timestamp": 1742997649, - "version": 1, - "coinbase": "0x2d2b1a3e7cece64518bdf12bc2893b3072ded721", - "feeRecipient": "0x24e7c1eb8df59749e6d1005b7dcc23e8c768593e87065c4134a0ce43c94335b3", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 5425370 - } - }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 1, - "root": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae" + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000019", + "timestamp": 1744910618, + "coinbase": "0x46555d1c6cb9c5bb83254b645c4f74e16fb90a3d", + "feeRecipient": "0x1ca8799e7e43d6a84f0e7e5f7ac029a8faf8602835ab21cd24a071c363ece0de", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 2590 }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 16, - "root": "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 0, - "root": "0x1fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 128, - "root": "0x0c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 128, - "root": "0x23c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010000000000000000000000000000000000000000000000000000000000000000001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00000000000000000000000000000000000000000000000000000000000000002e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000101fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000008023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000067e408912d2b1a3e7cece64518bdf12bc2893b3072ded72124e7c1eb8df59749e6d1005b7dcc23e8c768593e87065c4134a0ce43c94335b30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052c8da00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x007ba02fdeb67f22a3dd1cfe8baa8d221ad67fbb9fcfafc6e0bc1ebc4d20f100", - "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae0000000000000000000000000000000000000000000000000000000000000000001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019000000006801391a46555d1c6cb9c5bb83254b645c4f74e16fb90a3d1ca8799e7e43d6a84f0e7e5f7ac029a8faf8602835ab21cd24a071c363ece0de00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1e0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/empty_block_2.json b/l1-contracts/test/fixtures/empty_block_2.json index aaf0075fd476..193582eb4f95 100644 --- a/l1-contracts/test/fixtures/empty_block_2.json +++ b/l1-contracts/test/fixtures/empty_block_2.json @@ -25,58 +25,29 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x277fad8742d641aa1e99af417d082739dc39bab49298997cab17c501996e6171", + "archive": "0x0eb9fcf0ceeda2ba35871d8fddb4cf925877f4325737e057073a573afb740185", + "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": 2, "body": "0x00000000", "decodedHeader": { + "lastArchiveRoot": "0x038cad86d02ba459db8245a1ce4cbb6dbb8ffe019b7fcf6496da7a25dae8c570", "contentCommitment": { "blobsHash": "0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9", - "inHash": "0x00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242", + "inHash": "0x00b44392a09618ffd1fdab69b79e96c4f9af905d57c62fb8028ed0fbb55efe80", "outHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 }, - "globalVariables": { - "blockNumber": 2, - "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000023", - "chainId": 31337, - "timestamp": 1742997865, - "version": 1, - "coinbase": "0x2d2b1a3e7cece64518bdf12bc2893b3072ded721", - "feeRecipient": "0x24e7c1eb8df59749e6d1005b7dcc23e8c768593e87065c4134a0ce43c94335b3", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 316120 - } - }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 2, - "root": "0x2367b56a44f1cc971a7a48ee0e3fb63854613261bf995e02cf15b80eb7a49e09" + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000022", + "timestamp": 1744910834, + "coinbase": "0x46555d1c6cb9c5bb83254b645c4f74e16fb90a3d", + "feeRecipient": "0x1ca8799e7e43d6a84f0e7e5f7ac029a8faf8602835ab21cd24a071c363ece0de", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 1120 }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 32, - "root": "0x026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 0, - "root": "0x1fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 128, - "root": "0x0c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 128, - "root": "0x23c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x2367b56a44f1cc971a7a48ee0e3fb63854613261bf995e02cf15b80eb7a49e09000000020000000000000000000000000000000000000000000000000000000000000000001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e82420000000000000000000000000000000000000000000000000000000000000000026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000201fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000008023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000067e409692d2b1a3e7cece64518bdf12bc2893b3072ded72124e7c1eb8df59749e6d1005b7dcc23e8c768593e87065c4134a0ce43c94335b30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d2d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00b31d2b0d772b021222c4de2484f9f4db0fc33837d14312664f0aae6f51c636", - "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "header": "0x038cad86d02ba459db8245a1ce4cbb6dbb8ffe019b7fcf6496da7a25dae8c5700000000000000000000000000000000000000000000000000000000000000000001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900b44392a09618ffd1fdab69b79e96c4f9af905d57c62fb8028ed0fbb55efe800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002200000000680139f246555d1c6cb9c5bb83254b645c4f74e16fb90a3d1ca8799e7e43d6a84f0e7e5f7ac029a8faf8602835ab21cd24a071c363ece0de000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_1.json b/l1-contracts/test/fixtures/mixed_block_1.json index b46a22e4465c..fe74213cfc80 100644 --- a/l1-contracts/test/fixtures/mixed_block_1.json +++ b/l1-contracts/test/fixtures/mixed_block_1.json @@ -23,93 +23,64 @@ }, "messages": { "l2ToL1Messages": [ - "0x0097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b3", - "0x00ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a5989", - "0x00619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5", - "0x007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f", - "0x000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a", - "0x00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4", - "0x004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e", - "0x003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba671", - "0x003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f135", - "0x00bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1", - "0x007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c3973", - "0x00aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c9270", - "0x00bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8", - "0x000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa804", - "0x0023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131", - "0x004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be2", - "0x00f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c", - "0x0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d", - "0x00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9", - "0x005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec25", - "0x00758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f", - "0x00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d", - "0x00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6", - "0x004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c", - "0x0099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc9839", - "0x0085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e23", - "0x00f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5", - "0x009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff2", - "0x00d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb9", - "0x00dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c", - "0x00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a80", - "0x00d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff" + "0x00a3820df1b54323b527a8a2f9030139f2306a78fa908e52809179f9d5532387", + "0x00c972a6c723fd5503a11cb0b55b4a963e24fecbaf68d0cd2489517b738f8830", + "0x005d8752aa976aafd6bb2e72a371b28b40c7c6deca2e416e06f5ca87c0018c9b", + "0x00c68aced1ccf720bae3eafafd26a9cdec65661df54057bda3ec7bb0a20d3a4b", + "0x008031009cbb3ee6cd6c1cc124f664ec0e2c9e84cf8d1a9d75bb4097ead0621a", + "0x002126e6c3c3f90cb63ba941e1d20ca4a54055bbf06f9a1d69a922714e30c6a3", + "0x0089ddab0381c4b8ff1927145233510cc320c72fd981c25cfb94546b184fc69d", + "0x004e81fa6e1f1d06649229b6eb97ee9b717304b7bd9434b26c76d4bbb113a620", + "0x000fded0bbf3892bc212c3e751e820d2f277daba4de28fd5e39e922bb59da7fb", + "0x0089acfd09b58d60046aa1e586e06fb0f8c6c4dbac02b35291475149fbe061a2", + "0x00b38b6702059f708f91e3cf0a0c7fbf018be3a935620109a1695df41e60bbde", + "0x00a3afc3de051ec11aeb590d3bd4483e071b6df44152355ebcf3b176f87024b2", + "0x009c40da473014ae317c6eb97af046f3b31ac83584eb26aa82f394f97ee9fb55", + "0x002aba26194958593ccd48638b8280c43bb1364f3764d9b06556502d565341e4", + "0x004027948f6eafbbc8dfd7acdb0b7060417eb1dd1f72e8ef9bc639a8e03232a8", + "0x002834a34ae7d5fcd9bea54f7745d0c938a56d493ca0ec7fa6264285515a7ada", + "0x003108dc6da01d26c3c5daf207d3a8150f8d38013524219b343d3be4fa061ea8", + "0x006a3050a704f363ccf33f1e3036e04affcac799ccdb2a427ff5e1c2070d83cf", + "0x00bdcc07416538205ace5b73916bd8696a0b201e964d1f8501f0ca10a26d9238", + "0x00c25785bcf7dc09d3982de931b7514a8b107b2d240b80e5e5affa621f3480b8", + "0x00d49172afa208e434a9e0ad27086b34935831ccd35899fa3d258c4781512b08", + "0x005e594cbab7f7c977306296fba1b0ffc2a1a05276bf3761a3500959cb7dce1b", + "0x0079c1e60289bd30be2470da1437a4c1b6570a0ef168e7b9226f1392b4a5a9c3", + "0x00d974b419028489be6d93269136462f8ee560e4ee2f740b80bc1507dac1cf65", + "0x007b507b24707411f815dd6457e2a0fd8f16d06df3d9d5bf146f5574cb37a814", + "0x000e383f07cf89c6c4fb54cb509b90da1a96b80c9b76d532e9e9b671039154b9", + "0x007b327de1a255dc7523de28f28e6d5cc5dd2ca55010eacf796572c31b73489c", + "0x007dde47ed37f051e915347ac47724bfa49a5a2d59458b6cf70aabdae1a0bcc5", + "0x00c4957cc7fe55e39251b56661636d4242d4f94a55aea349f17753672a664866", + "0x0082a36b6b69966fb7cfc0c27bf4dc48f1aa7535d5795e5aabcba207b1738e47", + "0x00b6ca91c66625650d440d717502681d05e8d7368602319f7bd657e33b274287", + "0x00965de06c0b060268387d90beea050a05cc1c04c476b7d86e29a9a6fe90757b" ] }, "block": { - "archive": "0x155210fd3188716162b2f6c650aa5874466280eb49e68f21f392d746919f6e1b", - "body": "0x00000004002ee9a34a76ae91c500b535381d94cd682504bb86d504c62a5f8d11dd24679ee70000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba671400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417190000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417290000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000000000000000000000000000000000000000000000000000000000417300000001c54bdc3dcd0023e7fdbc6452a4773ea79ca38e6e3fabba71fc84cb41966979b0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f4000000000000000000000000000000000000000000000000000000000000800010000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f13500bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c397300aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c927000bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa8040023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be2400000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082048000000000000000000000000000000000000000000000000000000000008203f0000000000000000000000000000000000000000000000000000000000082049200000000000000000000000000000000000000000000000000000000000081700000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008171800000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008171800000000000000000000000000000000000000000000000000000000000817190000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008172800000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008172800000000000000000000000000000000000000000000000000000000000817290000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f00000000000000000000000000000000000000000000000000000000000817300000002717ddb5ec8c3552b92ddb9a27ae393189d19d282f4271d5b03089835d77834100000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f4000000000000000000000000000000000000000000000000000000000000c000100000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e0800f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec2500758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c4000000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c204800000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c20492000000000000000000000000000000000000000000000000000000000000c170000000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c17300000002b65cba4233828c7bacee67c1cbb6db457c7f63d8709bca45f0a50811f2782400000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f4000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e080099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc98390085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e2300f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff200d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb900dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a8000d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff400000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000010203f0000000000000000000000000000000000000000000000000000000000102049200000000000000000000000000000000000000000000000000000000000101700000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010171800000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010171800000000000000000000000000000000000000000000000000000000001017190000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010172800000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010172800000000000000000000000000000000000000000000000000000000001017290000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f00000000000000000000000000000000000000000000000000000000001017300000", + "archive": "0x29434ef0cfab380ec6550743417be14a615c79dbd42d9f686b6d7e132ea39eab", + "blobInputs": "0x01013cc04197b27eed4f9c4b0ddcecf20c321e7ae7c6b56bf87481853596eb8b30256cc0b2b4eb66466839fcfcb21879cfbf61742458056f448916f07c01a9cf661bcdad6c60339b5085e8b351898b5f8c5cc39d20f7a2733b606dc093d0237e72b89eef4e3ac4157853f4431feef4251cfa745f59dd87b7815b38adbcda753b0ea53189caf88908a3aca8d94b0598287791e25a7190c968662b1410331a14d991af7c75436789a7550d417d3db114829036e6a93014c91bf7877d0ab0ff13feb1", + "blockNumber": 1, + "body": "0x000000040027d757a0a5c15c1b1cd6077a25511ad8697b11dd7e714bb8a8480e481ad222e00000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e0800a3820df1b54323b527a8a2f9030139f2306a78fa908e52809179f9d553238700c972a6c723fd5503a11cb0b55b4a963e24fecbaf68d0cd2489517b738f8830005d8752aa976aafd6bb2e72a371b28b40c7c6deca2e416e06f5ca87c0018c9b00c68aced1ccf720bae3eafafd26a9cdec65661df54057bda3ec7bb0a20d3a4b008031009cbb3ee6cd6c1cc124f664ec0e2c9e84cf8d1a9d75bb4097ead0621a002126e6c3c3f90cb63ba941e1d20ca4a54055bbf06f9a1d69a922714e30c6a30089ddab0381c4b8ff1927145233510cc320c72fd981c25cfb94546b184fc69d004e81fa6e1f1d06649229b6eb97ee9b717304b7bd9434b26c76d4bbb113a620400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417190000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417290000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000000000000000000000000000000000000000000000000000000000417300000001637c8d53b44e71f52d93dc1931e0960d78a9602c4f602bc4a470ecc20eabf260000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f4000000000000000000000000000000000000000000000000000000000000800010000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08000fded0bbf3892bc212c3e751e820d2f277daba4de28fd5e39e922bb59da7fb0089acfd09b58d60046aa1e586e06fb0f8c6c4dbac02b35291475149fbe061a200b38b6702059f708f91e3cf0a0c7fbf018be3a935620109a1695df41e60bbde00a3afc3de051ec11aeb590d3bd4483e071b6df44152355ebcf3b176f87024b2009c40da473014ae317c6eb97af046f3b31ac83584eb26aa82f394f97ee9fb55002aba26194958593ccd48638b8280c43bb1364f3764d9b06556502d565341e4004027948f6eafbbc8dfd7acdb0b7060417eb1dd1f72e8ef9bc639a8e03232a8002834a34ae7d5fcd9bea54f7745d0c938a56d493ca0ec7fa6264285515a7ada400000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082048000000000000000000000000000000000000000000000000000000000008203f0000000000000000000000000000000000000000000000000000000000082049200000000000000000000000000000000000000000000000000000000000081700000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008171800000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008171800000000000000000000000000000000000000000000000000000000000817190000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008172800000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008172800000000000000000000000000000000000000000000000000000000000817290000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f00000000000000000000000000000000000000000000000000000000000817300000001cd7ee091e8fcc8dd1129ece780b3d7f3a111000df354fba1b6168452929ceaa00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f4000000000000000000000000000000000000000000000000000000000000c000100000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e08003108dc6da01d26c3c5daf207d3a8150f8d38013524219b343d3be4fa061ea8006a3050a704f363ccf33f1e3036e04affcac799ccdb2a427ff5e1c2070d83cf00bdcc07416538205ace5b73916bd8696a0b201e964d1f8501f0ca10a26d923800c25785bcf7dc09d3982de931b7514a8b107b2d240b80e5e5affa621f3480b800d49172afa208e434a9e0ad27086b34935831ccd35899fa3d258c4781512b08005e594cbab7f7c977306296fba1b0ffc2a1a05276bf3761a3500959cb7dce1b0079c1e60289bd30be2470da1437a4c1b6570a0ef168e7b9226f1392b4a5a9c300d974b419028489be6d93269136462f8ee560e4ee2f740b80bc1507dac1cf654000000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c204800000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c20492000000000000000000000000000000000000000000000000000000000000c170000000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c17300000000b480c07336f6d1af80b26c86724f7195ab5d2d812ba2a31cfbcd256a24422100000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f4000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e08007b507b24707411f815dd6457e2a0fd8f16d06df3d9d5bf146f5574cb37a814000e383f07cf89c6c4fb54cb509b90da1a96b80c9b76d532e9e9b671039154b9007b327de1a255dc7523de28f28e6d5cc5dd2ca55010eacf796572c31b73489c007dde47ed37f051e915347ac47724bfa49a5a2d59458b6cf70aabdae1a0bcc500c4957cc7fe55e39251b56661636d4242d4f94a55aea349f17753672a6648660082a36b6b69966fb7cfc0c27bf4dc48f1aa7535d5795e5aabcba207b1738e4700b6ca91c66625650d440d717502681d05e8d7368602319f7bd657e33b27428700965de06c0b060268387d90beea050a05cc1c04c476b7d86e29a9a6fe90757b400000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000010203f0000000000000000000000000000000000000000000000000000000000102049200000000000000000000000000000000000000000000000000000000000101700000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010171800000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010171800000000000000000000000000000000000000000000000000000000001017190000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010172800000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010172800000000000000000000000000000000000000000000000000000000001017290000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f00000000000000000000000000000000000000000000000000000000001017300000", "decodedHeader": { + "lastArchiveRoot": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae", "contentCommitment": { - "blobsHash": "0x001710ef5972afe6e206225f18e63f9764829144c34e8b9ebfc23de47dc52c3e", + "blobsHash": "0x006f27821fa9e72ddaef99fb2294dd0e498d057a2c22eca7835a470966d1d30f", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", - "outHash": "0x000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a6", + "outHash": "0x00c90fe023302fee380d65664d693c8f213e54593d22f7ba6d4ae902d1818885", "numTxs": 4 }, - "globalVariables": { - "blockNumber": 1, - "slotNumber": "0x000000000000000000000000000000000000000000000000000000000000001b", - "chainId": 31337, - "timestamp": 1736365060, - "version": 1, - "coinbase": "0xd000439d68f416a72188f6c91df9835e23d1619d", - "feeRecipient": "0x27f4b7fbf6f8db148d464396089d97cb994ababc3e1923d24b1e6076b0431b00", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 1020 - } + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000019", + "timestamp": 1744912658, + "coinbase": "0xc790caa781719be6813a0dc5c985b35ed0e27de9", + "feeRecipient": "0x28433ab079835b0b1e66665b64339dbcdb71015570137a25a613907754608a1e", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 1020 }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 1, - "root": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae" - }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 16, - "root": "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 256, - "root": "0x00553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 384, - "root": "0x0627376bc9d9804095498d2fe262c2dceeb5ecfc696966496eaee65f1798fed5" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 384, - "root": "0x2ded0a11981f5a48076e10c1cf9c4d0676488ed8eab842d8864facb270a02bae" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010000000000000000000000000000000000000000000000000000000000000004001710ef5972afe6e206225f18e63f9764829144c34e8b9ebfc23de47dc52c3e00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a62e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d60000001000553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce000001000627376bc9d9804095498d2fe262c2dceeb5ecfc696966496eaee65f1798fed5000001802ded0a11981f5a48076e10c1cf9c4d0676488ed8eab842d8864facb270a02bae000001800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001b00000000000000000000000000000000000000000000000000000000677ed404d000439d68f416a72188f6c91df9835e23d1619d27f4b7fbf6f8db148d464396089d97cb994ababc3e1923d24b1e6076b0431b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00f49a17357aca8d4daee46a18d9ea65d4fdcc77060fcd86bbd3f8b007e7baa8", - "blobInputs": "0x0101790d1572a5d851a4cceb4cff4f4ba5fb61408a534c888934360a45fc0e3a1401b4c42e36e09814cad53c703f91c130628e44c7371ec2aa2a1715e26c5f850127aba05f8e5daf4233628e74eedbc03169e05d016d457d9da9de21827686e3af9495352ad63141535bd3f4c2037b5baf0c5d8a5f8f05336b110d714e17282004e99cdd47f0ea63180d892578595339d6a50ef46c6447c438311fb7afd9556323905589f07ea2f1231f66d156bc2e271850ec3450360a38b3d21f042439038b4b", + "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae0000000000000000000000000000000000000000000000000000000000000004006f27821fa9e72ddaef99fb2294dd0e498d057a2c22eca7835a470966d1d30f00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00c90fe023302fee380d65664d693c8f213e54593d22f7ba6d4ae902d181888500000000000000000000000000000000000000000000000000000000000000190000000068014112c790caa781719be6813a0dc5c985b35ed0e27de928433ab079835b0b1e66665b64339dbcdb71015570137a25a613907754608a1e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_2.json b/l1-contracts/test/fixtures/mixed_block_2.json index c2e4daf0c4a8..b766e8d48c51 100644 --- a/l1-contracts/test/fixtures/mixed_block_2.json +++ b/l1-contracts/test/fixtures/mixed_block_2.json @@ -23,93 +23,64 @@ }, "messages": { "l2ToL1Messages": [ - "0x005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a", - "0x00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a", - "0x0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e", - "0x00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca", - "0x00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3", - "0x000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee", - "0x005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e692", - "0x00302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b1652299", - "0x00f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af", - "0x00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e120641", - "0x0032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb118", - "0x00c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f", - "0x00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e", - "0x00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c", - "0x0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f6123936843", - "0x00fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee6", - "0x006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2", - "0x002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d3247", - "0x0071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c", - "0x00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f1", - "0x00a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6", - "0x005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4", - "0x007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c", - "0x003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d", - "0x00e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d020332", - "0x00e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae", - "0x00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303", - "0x007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0", - "0x001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d", - "0x0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c", - "0x0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4", - "0x002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f73586" + "0x00d01a55d584f8916144aea6f5a9bac8bddc35e3d655869076f62a6562ceb9ff", + "0x005e27fd4cece26638f3f0bd89489dfd3abc11915487aedb53d14e584296ae48", + "0x001b5da94d070603513508dd0288602efdbf63564518f09048b7ff9ba70c92bf", + "0x006b22a5a601951e32cf070b1ffc989a8a8787541230974bd5d36895b1941d84", + "0x0008c90cb31300684be3773a3f75d09829137e2cbb16981247402ccdaec75934", + "0x00d09b475ef0e4066e146963bb8bbe39f8dd47be04ec199f19af70c9f3949b97", + "0x00b405e8658d69729a3f48662e8c7b7ab4c3b6e171d712289e04d32349cea11d", + "0x0043378f9f9f50c53faf58557615e9196c3f87829d28b85727dcca05493afe66", + "0x00afd9712730fba95ae5f4ff56cb6bd2e9e9ea472ef265a99cf589b7c70019fb", + "0x00bfc0c309d641346743081351b118242e9b8031c4fe62601e0133edc88437a8", + "0x0031d572deb721316544194ec2239ca14b19662ab72a6a031568207a5b961950", + "0x00cb9baca7d59ae7de4e419895d82999d2a88070106ef368ea633f9fad0fb4ca", + "0x00366a5ef6f8e2ba1efa097a891579b611f701ddbe8f18cfd76aa1ea7aad9cfe", + "0x00dcf5734498fd066822a1a182794ed3fd3428ea3630befe7806c7b8effd3a8f", + "0x0011a1d942aa6b6a82e573ede2e46e228e1797b28bfaa1af07e2b16e66f4c5b4", + "0x00bf4f1063652e2d3c49286e8c6effda2a890745efd9dea946b96235e4f70397", + "0x00fb7a68e8c0c0c9e9f979fddde604e675e7e080a7e8a508662d07168bfb7f44", + "0x0049410e1b9a9b6eb0952a38ffdcb62051d9aec9595cc433292f92d4c5acebac", + "0x00f9d05e6e9f9ef4e0ac134b1f96fb0be2912cc8e4b15dd15359b20ec88e422b", + "0x0019427e301ac29ec9a8a40ea6f08384a01c7e75d856370477276a463d2099c8", + "0x0021dbc02463a3447c0a0df6beb17ae7105b15765fe8289685df078c2854a332", + "0x00d7577bc1aecc7ca67d29f6242938a8e846bebc782273ff47b3268397950cb2", + "0x0064bc144ac4a6186fdc95f8c01ca6b73529d45022a7255088502661a0a313f7", + "0x009384c49419d9714869c0cf8069acb64feb3eb88a54f634d83ecb023cc9f33c", + "0x00d4c9d39d698d06c3b49ad11d4d89ff4ec838fd14ad941cc2ac0340bfee3048", + "0x00fb06024eb7dff37b3c77a69d1e27bbc6d860fdffd771faa7e9f17bbb0bed58", + "0x00259eb1667d2b6a72ecb9d455e81a3052a60a9bd744d85b5449dfc22b17f5d0", + "0x001beeee5f13f3dff7465966e88f06c46f7a258f84577b34ef923a87bd6edfda", + "0x00ac7febde047495327e9dabc3fcc8a04ded70158499cc018a9bb3dd291a2f0e", + "0x00a04338d85e9d73781b73c9f6763341d13716207a07ce7936a4e45c0dc074ff", + "0x00706f1c4f8555164868e9338b3e7a5d671eafc646ba0c7f94c54300a5912ed2", + "0x007e1e853242042314b8bcf470ff8ae46908ef57f18251f09e0725d8141ac89f" ] }, "block": { - "archive": "0x16ebef361e14615000aa7b4e06a3f3cca4822966a7eba8f86cd95e22fd8863c7", - "body": "0x0000000400132efbbfb18630ccfb96cb80ccf9c1d3b08bae51812be6e78f1aa72439a00b800000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b1652299400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417190000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417290000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f0000000000000000000000000000000000000000000000000000000000141730000000138b0bf30cf6731d2aab5dc9f1afede3ac8f0ca0f54b9f3ca9a81c4e31c49ee20000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f4000000000000000000000000000000000000000000000000000000000001800010000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e1206410032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb11800c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f612393684300fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee6400000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182048000000000000000000000000000000000000000000000000000000000018203f0000000000000000000000000000000000000000000000000000000000182049200000000000000000000000000000000000000000000000000000000000181700000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018171800000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018171800000000000000000000000000000000000000000000000000000000001817190000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018172800000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018172800000000000000000000000000000000000000000000000000000000001817290000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f0000000000000000000000000000000000000000000000000000000000181730000000140ab3d85fb5d53ed57e5e520b14f7a2532ee1b2e77c9f31277e6d3d49c727fe00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f4000000000000000000000000000000000000000000000000000000000001c000100000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e08006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d32470071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f100a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d4000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c204800000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c20492000000000000000000000000000000000000000000000000000000000001c170000000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c1730000000260caf731821f6ac6c02c9880591c2a11e24343eaa28359fa78aaa1bcf3574ca0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f4000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d02033200e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f73586400000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000020203f0000000000000000000000000000000000000000000000000000000000202049200000000000000000000000000000000000000000000000000000000000201700000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020171800000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020171800000000000000000000000000000000000000000000000000000000002017190000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020172800000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020172800000000000000000000000000000000000000000000000000000000002017290000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f00000000000000000000000000000000000000000000000000000000002017300000", + "archive": "0x2fb39875ecd009d9f0d6f4caf2c778687cf45d711e1b6e032793a88505be6c42", + "blobInputs": "0x0101f0916ad65fccdf90706c8488511df0047f80ccf1171b93c4110b599acf1af32740e6a88165b26c2dc59fcd41880528b0c12efbcbb89c17c3ad8233e5c154e85d1f554b690af5a67da68391eb3499060111ae5415ef6373a5e5d1b57e2412f7953b0a5051beeb1abe19395fabacfff0701a03958a6ebc05e507eab03feadb14b4e46e567de3d3f4c7e40c9727d6d34c8cfe31b1aaace9affe4b48428c391a44a6f4efe158f8f1fbc5cdf9302688d3bcc3650bfbcd3400fdffd2d572ff424822", + "blockNumber": 2, + "body": "0x000000040028b06262d9a0189fb283fe8f69cdf1686cefd3ab8df2b3ff596b2badbeb14f220000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e0800d01a55d584f8916144aea6f5a9bac8bddc35e3d655869076f62a6562ceb9ff005e27fd4cece26638f3f0bd89489dfd3abc11915487aedb53d14e584296ae48001b5da94d070603513508dd0288602efdbf63564518f09048b7ff9ba70c92bf006b22a5a601951e32cf070b1ffc989a8a8787541230974bd5d36895b1941d840008c90cb31300684be3773a3f75d09829137e2cbb16981247402ccdaec7593400d09b475ef0e4066e146963bb8bbe39f8dd47be04ec199f19af70c9f3949b9700b405e8658d69729a3f48662e8c7b7ab4c3b6e171d712289e04d32349cea11d0043378f9f9f50c53faf58557615e9196c3f87829d28b85727dcca05493afe66400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417190000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417290000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014173000000004bd2906db675f68d8e205a650d75149f712c818c03f65fa3a2726405fa039980000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f4000000000000000000000000000000000000000000000000000000000001800010000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800afd9712730fba95ae5f4ff56cb6bd2e9e9ea472ef265a99cf589b7c70019fb00bfc0c309d641346743081351b118242e9b8031c4fe62601e0133edc88437a80031d572deb721316544194ec2239ca14b19662ab72a6a031568207a5b96195000cb9baca7d59ae7de4e419895d82999d2a88070106ef368ea633f9fad0fb4ca00366a5ef6f8e2ba1efa097a891579b611f701ddbe8f18cfd76aa1ea7aad9cfe00dcf5734498fd066822a1a182794ed3fd3428ea3630befe7806c7b8effd3a8f0011a1d942aa6b6a82e573ede2e46e228e1797b28bfaa1af07e2b16e66f4c5b400bf4f1063652e2d3c49286e8c6effda2a890745efd9dea946b96235e4f70397400000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182048000000000000000000000000000000000000000000000000000000000018203f0000000000000000000000000000000000000000000000000000000000182049200000000000000000000000000000000000000000000000000000000000181700000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018171800000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018171800000000000000000000000000000000000000000000000000000000001817190000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018172800000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018172800000000000000000000000000000000000000000000000000000000001817290000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f000000000000000000000000000000000000000000000000000000000018173000000017a3de67c471e3a95076d815e8b8509f23a274346721c20ca31dc920cebb174c00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f4000000000000000000000000000000000000000000000000000000000001c000100000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e0800fb7a68e8c0c0c9e9f979fddde604e675e7e080a7e8a508662d07168bfb7f440049410e1b9a9b6eb0952a38ffdcb62051d9aec9595cc433292f92d4c5acebac00f9d05e6e9f9ef4e0ac134b1f96fb0be2912cc8e4b15dd15359b20ec88e422b0019427e301ac29ec9a8a40ea6f08384a01c7e75d856370477276a463d2099c80021dbc02463a3447c0a0df6beb17ae7105b15765fe8289685df078c2854a33200d7577bc1aecc7ca67d29f6242938a8e846bebc782273ff47b3268397950cb20064bc144ac4a6186fdc95f8c01ca6b73529d45022a7255088502661a0a313f7009384c49419d9714869c0cf8069acb64feb3eb88a54f634d83ecb023cc9f33c4000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c204800000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c20492000000000000000000000000000000000000000000000000000000000001c170000000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c17300000002fa31a6f04586e3a2a21543c9074df3ca55c50b6da4f0c03f42f24c602cab5d20000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f4000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800d4c9d39d698d06c3b49ad11d4d89ff4ec838fd14ad941cc2ac0340bfee304800fb06024eb7dff37b3c77a69d1e27bbc6d860fdffd771faa7e9f17bbb0bed5800259eb1667d2b6a72ecb9d455e81a3052a60a9bd744d85b5449dfc22b17f5d0001beeee5f13f3dff7465966e88f06c46f7a258f84577b34ef923a87bd6edfda00ac7febde047495327e9dabc3fcc8a04ded70158499cc018a9bb3dd291a2f0e00a04338d85e9d73781b73c9f6763341d13716207a07ce7936a4e45c0dc074ff00706f1c4f8555164868e9338b3e7a5d671eafc646ba0c7f94c54300a5912ed2007e1e853242042314b8bcf470ff8ae46908ef57f18251f09e0725d8141ac89f400000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000020203f0000000000000000000000000000000000000000000000000000000000202049200000000000000000000000000000000000000000000000000000000000201700000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020171800000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020171800000000000000000000000000000000000000000000000000000000002017190000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020172800000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020172800000000000000000000000000000000000000000000000000000000002017290000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f00000000000000000000000000000000000000000000000000000000002017300000", "decodedHeader": { + "lastArchiveRoot": "0x29434ef0cfab380ec6550743417be14a615c79dbd42d9f686b6d7e132ea39eab", "contentCommitment": { - "blobsHash": "0x0042a7cffd7591f823ec8fa49858e9f3b03e748b2b9cd6cbdcd948a40028eec6", - "inHash": "0x00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242", - "outHash": "0x00a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26", + "blobsHash": "0x00e4e6a4789e3aa19d06748395b6d9911bab5e9a680134385411cdf545bf27ed", + "inHash": "0x0019b7d6bce47976e4b6fca68db5c284719a5ca61f825bcbbe276e76187a95b3", + "outHash": "0x00dcff4af6b062ee2e9e6c1e2a3650d0dd6f466e04bfea094831318be5ae0d40", "numTxs": 4 }, - "globalVariables": { - "blockNumber": 2, - "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000024", - "chainId": 31337, - "timestamp": 1736365276, - "version": 1, - "coinbase": "0xd000439d68f416a72188f6c91df9835e23d1619d", - "feeRecipient": "0x27f4b7fbf6f8db148d464396089d97cb994ababc3e1923d24b1e6076b0431b00", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 1020 - } + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000022", + "timestamp": 1744912874, + "coinbase": "0xc790caa781719be6813a0dc5c985b35ed0e27de9", + "feeRecipient": "0x28433ab079835b0b1e66665b64339dbcdb71015570137a25a613907754608a1e", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 1020 }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 2, - "root": "0x155210fd3188716162b2f6c650aa5874466280eb49e68f21f392d746919f6e1b" - }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 32, - "root": "0x026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 512, - "root": "0x2494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f9805924" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 640, - "root": "0x137a2b2aa3dc64677f9670d964242d8fbf9fbabaa6b05e2c910eb0cb0f7cc3be" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 640, - "root": "0x27d5aa7e8c9cc259ee91c6b2a712904c93d1d1293118fae7026302a75c84d61e" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x155210fd3188716162b2f6c650aa5874466280eb49e68f21f392d746919f6e1b0000000200000000000000000000000000000000000000000000000000000000000000040042a7cffd7591f823ec8fa49858e9f3b03e748b2b9cd6cbdcd948a40028eec600e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e824200a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000202494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f980592400000200137a2b2aa3dc64677f9670d964242d8fbf9fbabaa6b05e2c910eb0cb0f7cc3be0000028027d5aa7e8c9cc259ee91c6b2a712904c93d1d1293118fae7026302a75c84d61e000002800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000677ed4dcd000439d68f416a72188f6c91df9835e23d1619d27f4b7fbf6f8db148d464396089d97cb994ababc3e1923d24b1e6076b0431b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00e4dc66a369a61cde70f33427261c0364d2da863c68482345d59f8d2101124b", - "blobInputs": "0x01017cc9c82841a1d9d8d26e294a1c91b4dd0d731a5a4ea7f8b5cc9e1e0e79b3b0210173d836288004a169ce0164d5260b3916a8322c2e10d767c2cd88bf259de604307f2585ab89042782f6d71a0803c3473773eb1f1496e588abc88f598bcfdeb0def1e7863bb049829d2becab7e29bced7a0c2ddf9e28c398a90d6fba74c5ae8926fc0e4db0002b05ab1bcdb8da59d9ae9b47ac7f4d0b94291442d59902483b167f42cdd7ae92611e46cdfd211f14a2dfdffd98ee363eb40a45a3612f5b773f", + "header": "0x29434ef0cfab380ec6550743417be14a615c79dbd42d9f686b6d7e132ea39eab000000000000000000000000000000000000000000000000000000000000000400e4e6a4789e3aa19d06748395b6d9911bab5e9a680134385411cdf545bf27ed0019b7d6bce47976e4b6fca68db5c284719a5ca61f825bcbbe276e76187a95b300dcff4af6b062ee2e9e6c1e2a3650d0dd6f466e04bfea094831318be5ae0d40000000000000000000000000000000000000000000000000000000000000002200000000680141eac790caa781719be6813a0dc5c985b35ed0e27de928433ab079835b0b1e66665b64339dbcdb71015570137a25a613907754608a1e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/single_tx_block_1.json b/l1-contracts/test/fixtures/single_tx_block_1.json index 13b84b5ea370..2bbca05f721a 100644 --- a/l1-contracts/test/fixtures/single_tx_block_1.json +++ b/l1-contracts/test/fixtures/single_tx_block_1.json @@ -23,69 +23,40 @@ }, "messages": { "l2ToL1Messages": [ - "0x0097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b3", - "0x00ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a5989", - "0x00619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5", - "0x007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f", - "0x000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a", - "0x00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4", - "0x004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e", - "0x003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba671" + "0x00d1a1a6857b4c1cbd27e72a04672bc2b2598964192b4ebd129418f582f12427", + "0x00d685cf23e33e0fa0e4964165847ff112ea5103872b27a37c478a0610f96b5a", + "0x004ff8e587af97a8ec230164962d94ecc3c411850c11d4beb0c3843037333dbe", + "0x00648ea56b00294c9b4cdae1b32cebf6578403ff34eb73497ee4bda89940efcb", + "0x00ec4f90e6018810d6af04f2b6aab24df66c768e54ddb1e11788000131592ca9", + "0x00ba4f9417a89919394eec195a9a6aafdabd643e224e0bf054e85d314cc7ad72", + "0x00a9725d762091488213d54630d698fd72d039583d22572427060ca04c1f731d", + "0x00a79c544801b3787d01d140d70c48bf5b5f4c5b60e04aa5734087ab68bea4be" ] }, "block": { - "archive": "0x0597ee46e1331f63212f835b2d78b119be4d71b850172cec33fe279168a96a78", - "body": "0x000000010017be1340b1d588a74f982b8a2e26421f73f45a84c90103de3d5bf6a609785f3e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba671400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417190000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417290000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000000000000000000000000000000000000000000000000000000000417300000", + "archive": "0x2bbbf8f220a9a7f15e86928fd5843840dd0bfee91f0d573ef4d3011b2e1ff10d", + "blobInputs": "0x0101d7509bea9efe4bcaef570c4b75ac10bba161c2ce2d385923f827f1bb9fa56020a30621d927eb35be762667d07f193fb87fd0b658bea647c288bbf26004f2626b7572a3ec7ba008f55e9c03b36ea247b3d602262cf6a237d65b54e80a3c1628a5f0ee0b1c662263c4ad20489d477197eda046daf8499572a38329ad7fc55525cc4c3c08976a9f1f192e7e5b72da08f7a983c5829bd3aa0b0f465af5e3ef0370167792414cf1685abf7b6a54493914bc9ff7c8bca8b55a8cd576fd3957e6c263", + "blockNumber": 1, + "body": "0x00000001000e00a3c9c99b2790aaa639d6ca9ced1faaa50b879b39f98ea1930e9559671f3e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e0800d1a1a6857b4c1cbd27e72a04672bc2b2598964192b4ebd129418f582f1242700d685cf23e33e0fa0e4964165847ff112ea5103872b27a37c478a0610f96b5a004ff8e587af97a8ec230164962d94ecc3c411850c11d4beb0c3843037333dbe00648ea56b00294c9b4cdae1b32cebf6578403ff34eb73497ee4bda89940efcb00ec4f90e6018810d6af04f2b6aab24df66c768e54ddb1e11788000131592ca900ba4f9417a89919394eec195a9a6aafdabd643e224e0bf054e85d314cc7ad7200a9725d762091488213d54630d698fd72d039583d22572427060ca04c1f731d00a79c544801b3787d01d140d70c48bf5b5f4c5b60e04aa5734087ab68bea4be400000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000004203f0000000000000000000000000000000000000000000000000000000000042049200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417190000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417290000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f00000000000000000000000000000000000000000000000000000000000417300000", "decodedHeader": { + "lastArchiveRoot": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae", "contentCommitment": { - "blobsHash": "0x00eebff001f99da234e03b7f71e498b8ebc91691232c43b8a3e94d645b754f93", + "blobsHash": "0x006f1b53567241e0d30c28ca502bb9b9994181e32dbb8038231dc5fe426b4ee1", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", - "outHash": "0x0077d7a5d20132e30e08855aaf9b57d3a10464d72915830307af3eed373a218e", + "outHash": "0x00f4d8c57e12f13a811f66baf76574dc8d1a7ca54063084fdb172abfc86507af", "numTxs": 1 }, - "globalVariables": { - "blockNumber": 1, - "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000019", - "chainId": 31337, - "timestamp": 1742998681, - "version": 1, - "coinbase": "0x509ad28f57e7c48f407ba8817e09f8c5a35cd99e", - "feeRecipient": "0x2a8b4b30849ccc6eff72262562dbb6fcd77104acce75f162fdfb30b6d4997580", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 4330 - } + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000019", + "timestamp": 1744911638, + "coinbase": "0x1f526170d47b7a301f548990fe007e6cf542f7f7", + "feeRecipient": "0x0ee7fd7f7d70de66a3a142d84162720202f3df658d001128bcf367c9157dfdf6", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 1020 }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 1, - "root": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae" - }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 16, - "root": "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 64, - "root": "0x142a1312a8dacc58c97d5dc0f9bc949ef0fe4d153c13ffcbe094665405b3c9a8" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 192, - "root": "0x01d6d73ea906b0b733dc3826affeb3eb6a54d5645f6e3b4ddab7830e9a1f48df" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 192, - "root": "0x080039323b94fe18c2d9e8fe4939b636b71dcd05a426a2426549b99d3fdbea99" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000001000000000000000000000000000000000000000000000000000000000000000100eebff001f99da234e03b7f71e498b8ebc91691232c43b8a3e94d645b754f9300089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c0077d7a5d20132e30e08855aaf9b57d3a10464d72915830307af3eed373a218e2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d600000010142a1312a8dacc58c97d5dc0f9bc949ef0fe4d153c13ffcbe094665405b3c9a80000004001d6d73ea906b0b733dc3826affeb3eb6a54d5645f6e3b4ddab7830e9a1f48df000000c0080039323b94fe18c2d9e8fe4939b636b71dcd05a426a2426549b99d3fdbea99000000c00000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000067e40c99509ad28f57e7c48f407ba8817e09f8c5a35cd99e2a8b4b30849ccc6eff72262562dbb6fcd77104acce75f162fdfb30b6d4997580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010ea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x004fda64dcba29dcd58d08e19fcb8d443f2014e91c28222a644ac34b8524f521", - "blobInputs": "0x0101623303d9585258da3df278232450a9b9e22ad63eaa1827943145d8e1a940c70f95095b11f9befd26b3128bc12e9303c7d9464b20d8de0cd41b411d4513bda70e1725bdbb4481ee3d13896fb8a6d5a5d3a03cc509dca716f5ecefd3e5415caaa3db7607c2959337a0ee03bb26a4bd02f55b579f9ddeef15f6629f5259684aa9bd2e82fba54fb1b70fb0bba620a92cd9a36d8e4880185e875f430f7babfd35f1d78853e684df666d2b5b152e1ef34bf9575fe1a7f8523534eee0b5508120d4cd", + "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae0000000000000000000000000000000000000000000000000000000000000001006f1b53567241e0d30c28ca502bb9b9994181e32dbb8038231dc5fe426b4ee100089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f4d8c57e12f13a811f66baf76574dc8d1a7ca54063084fdb172abfc86507af00000000000000000000000000000000000000000000000000000000000000190000000068013d161f526170d47b7a301f548990fe007e6cf542f7f70ee7fd7f7d70de66a3a142d84162720202f3df658d001128bcf367c9157dfdf6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 1 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/single_tx_block_2.json b/l1-contracts/test/fixtures/single_tx_block_2.json index 420d91b3aa52..87cb4dc21362 100644 --- a/l1-contracts/test/fixtures/single_tx_block_2.json +++ b/l1-contracts/test/fixtures/single_tx_block_2.json @@ -23,69 +23,40 @@ }, "messages": { "l2ToL1Messages": [ - "0x005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a", - "0x00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a", - "0x0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e", - "0x00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca", - "0x00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3", - "0x000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee", - "0x005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e692", - "0x00302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b1652299" + "0x009babbfb0889c9e72cdb31ca6042ca3dae473aa9d39013e89f7d4925c1f1898", + "0x0074b4667daf867c39717c5bed8bc341594ebf36744bc16e720b3ec8a097e173", + "0x006bb323c0647f7ca84b01456f910bf45a8f53ed44ee9cab3e68a0b4580d0663", + "0x00a89e348b9f969d938fe5790c6966b97eb46ef5779aa62430db876b29f37548", + "0x0049f6dcde8d145b29a2975dec16394eb58b4ada738cd3791ae275a959ad42f9", + "0x002213a082f305a8b1a1920d79df8e6e34344a6ac05d3a097f70c73068ee4a9f", + "0x00e9caacb39d073b296d62ec6d83de3b4df5f8ac8791d2dbfd6218eb6abb48b2", + "0x001bda02f29a51315be63e78636715167a3e1d883268445b1a034174f5645733" ] }, "block": { - "archive": "0x11e5e8a656d5dd9f7406b22fc7ee5a442ba5e6e1c2ac8e89b56e4957a5250b32", - "body": "0x0000000100021dd25b45b6b5d3adc1e289ec9295fac847fe36a25282a28fae507ddd09b97f0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b1652299400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417190000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417290000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f00000000000000000000000000000000000000000000000000000000001417300000", + "archive": "0x154d2b3bc9f16cbcd5271ad24dc84b967b8459f5c84ba6924343015ac1f074ab", + "blobInputs": "0x0101ea465260d00097e5c0cf3fcdd1893136d4b8260a3cbd6557c4cbc26115c50028dea2ef634b28d12611661275d8a2abdc22f07d7e6b8c3eb3dc7e61f3ff7da844d7951affc86ba38ab61ed7e27181521b245397b55d7c6179f6bb218958f326b0a760804ee550694c44a8d392f9642e0fdefd0214c665a59488751f5316daa7bd46cbcbb2ee018c237dbe6efad7cb6fae491677306f8c5a20da76882200b9ccb1861671b591e1529319e90f949bc136d62f50c7bfc4bd01fed336609998a204", + "blockNumber": 2, + "body": "0x00000001002d1b7440956d23cbbb99acf93bfdce7a0f08111c4f66dd3839b65c5a3083f7d30000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08009babbfb0889c9e72cdb31ca6042ca3dae473aa9d39013e89f7d4925c1f18980074b4667daf867c39717c5bed8bc341594ebf36744bc16e720b3ec8a097e173006bb323c0647f7ca84b01456f910bf45a8f53ed44ee9cab3e68a0b4580d066300a89e348b9f969d938fe5790c6966b97eb46ef5779aa62430db876b29f375480049f6dcde8d145b29a2975dec16394eb58b4ada738cd3791ae275a959ad42f9002213a082f305a8b1a1920d79df8e6e34344a6ac05d3a097f70c73068ee4a9f00e9caacb39d073b296d62ec6d83de3b4df5f8ac8791d2dbfd6218eb6abb48b2001bda02f29a51315be63e78636715167a3e1d883268445b1a034174f5645733400000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000014203f0000000000000000000000000000000000000000000000000000000000142049200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417190000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417290000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f00000000000000000000000000000000000000000000000000000000001417300000", "decodedHeader": { + "lastArchiveRoot": "0x2bbbf8f220a9a7f15e86928fd5843840dd0bfee91f0d573ef4d3011b2e1ff10d", "contentCommitment": { - "blobsHash": "0x009233fdfe2f50d7176a1a9e22c7bba211a92369eb904d3154e7e66a047dcfbf", - "inHash": "0x00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242", - "outHash": "0x001b1d8b076a65df0f4a11ad667192987442f031c34f639c843dfec49c425602", + "blobsHash": "0x00a15e9ec3fe0a6cbe49d80ba9a189fa0301394d68d44e6d6380d8d56b0a9916", + "inHash": "0x006eed06254e3001a558743b40c3e4e26bf859cd01321678fd73af29bf75ed46", + "outHash": "0x0083e765b61ade6c3099aa68ab87dcf9b89d5e10a73a74520fe5938a3d460c2d", "numTxs": 1 }, - "globalVariables": { - "blockNumber": 2, - "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000022", - "chainId": 31337, - "timestamp": 1742998897, - "version": 1, - "coinbase": "0x509ad28f57e7c48f407ba8817e09f8c5a35cd99e", - "feeRecipient": "0x2a8b4b30849ccc6eff72262562dbb6fcd77104acce75f162fdfb30b6d4997580", - "gasFees": { - "feePerDaGas": 0, - "feePerL2Gas": 1230 - } + "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000022", + "timestamp": 1744911854, + "coinbase": "0x1f526170d47b7a301f548990fe007e6cf542f7f7", + "feeRecipient": "0x0ee7fd7f7d70de66a3a142d84162720202f3df658d001128bcf367c9157dfdf6", + "gasFees": { + "feePerDaGas": 0, + "feePerL2Gas": 1020 }, - "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", - "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", - "lastArchive": { - "nextAvailableLeafIndex": 2, - "root": "0x0597ee46e1331f63212f835b2d78b119be4d71b850172cec33fe279168a96a78" - }, - "stateReference": { - "l1ToL2MessageTree": { - "nextAvailableLeafIndex": 32, - "root": "0x026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944" - }, - "partialStateReference": { - "noteHashTree": { - "nextAvailableLeafIndex": 128, - "root": "0x01aec0a148df6b4001468783cf50a3c6c99904144835d44408a7af869c46b233" - }, - "nullifierTree": { - "nextAvailableLeafIndex": 256, - "root": "0x01ee8f0bd3649ecd235fb31eb3b63c1a2f8d61c7f9bd3af681e39046ab0ddca0" - }, - "publicDataTree": { - "nextAvailableLeafIndex": 256, - "root": "0x13db3951032fbb6a9ae4aa3195954e4d4137410373576365fdc8dff93d3595b0" - } - } - } + "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000" }, - "header": "0x0597ee46e1331f63212f835b2d78b119be4d71b850172cec33fe279168a96a78000000020000000000000000000000000000000000000000000000000000000000000001009233fdfe2f50d7176a1a9e22c7bba211a92369eb904d3154e7e66a047dcfbf00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242001b1d8b076a65df0f4a11ad667192987442f031c34f639c843dfec49c425602026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e109440000002001aec0a148df6b4001468783cf50a3c6c99904144835d44408a7af869c46b2330000008001ee8f0bd3649ecd235fb31eb3b63c1a2f8d61c7f9bd3af681e39046ab0ddca00000010013db3951032fbb6a9ae4aa3195954e4d4137410373576365fdc8dff93d3595b0000001000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000067e40d71509ad28f57e7c48f407ba8817e09f8c5a35cd99e2a8b4b30849ccc6eff72262562dbb6fcd77104acce75f162fdfb30b6d4997580000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ce00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x001287a3e5c1dd74c00cd1f259b18bd0225464a62ecc032af6037e1b9fbb44fc", - "blobInputs": "0x0101852dcd453197df573bbb7bb74389a65531e51fe3817ad4686be68f610406a617806603c07f7ae6aeab3b6d5bae90768ce8b5630efdebfbcc817b19d885647562785179e873bf2c74774604783bdb4f90f43c25a5e32efb54bd51b5523882d5991573f5a6b6efd195da4f1e8420d759dd3bffd3025095ae5db88f71fba5d4a4ac1dedac6da3b2a8dff6d4c8c2312b738f3ff79ea6ce6602fca4220f9dfa05d124b96e771917e2096376ab8c5f0f79ded34c73e2b3d49ae838ce5f4d3526dbfa", + "header": "0x2bbbf8f220a9a7f15e86928fd5843840dd0bfee91f0d573ef4d3011b2e1ff10d000000000000000000000000000000000000000000000000000000000000000100a15e9ec3fe0a6cbe49d80ba9a189fa0301394d68d44e6d6380d8d56b0a9916006eed06254e3001a558743b40c3e4e26bf859cd01321678fd73af29bf75ed460083e765b61ade6c3099aa68ab87dcf9b89d5e10a73a74520fe5938a3d460c2d00000000000000000000000000000000000000000000000000000000000000220000000068013dee1f526170d47b7a301f548990fe007e6cf542f7f70ee7fd7f7d70de66a3a142d84162720202f3df658d001128bcf367c9157dfdf6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fc0000000000000000000000000000000000000000000000000000000000000000", "numTxs": 1 } } \ No newline at end of file diff --git a/l1-contracts/test/ignition.t.sol b/l1-contracts/test/ignition.t.sol index 649a182a5dbc..c63ab5c90a10 100644 --- a/l1-contracts/test/ignition.t.sol +++ b/l1-contracts/test/ignition.t.sol @@ -64,9 +64,8 @@ contract IgnitionTest is RollupBase { testERC20 = new TestERC20("test", "TEST", address(this)); DecoderBase.Full memory full = load(_name); - uint256 slotNumber = full.block.decodedHeader.globalVariables.slotNumber; - uint256 initialTime = - full.block.decodedHeader.globalVariables.timestamp - slotNumber * SLOT_DURATION; + uint256 slotNumber = full.block.decodedHeader.slotNumber; + uint256 initialTime = full.block.decodedHeader.timestamp - slotNumber * SLOT_DURATION; vm.warp(initialTime); } diff --git a/l1-contracts/test/validator-selection/ValidatorSelection.t.sol b/l1-contracts/test/validator-selection/ValidatorSelection.t.sol index 48e55f31fb5a..3982818e0e48 100644 --- a/l1-contracts/test/validator-selection/ValidatorSelection.t.sol +++ b/l1-contracts/test/validator-selection/ValidatorSelection.t.sol @@ -18,7 +18,13 @@ import {MerkleTestUtil} from "../merkle/TestUtil.sol"; import {TestERC20} from "@aztec/mock/TestERC20.sol"; import {MessageHashUtils} from "@oz/utils/cryptography/MessageHashUtils.sol"; import {MockFeeJuicePortal} from "@aztec/mock/MockFeeJuicePortal.sol"; -import {ProposeArgs, OracleInput, ProposeLib} from "@aztec/core/libraries/rollup/ProposeLib.sol"; +import {HeaderLib} from "@aztec/core/libraries/rollup/HeaderLib.sol"; +import { + ProposeArgs, + ProposePayload, + OracleInput, + ProposeLib +} from "@aztec/core/libraries/rollup/ProposeLib.sol"; import {TestConstants} from "../harnesses/TestConstants.sol"; import {CheatDepositArgs} from "@aztec/core/interfaces/IRollup.sol"; @@ -69,9 +75,9 @@ contract ValidatorSelectionTest is DecoderBase { string memory _name = "mixed_block_1"; { DecoderBase.Full memory full = load(_name); - uint256 slotNumber = full.block.decodedHeader.globalVariables.slotNumber; - uint256 initialTime = full.block.decodedHeader.globalVariables.timestamp - - slotNumber * TestConstants.AZTEC_SLOT_DURATION; + uint256 slotNumber = full.block.decodedHeader.slotNumber; + uint256 initialTime = + full.block.decodedHeader.timestamp - slotNumber * TestConstants.AZTEC_SLOT_DURATION; timeCheater = new TimeCheater( address(rollup), @@ -265,26 +271,22 @@ contract ValidatorSelectionTest is DecoderBase { StructToAvoidDeepStacks memory ree; // We jump to the time of the block. (unless it is in the past) - vm.warp(max(block.timestamp, full.block.decodedHeader.globalVariables.timestamp)); + vm.warp(max(block.timestamp, full.block.decodedHeader.timestamp)); _populateInbox(full.populate.sender, full.populate.recipient, full.populate.l1ToL2Content); + rollup.setupEpoch(); + ree.proposer = rollup.getCurrentProposer(); ree.shouldRevert = false; - rollup.setupEpoch(); - bytes32[] memory txHashes = new bytes32[](0); { - uint256 version = rollup.getVersion(); uint256 manaBaseFee = rollup.getManaBaseFeeAt(Timestamp.wrap(block.timestamp), true); - bytes32 inHash = inbox.getRoot(full.block.decodedHeader.globalVariables.blockNumber); - assembly { - mstore(add(add(header, 0x20), 0x0064), inHash) - mstore(add(add(header, 0x20), 0x0154), version) - mstore(add(add(header, 0x20), 0x0228), manaBaseFee) - } + bytes32 inHash = inbox.getRoot(full.block.blockNumber); + header = DecoderBase.updateHeaderInboxRoot(header, inHash); + header = DecoderBase.updateHeaderBaseFee(header, manaBaseFee); } ProposeArgs memory args = ProposeArgs({ @@ -300,7 +302,14 @@ contract ValidatorSelectionTest is DecoderBase { Signature[] memory signatures = new Signature[](_signatureCount); - bytes32 digest = ProposeLib.digest(args); + ProposePayload memory proposePayload = ProposePayload({ + archive: args.archive, + oracleInput: args.oracleInput, + headerHash: HeaderLib.hash(header), + txHashes: args.txHashes + }); + + bytes32 digest = ProposeLib.digest(proposePayload); for (uint256 i = 0; i < _signatureCount; i++) { signatures[i] = createSignature(validators[i], digest); } @@ -336,14 +345,14 @@ contract ValidatorSelectionTest is DecoderBase { emit log("Time to propose"); vm.prank(ree.proposer); - rollup.propose(args, signatures, full.block.blobInputs); + rollup.propose(args, signatures, full.block.blobInputs, new bytes(0)); if (ree.shouldRevert) { return; } } else { Signature[] memory signatures = new Signature[](0); - rollup.propose(args, signatures, full.block.blobInputs); + rollup.propose(args, signatures, full.block.blobInputs, new bytes(0)); } assertEq(_expectRevert, ree.shouldRevert, "Does not match revert expectation"); @@ -377,10 +386,10 @@ contract ValidatorSelectionTest is DecoderBase { l2ToL1MessageTreeRoot = tree.computeRoot(); } - (bytes32 root,) = outbox.getRootData(full.block.decodedHeader.globalVariables.blockNumber); + (bytes32 root,) = outbox.getRootData(full.block.blockNumber); // If we are trying to read a block beyond the proven chain, we should see "nothing". - if (rollup.getProvenBlockNumber() >= full.block.decodedHeader.globalVariables.blockNumber) { + if (rollup.getProvenBlockNumber() >= full.block.blockNumber) { assertEq(l2ToL1MessageTreeRoot, root, "Invalid l2 to l1 message tree root"); } else { assertEq(root, bytes32(0), "Invalid outbox root"); diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml index 9dc4bce85eaa..d03077c4fd1d 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml @@ -1,17 +1,17 @@ -vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" -protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" +vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" +protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" is_private_only = false first_nullifier_hint = "0x0000000000000000000000000000000000000000000000000000000000000000" [tx_request] -args_hash = "0x28134e7c5b93e5fdcca3cd033227c7d884654b6260e35fe79a62c2875cc1f012" +args_hash = "0x139d87547ab096780a692298348f033fc4b8ff3e89589c22de0741a2eacc8e32" [tx_request.origin] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [tx_request.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" [tx_request.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -23,7 +23,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [tx_request.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" [tx_request.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -203,27 +203,27 @@ updated_class_id_shared_mutable_values = [ ] [private_call.verification_key_hints.public_keys.npk_m.inner] -x = "0x166a909a118950e27f7d77bebf2100a8c6ede3c3d980734edaa50a370c0d556a" -y = "0x2b8b3cb702ecdd4c87853e7fef89c026d9134409612428ea7eb5d8b50a190830" +x = "0x14929bccc0eb1380698cc3bcf567c7461e2bf8c1e285325ab138d2250f5022bf" +y = "0x12c8161404d412e1202acaaccc32ba1a25eebd9e74f8db3e28a047a007a000e3" is_infinite = false [private_call.verification_key_hints.public_keys.ivpk_m.inner] -x = "0x2216016da338d06d819d13673e387128396ea20a0d7bad4318ca43cbdf746088" -y = "0x00d53b727ceaf7cf2102bb654812c3e2021fe0cd9e759a69ad4d17cf08fc47ea" +x = "0x03cb52c120601c66a5748ce547d055f3dca9ebd1b874bb0e9d74d58f9331be89" +y = "0x2b0d2a7f1726b9f1ab14c2d5746581920d5368a4aa0d59dd3455c1325581276d" is_infinite = false [private_call.verification_key_hints.public_keys.ovpk_m.inner] -x = "0x1e2d624e72153941376418e75aeba9f80f8af63c080f0fb67b5afbec9116247a" -y = "0x121404fa708bde1769b432e7c17ff00774431091345ae52ad237c5cab70a6083" +x = "0x005788dcd3986305cee81f083befd11557a20d9e6277040f7703c285929ba88c" +y = "0x29946c813ed86140cc5864323f9357de745a31930828f63d62ccc40d1a4daf0f" is_infinite = false [private_call.verification_key_hints.public_keys.tpk_m.inner] -x = "0x19b6ed050f5c7de615a3316276d2962f048c288f033325f8a448dbdcfc6e370d" -y = "0x26f89fa81c4ef6ac92c9a4e8c49f4d75b9c5d34bb5c5b8fa2c059adf1f37d2ec" +x = "0x195bdadea0aac65ac7d0085b897a505c7b27009a9c0abf20c04fc3ed909165fc" +y = "0x0e81a9071ab67cbb3e927f9b781c98f0057a1b43666038d3cc7a33c060c0c7a5" is_infinite = false [private_call.verification_key_hints.salted_initialization_hash] - inner = "0x2298b4f484535ad6ed96c82ee334bdfe0777f802a00b4ad0a431af277f01f3bf" + inner = "0x2beec4908f158d7dd2997223ef10ee354a517625239964b0e1fe785d748bfb3d" [private_call.verification_key_hints.protocol_contract_membership_witness] leaf_index = "3" @@ -238,16 +238,16 @@ is_infinite = false next_address = "0x2cf7fc7ccdf59722c59c05ff6f5aa94130e325ac06867ed3f9a4d73fc5d998d7" [private_call.verification_key_hints.updated_class_id_witness] - leaf_index = "117" + leaf_index = "132" sibling_path = [ - "0x105a225940ba2faadd5e3aa7952634239511e3ae958d141e98b84ea226fb6c48", - "0x11e4e0f3728dd4c61790345a1112462fc40b1d1568ff60755023106b8bb6d913", - "0x29208ecc66c5a3f559855bd44866e51a9e1b053fe1b60786941ab50664c75667", - "0x27cd3aef5c95635063babffad9f264bc89a06a1acb3af8066efd51befe6a9b83", - "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", - "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", - "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", - "0x1f6530bcb070a2a82b07f777efd4131537da992f8961b36c668e8d9e8617d7cf", + "0x26fb98fda5edd8bb14225c525238f1d838c0a8c675533155980093a383ad125e", + "0x10e8080c0a12d7d2484da03074b38978771b4d40c59aba99cd8125b1f3e03b7f", + "0x23d831b2872f5414ed12d64759caf03d5303271719967d44f863d1afac50f0b7", + "0x2547d5a6061ddc993e8dd11601b740171271ea2e57235208b3928294c8ee1080", + "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", + "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", + "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", + "0x01a037ca0215a9f63ee096136b01f47a58124e5f5e405fd6fbd1271b558358e0", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -283,13 +283,13 @@ is_infinite = false ] [private_call.verification_key_hints.updated_class_id_leaf] - slot = "0x02fbdb303c826b62fb830b2523ea1e0a221e1e9dfb00d285b5618bf6bcf03ec5" - value = "0x00000000000000000000000000000000000000000000021e19e0c9bab2400000" - next_slot = "0x054016215fb57930dead9a73f1073bee7b81ebc6e3d8a3f0a386f3b82f7cedf5" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000076" + slot = "0x1c91ef54de47b4d53cab759cfeea5729e96435e0817119ab72174b83c0f61148" + value = "0x05208323f49682fc3367ed42a0212854a797b5372b0cc6bc5493b00e96ff256d" + next_slot = "0x1f121c47ca07308912a1229b2e40a4ada4fff8fa451a5dfd076806491991618d" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000088" [app_public_inputs] -args_hash = "0x28134e7c5b93e5fdcca3cd033227c7d884654b6260e35fe79a62c2875cc1f012" +args_hash = "0x139d87547ab096780a692298348f033fc4b8ff3e89589c22de0741a2eacc8e32" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000001" end_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000004" @@ -307,13 +307,13 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" inner = "0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000" [app_public_inputs.call_context.contract_address] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [app_public_inputs.call_context.function_selector] inner = "0x0000000000000000000000000000000000000000000000000000000027e740b2" [[app_public_inputs.note_hash_read_requests]] - value = "0x090e3c92b33874aa2c00c8d3e46ea329d557122be0cf8a335e823d7c48200533" + value = "0x0ea383dca7c0d16bd98e98a858c92f8e0869801a50f07725869204e2701b062a" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [[app_public_inputs.note_hash_read_requests]] @@ -855,13 +855,13 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.public_call_requests.inner] is_static_call = true - calldata_hash = "0x2defd00bf269b7391e46320a4fc005b50585a46cdd8ba1c2b0858fea947d7039" + calldata_hash = "0x061d4e77cfa15a0903d5dd5c81bcd524ba0c2a38cb1ae6c358671978964a32a6" [app_public_inputs.public_call_requests.inner.msg_sender] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [app_public_inputs.public_call_requests.inner.contract_address] - inner = "0x1a3a98220a436a1096c5bcfb137a95786dd057109e5e8f50b778fdbfdfd7ba88" + inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" [[app_public_inputs.public_call_requests]] counter = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -1504,16 +1504,16 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" - total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" + total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" + total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" [app_public_inputs.historical_header.last_archive] - root = "0x0e8ef7f12683462ce5482c5c79c7a7bded4a0b57bd8233615b344388d0db6f39" + root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [app_public_inputs.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x008c7cd47a688e5b2021e9f2b9dbcf7365dec5a004311ad5c5138303cf6d76f1" + blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -1522,37 +1522,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [app_public_inputs.historical_header.state.partial.note_hash_tree] -root = "0x1dee6637bc05b1fd02c2d8a42eab028959018f5b086d0637007ba626ab826e84" +root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [app_public_inputs.historical_header.state.partial.nullifier_tree] -root = "0x1a443dd12842b2c2f4fadbfa63351ff72577b12b0059bdc634ede1a83d51e5fa" +root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [app_public_inputs.historical_header.state.partial.public_data_tree] -root = "0x189e9a705c609addf8f5c6dcac63e9a18ee30a94330b79656a1ee99b0c57fede" +root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [app_public_inputs.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680783c5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" [app_public_inputs.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [app_public_inputs.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" [app_public_inputs.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" [app_public_inputs.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -1564,7 +1564,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [app_public_inputs.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" [app_public_inputs.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml index d095320ea9eb..920f58c1a24f 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml @@ -3,8 +3,8 @@ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000000" vk_path = [ "0x2f7990492fb38523aa684577903d0bd007b968530c8e40387fcd1574e02a63cc", "0x162832a9703d2788b5221ff51bcb8bfe5b55cbe2bbb917fc13faeea857e77096", - "0x0c3072a0660f951b5a4fdddf5c2d9132547f01bef6df9b662f3620c19f50997e", - "0x1a8c157a307350dc57f06625e220057348008c02bc50c04154826acb1153bb77", + "0x0fb6e22d807026d64881dd75926af825595d6b6bbd0c75415e2bfaf93e0c53a2", + "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -160,23 +160,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = true -claimed_first_nullifier = "0x0a16a75643092d5aef61c9eb71ff79714f17615f924f1ba3fa5a547816549f2c" +claimed_first_nullifier = "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" - protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" + vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" + protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" - total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" + total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" + total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x0e8ef7f12683462ce5482c5c79c7a7bded4a0b57bd8233615b344388d0db6f39" + root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x008c7cd47a688e5b2021e9f2b9dbcf7365dec5a004311ad5c5138303cf6d76f1" + blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -185,37 +185,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x1dee6637bc05b1fd02c2d8a42eab028959018f5b086d0637007ba626ab826e84" +root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x1a443dd12842b2c2f4fadbfa63351ff72577b12b0059bdc634ede1a83d51e5fa" +root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x189e9a705c609addf8f5c6dcac63e9a18ee30a94330b79656a1ee99b0c57fede" +root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680783c5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -227,7 +227,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -239,11 +239,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000e16" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] -value = "0x090e3c92b33874aa2c00c8d3e46ea329d557122be0cf8a335e823d7c48200533" +value = "0x0ea383dca7c0d16bd98e98a858c92f8e0869801a50f07725869204e2701b062a" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.contract_address] -inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" +inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] @@ -2739,7 +2739,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0a16a75643092d5aef61c9eb71ff79714f17615f924f1ba3fa5a547816549f2c" +value = "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4787,7 +4787,7 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000000" inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.private_call_stack]] -args_hash = "0x25999c2bb2c33e60bc726b1e6848ecba60e6b233cb65af291299a7d77d0f5078" +args_hash = "0x1640ca23ce502be7bc839c00d22cf213785a1d35d51364d0cc6aea82ce38b25f" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000c" @@ -4796,10 +4796,10 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 is_static_call = false [previous_kernel_public_inputs.end.private_call_stack.call_context.msg_sender] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [previous_kernel_public_inputs.end.private_call_stack.call_context.contract_address] - inner = "0x1a3a98220a436a1096c5bcfb137a95786dd057109e5e8f50b778fdbfdfd7ba88" + inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" [previous_kernel_public_inputs.end.private_call_stack.call_context.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000754fb767" @@ -4941,7 +4941,7 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [private_call.vk] key = [ @@ -5131,31 +5131,31 @@ y = "0x2039907fe37f08d10739255141bb066c506a12f7d1e8dfec21abc58494705b6f" is_infinite = false [private_call.verification_key_hints.salted_initialization_hash] - inner = "0x12860c6a26c4574d4becdb0a48ed925d1cd4b3f3677e475f7a5b7c704dfe7a49" + inner = "0x1e054a08c6b14eb4ec62d0f4962be7b8b6beea884ebd41d433a5b11d5d2d9b91" [private_call.verification_key_hints.protocol_contract_membership_witness] leaf_index = "1" sibling_path = [ - "0x2e088546ab38e98f756fc08081acd57a45fdbd6a33333ec70f632f0055087fa5", - "0x12662e3b79d69dc21fcbf65509cbfceccfbed9aa7a10a4eeaa19524d85da613f", - "0x10d10d96dc8e1092a32f13d5f9721a770b224096ac4c85587538131ba65cf3b1" + "0x2fbcf0519c1fadbbc68489007df34fb2219366aad95f432d61fd0207ea20a0d4", + "0x17bf4c3eaf96016559689b18cc6bf78ef180f902fcd49bc260360d1cbf7331b0", + "0x2b7e459a5b9ad8b0dc63d6ccdb5735dbce4847ad93f72e4d5c5b1b3ce3874373" ] [private_call.verification_key_hints.protocol_contract_leaf] - address = "0x0983655c6c7e92563641c1f4839fffd29e6221b1728234d429f2e0fea2324694" - next_address = "0x1da53067828d3928bbcd378b5ebfc80d169b56caaca51438b17beb3a3e687757" + address = "0x2946f5341bbc4252fde9cb5a18e6a165c224847fc2c01b23872660edc731c597" + next_address = "0x0000000000000000000000000000000000000000000000000000000000000000" [private_call.verification_key_hints.updated_class_id_witness] - leaf_index = "139" + leaf_index = "117" sibling_path = [ - "0x1d950f264b12425d37dc9dad1db943ded39395a62514d8453a9f87450c5f122e", - "0x25063f5efe4df62103dac02388ad73b16f5624006fabe3a468fc1f85213b1115", - "0x0a80a826c40a9e373f7d1f2ced426871da0b20102a706ef5c504fe6d1b885161", - "0x1d1e0f97ab3d47beff12f917bd60d6fa1ce0596cbd981c6ec5fac66d60fb333d", - "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", - "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x29ecdc1c18c3999c91f21c0acb77e5383e46f8b85ad106720409815e1d463740", + "0x09430e1cfe5d6ad5081557ca30123c8929a823feffa96e9d0a947ad3863ab6b0", + "0x11b9c69ff16278bc3fb24e182e439e5dcba5ddc337e92971219c0835a85d2fc1", + "0x29208ecc66c5a3f559855bd44866e51a9e1b053fe1b60786941ab50664c75667", + "0x1d785b5957a28dd21f9e86422a5925e3d26f9818881f7e98f03ba9b0673c8077", + "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", + "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", + "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", + "0x182127ee0c015dde7b068973d43d3909bc7435ada18f0bc22efdeaf9618c938a", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -5191,13 +5191,13 @@ is_infinite = false ] [private_call.verification_key_hints.updated_class_id_leaf] - slot = "0x142c9cb52b4cc578630b15c79176858858a4cbae8d7c29358d66da0fa361ff44" - value = "0x0000000000000000000000000000000000000000000000000000000000002710" - next_slot = "0x15bba6acd95100f11c2500c9d4b9dc6d82513db96dad6bb9038d1d28c81f6650" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000079" + slot = "0x046006f5fbfe9fb68f7c1d8b5acdf9e8ab7602b09cd4d074c027de3662e44586" + value = "0x00000000000000000000000000000000000000000000021e19e0c9bab2400000" + next_slot = "0x056877419ad7af24f1555fa5b2464a233314a662fff6ce8a553794a51f55e14a" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000076" [app_public_inputs] -args_hash = "0x25999c2bb2c33e60bc726b1e6848ecba60e6b233cb65af291299a7d77d0f5078" +args_hash = "0x1640ca23ce502be7bc839c00d22cf213785a1d35d51364d0cc6aea82ce38b25f" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000c" @@ -5212,16 +5212,16 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" is_static_call = false [app_public_inputs.call_context.msg_sender] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [app_public_inputs.call_context.contract_address] - inner = "0x1a3a98220a436a1096c5bcfb137a95786dd057109e5e8f50b778fdbfdfd7ba88" + inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" [app_public_inputs.call_context.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000754fb767" [[app_public_inputs.note_hash_read_requests]] - value = "0x1a4d4d36c8c7cd57724c753d7fcbcfbbf3f3c4b8d3e556ffc2945aa1ceca0462" + value = "0x12a2c79d4397a913fe115b6d9cb47535f8f2445ff499251e5e1c7558c724db17" counter = "0x0000000000000000000000000000000000000000000000000000000000000005" [[app_public_inputs.note_hash_read_requests]] @@ -5285,7 +5285,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifier_read_requests]] - value = "0x1a3a98220a436a1096c5bcfb137a95786dd057109e5e8f50b778fdbfdfd7ba88" + value = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" counter = "0x0000000000000000000000000000000000000000000000000000000000000004" [[app_public_inputs.nullifier_read_requests]] @@ -5352,11 +5352,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" sk_app_generator = "0x0000000000000000000000000000000000000000000000000000000000000030" [app_public_inputs.key_validation_requests_and_generators.request] - sk_app = "0x0791b61e2938a026752d3ac4aa93da24bb50dd72d7c31667d9ae15fe8ab9cb32" + sk_app = "0x20c43de40ad1e856427a2cd25fb42ea6235c53ce7d6b237eccf9ff94858a1a28" [app_public_inputs.key_validation_requests_and_generators.request.pk_m] - x = "0x166a909a118950e27f7d77bebf2100a8c6ede3c3d980734edaa50a370c0d556a" - y = "0x2b8b3cb702ecdd4c87853e7fef89c026d9134409612428ea7eb5d8b50a190830" + x = "0x14929bccc0eb1380698cc3bcf567c7461e2bf8c1e285325ab138d2250f5022bf" + y = "0x12c8161404d412e1202acaaccc32ba1a25eebd9e74f8db3e28a047a007a000e3" is_infinite = false [[app_public_inputs.key_validation_requests_and_generators]] @@ -5525,11 +5525,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" is_infinite = false [[app_public_inputs.note_hashes]] - value = "0x0d94b47f516e1bc804bc9ceaf8969503ab0fa5a53390540bb390d0d0166d4dd9" + value = "0x289c48dbfefdcb68671cee5424de1f20cbd0be9cd8bab4803c8b38f33073a780" counter = "0x0000000000000000000000000000000000000000000000000000000000000007" [[app_public_inputs.note_hashes]] - value = "0x187934371277108daa69d1a8689073f88fc1fca9e9d59b1974eafd514c180956" + value = "0x0018e07ed7c517cde94adf56f29f3caaeada2615e8c8dc16848a13f6702e791a" counter = "0x0000000000000000000000000000000000000000000000000000000000000009" [[app_public_inputs.note_hashes]] @@ -5589,7 +5589,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifiers]] - value = "0x1a56421ef26d35475815c0a6f9e0d91dff79972bff8c7c3795f798e809c8c8ae" + value = "0x1752e2268780888a971306cd83187cacfca3789b54311897fc16c28e26bbe420" counter = "0x0000000000000000000000000000000000000000000000000000000000000006" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -5996,24 +5996,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x1adc989293ce7191ad4fd15c6a9fa163c8e0887bde55aac4d50eeb4fe9154b08", - "0x0e0fcb4369064bab84d2d7df3c351ab602f6362863a467b6c165daf0cbe87a5f", - "0x000141157cd8317ee909b6040fc21bcd74de9e0465c060b431786c704f3bfaf6", - "0x00d495ffbd02b9dc1e6a28b48b267a2568f6e0683dedd614f8ea29b70917c154", - "0x00e3fecc32f00c5f3d36ce22d3aae11757871c90098d2c4b30686e118af2903c", - "0x00e53b1bc2515033b82693c46bcc50b0093086fcbd8af596f60b34dae808e6e4", - "0x00bc4269217739ff39868fe4e63df8786ac81a4ad0532133d8e13b0d6a49b722", - "0x00c04a5bd90cfdfd50ddb0c4d03919d2450f33885f79f8d60b60f80a54e19ab7", - "0x00ab8e97791f0c59a553dac6098e18ec7969a6fe5301b98047bd22033d33d6f9", - "0x009dadff560ff0aa839555afbc9837940af1e8f64bf64d4d15903c53f4674b10", - "0x00552d853d003f61e87d8a9510b67901df4dd1b9fd3a7166089aed0d2fd145f6", - "0x005cbdb606b47661e6834bceccc9ee6f1aec359db59db9b55207549b59dd3f46", - "0x00751afaa9834cc2cd28ac86d0e9611ca7e79ed1b4e866b96b1455fe34084fe6", - "0x008666d98872090aef7f12ddfa11d7f1ed464003dfbb45a6c185b1bfeab6fcfd", - "0x006b788e6adb0ca6ea6bc57c639ecea5ece32e7b2b3c3dea5df628c1da180dca", - "0x002f006f1d593610e33b7f54f1cc02bb595bcadf2a2040acef6be5c1c4f6cefb", - "0x00cef445d17a33c4b484ebf20fc2007e6130becf1502a76e2dec4cd26a8b760c", - "0x00daf3a0896a6caab0029683bd1203a6d98c6dfcd22402c8a39fe83e411306e0" + "0x048d46e3fa90c363ea5665d35f25a29122bf2d6f18f948fe5ed9af8a1bf3ff62", + "0x2bdd68daa386f98df39612ed98cdd2fe297eabacafab88c061d589788046ea26", + "0x00006f6ccb8b4e74446082bf3d11738658bbf3fa34d47f14c4c4a13bf86794d3", + "0x0020f058a0534d05d96968dd728d0cb365d8d5965a175fdf7581d9c7e8e77b5a", + "0x00162a2ade7c948cb0af4f97cf0415edf77552eae5d160477c624a8413f606e0", + "0x00d99886126f6ff05c81c48072deacd32101cd2a9bb8a87e45ab769755d312fd", + "0x00e380cd9edfff77e977444bb25177c9d75bdfe467e20cdebc3ad371d266a5f2", + "0x00cdcf3e25265ec1377d10c18fda1b2dea4c45396d6af236aa7521cca2059dc1", + "0x006914727a686cdf46f11e09c2b3c6abf8fe8c2beaec5dd42bf1a8db2795c3f7", + "0x005ea0d20f31d261caa035fa64d2b7a7f7da10187016179d202606a0371853f4", + "0x002be4525d0c7401981d827aa802105302b1bd039de814cf7b84320cb4a83c04", + "0x00ce5881e355c5856ec5a1006e14ca6982bc05854312e30f4b65eca269daa770", + "0x00e99644a2b6ecd701e5d3ff26d34acac51ceedcaea1363cac01904494b87e07", + "0x00ea3d29daf251ad75b98b9a643bb25d7eb2ba6cd8d38a0142ef237d7f453140", + "0x005b1018fed544b94a5c72bf5a0622111148f8800dbe845cda60e6bc81b90bf1", + "0x009ba873d531a93bd256f2784df12cf805eed582459fc55a9815386429a86cd9", + "0x00318500e57624369a4f1fd09e8370aa59e721d6e2a5d0a291a302f9584b8eee", + "0x00c9694dd50f6a59b42a12173548d15cefe282b15037f759413a5f2503f33838" ] [[app_public_inputs.private_logs]] @@ -6022,24 +6022,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x0ab25521809d64308a2ac0146c3caadf01831b1a46e19c6cba461bf834ee87cf", - "0x09b2bb6462013186ec836afe3976d3cb3f067c42e2bfbedfe6c80a7aebdb06f7", - "0x0001902b1383e5c3784f94e7bde749322faeca10b8a380ed4d66d18acee3d2b8", - "0x0025160dfa77a8849cf217421882eb624f9417328d5c8ed27fdcb52c65c81eae", - "0x00435a83069c93173eee86c86ffdc6a4091ebf86331bfad574e3c35044c0ca9c", - "0x00aa4dee2f8bc0a240cac5b859387c7f68ae9dbeb147390dc554017b4c085773", - "0x00ab70d657a9f61225791f1fefc99937b894b45fabd75e162d0a5dc81fb916a9", - "0x00a4782284772770a00ad00e3ef7d3d11724120421df1b3939c87ab70da4381d", - "0x006d1c13b5e2d2586fdf9a9fec91c7d48960e623d92c74ca47dc25354d908cf0", - "0x00af8d53e4264e27df27495180ae90341a4d8658379600f7878a426ecb435691", - "0x00ad8a3f3d38c408e9499a8c71ccd186b6a2b08c1ad5b83a72b81c7a24344a91", - "0x00966afd0424ff544bd9a20b4f78f963d8cc93c8bbecc33ca36116422394f5e1", - "0x0028815998511c1908df89bed4b620fd969d9e3b6aaa051cc22feeb131b1f26e", - "0x00149d0dc6e33d70d13f715cef27a262d9a48081809435189344041f60a7630b", - "0x00a7f6c3d55f6c40688b6203fae3f50a41b6eab0d00d9df047abe8324fae1a19", - "0x00972556ce2fe45581174b6aebfe5c9af8761f3f23dd931ecea0d7a4458760b6", - "0x0049ebfe6a2761a3192e8e5bf45dd53e8db8dfa6bbc41d8e7e318ea696a11015", - "0x0075bcb37cf025ff0a2cc50c86aaf5bbb18f5c453eff9c49548e042cf975bc13" + "0x19f6d8f00f0488d6e14bbcdcebc687bb081b622d76e1a533432932eb8ce6fc4d", + "0x0ca8a9af628946a49758ee14e7e3de6270b9725be6739cf0e81cf26a1d611522", + "0x000007b72a3575b18003fcb0ad2588a6ea7b05016917f43832d0d3e3eaf63802", + "0x00b9c532a777b18730b53be76ad1d869c47ee5133f5c1ea8155a3bc2a561ccf6", + "0x0078fdbbf99c655e3c7645757d1612b1288f94335500b045b4ac0dfeec8cd156", + "0x00a18fe56fb38d369efaaa5d75119709c64b1a2675f2d34ec9cce151e0c32c6b", + "0x001291a4e1511abaa7b82abcab90228b4cb986a0aaeec173e141621feab6f475", + "0x0080aea6c107610e2694c9d5cf44aaed86a21d11adc6d92f38030e827b1c3a58", + "0x00c547b22874d0b514d08d2882dc88c2ad86c3825c6a9aed804d2a16170e8348", + "0x00a2d17a8e2382129f98b7340867fc1d30dc0cdba8850ddf25d1acb19a8e4ed4", + "0x00bd9e4b7a8893dfca7777df62e49c614c3470cbcae98238903b15c5b199ca33", + "0x0078fa59a69260a5de7785b4eca42437c8860f3268f2b8e2c98f2e3762901912", + "0x005585d2301901b697b3fdaa7cbd7c33fd504df0ffdbc6541815fb12400b4632", + "0x0090c0c7c2cbc58a982ddcd82129f74dc18c813df638a0153bdae4dc00485336", + "0x004e90e816954ccd35172be795f48efee75545be02a1110da4b30fc6991d8939", + "0x000a4a4691bfc05b252b9aab962caa5b91afb03eb7e6a94cd3fba1db92127b1e", + "0x007935e583e890b6e31f0413e382c6af89cb501f80e6fccf29d17a3677c2b464", + "0x005fad622eab5e7d7fcc359813ff0a1657dc4c9e89dc250cb1b258c913750c92" ] [[app_public_inputs.private_logs]] @@ -6048,24 +6048,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x0797935264989a86a53f17afd8e84510c5e37dde0ccac67e236099b38c6571e8", - "0x1e503fdfa7460705ea519e194b02dbde0895dc18c60888147a0185b3d45445aa", - "0x00013f6032397e68948c5c7e2286641188d22eea3436149249e63896016e9dc1", - "0x0060e3d27353bdbd2d7182f46d7859fef235977b54f0ad6362e44d331045fde9", - "0x00b8ed22f25afec74754bf7d85f2c08fe1600b0ec1908ff5943f88f73e6954aa", - "0x0063713053b899a97f698dc8135c5e6af55534b6eee5687e2ea33032fe0bb238", - "0x000aaa5d01d6d69dc86c7f401fe207bed7dd67d89d0ce7d54a6fe5bb2f2b879c", - "0x008f06a747c4c5df72a7677ea76624e76c0f1ed2b240a52ad07b688daf681312", - "0x0013b08254aa3f1f1d0050c6cf286bd6687360bdb6508ba34db1af8a9e13def9", - "0x00c8575364ddf160a61d4e6052f65688999e13495b40dda884a7905510ca8250", - "0x006ba2b913d961acff70cccab5b4975b0767cc806052b9ea1d9747d15466fd0d", - "0x006d20c223aafddab275d4a5e680c6531a431ec73cf5c59c0be57c73236d0689", - "0x004de43069703e31933f6f1154d3c1180a7abbe8bcac3ced8a31512b018cdf53", - "0x00f8796bffd6dc3824a99d0544e32e7856ec432a4f76ac465fb7b0260f741d08", - "0x003298e3fabde03fa630df51018fc61b488a199eaf21653d81841d0e163a550b", - "0x00b85e1f87c6606a7ff130b57887a5da14408d0bdb2fddd8a3d2f1d54fba8006", - "0x00b2d24ad2f108368ba796326edc830736fa0153f99afaf6a52b134d26316815", - "0x00b5812b4e05cb801ea2a4b78a1a27e1f67098b56a61973cd7c54d74cbe5210f" + "0x1a05941a5a4e49592f7fcbe8854d5a0200ef911c06264c737e1942c3e02e1ca1", + "0x21e89c900404aa792f14a881d334778880c8b3cdb3e1b28108c027653c4abb6f", + "0x000183e152bea35725090be7414e9c4881162ddef2e87909d193bb4a39c223e9", + "0x00dd46fc8d3f7c5c1df7a8e8b72cb3c5ce09fe93fff226498decdc057fa0ac7a", + "0x0099fc01c4a8706ad4b3aec3d3169aaa7f1da6fd56acb7f3e513d8d0a8f42d92", + "0x00b73bed2d24f8b35787aeb686bca5d215a21ca4ea9ae278e7ce84a6a18f64ff", + "0x00b8cb7c4f092fcf6c34fbf6457da7653dac83c00533a41ff46aed4a50292d7f", + "0x00d2ec3253dc80e8b986351a8bc22b7342c248c062867d61183de02f0bfcc93d", + "0x008884a30ccaf624787a30ae849e090f5cdbb9c680bbb77f045ea22ad9584613", + "0x00f0ce4234d291add28b800394ceb06dc30c1c562bd9abe281807f6345157344", + "0x001f54c1c7f4947838b3a650ae4dd674bc177bb5da8934007b6592a4f589fbd2", + "0x00ff870df8bde260b20b45ce94ace25c9cf5d90ec50da0db2e21b4a47efdefb2", + "0x00fb6d622ce89228fba40dec2567ed9a1e4bcb5955b55129be76019f9ac446c5", + "0x00fa22dd89dec95309a7ef6df8c2d515069003bf78efd44edf62c7de0535617b", + "0x00185481635a7e7280b58e32e81465d7840ef349f9aaeb1553917425a3c1e469", + "0x005cfa506fd18ae5cadcc60470ddb9ba3736c288085c7d39270e4eff490a64b7", + "0x00969a720629f33dfffe06fda05e96f7d2faf63c048efbe62274e2d6c54bc464", + "0x008c469d709e7b3f258c7fa40998eca40b73ca62ae8885e19cae72ad07e0438c" ] [[app_public_inputs.private_logs]] @@ -6412,16 +6412,16 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" - total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" + total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" + total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" [app_public_inputs.historical_header.last_archive] - root = "0x0e8ef7f12683462ce5482c5c79c7a7bded4a0b57bd8233615b344388d0db6f39" + root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [app_public_inputs.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x008c7cd47a688e5b2021e9f2b9dbcf7365dec5a004311ad5c5138303cf6d76f1" + blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -6430,37 +6430,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [app_public_inputs.historical_header.state.partial.note_hash_tree] -root = "0x1dee6637bc05b1fd02c2d8a42eab028959018f5b086d0637007ba626ab826e84" +root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [app_public_inputs.historical_header.state.partial.nullifier_tree] -root = "0x1a443dd12842b2c2f4fadbfa63351ff72577b12b0059bdc634ede1a83d51e5fa" +root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [app_public_inputs.historical_header.state.partial.public_data_tree] -root = "0x189e9a705c609addf8f5c6dcac63e9a18ee30a94330b79656a1ee99b0c57fede" +root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [app_public_inputs.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680783c5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" [app_public_inputs.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [app_public_inputs.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" [app_public_inputs.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" [app_public_inputs.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -6472,7 +6472,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [app_public_inputs.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" [app_public_inputs.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml index 8d8b41628ce3..facd98dea6e3 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml @@ -3,8 +3,8 @@ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000000" vk_path = [ "0x2f7990492fb38523aa684577903d0bd007b968530c8e40387fcd1574e02a63cc", "0x162832a9703d2788b5221ff51bcb8bfe5b55cbe2bbb917fc13faeea857e77096", - "0x0c3072a0660f951b5a4fdddf5c2d9132547f01bef6df9b662f3620c19f50997e", - "0x1a8c157a307350dc57f06625e220057348008c02bc50c04154826acb1153bb77", + "0x0fb6e22d807026d64881dd75926af825595d6b6bbd0c75415e2bfaf93e0c53a2", + "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -160,23 +160,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = false -claimed_first_nullifier = "0x0be3c65c2d49ad3ecf8cf1aafc68ce1eb938503b9a991a3ab75dd10b04dd7f45" +claimed_first_nullifier = "0x0cfcf5bbf3cae528efc744e0d52c0b52050a61658d3d506152221fe0d9442467" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" - protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" + vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" + protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" - total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" + total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" + total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x0e8ef7f12683462ce5482c5c79c7a7bded4a0b57bd8233615b344388d0db6f39" + root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x008c7cd47a688e5b2021e9f2b9dbcf7365dec5a004311ad5c5138303cf6d76f1" + blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -185,37 +185,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x1dee6637bc05b1fd02c2d8a42eab028959018f5b086d0637007ba626ab826e84" +root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x1a443dd12842b2c2f4fadbfa63351ff72577b12b0059bdc634ede1a83d51e5fa" +root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x189e9a705c609addf8f5c6dcac63e9a18ee30a94330b79656a1ee99b0c57fede" +root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680783c5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -227,7 +227,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -239,11 +239,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000e16" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] -value = "0x090e3c92b33874aa2c00c8d3e46ea329d557122be0cf8a335e823d7c48200533" +value = "0x0ea383dca7c0d16bd98e98a858c92f8e0869801a50f07725869204e2701b062a" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.contract_address] -inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" +inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] @@ -2739,7 +2739,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0be3c65c2d49ad3ecf8cf1aafc68ce1eb938503b9a991a3ab75dd10b04dd7f45" +value = "0x0cfcf5bbf3cae528efc744e0d52c0b52050a61658d3d506152221fe0d9442467" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4375,13 +4375,13 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000003" [previous_kernel_public_inputs.end.public_call_requests.inner] is_static_call = true - calldata_hash = "0x2defd00bf269b7391e46320a4fc005b50585a46cdd8ba1c2b0858fea947d7039" + calldata_hash = "0x061d4e77cfa15a0903d5dd5c81bcd524ba0c2a38cb1ae6c358671978964a32a6" [previous_kernel_public_inputs.end.public_call_requests.inner.msg_sender] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [previous_kernel_public_inputs.end.public_call_requests.inner.contract_address] - inner = "0x1a3a98220a436a1096c5bcfb137a95786dd057109e5e8f50b778fdbfdfd7ba88" + inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" [[previous_kernel_public_inputs.end.public_call_requests]] counter = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4941,7 +4941,7 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [hints] validation_requests_split_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" @@ -5470,9 +5470,9 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x00db14b195c8aaf17f0c19f8634f9021172b04263163403158a9025633ae6fcb", + "0x175529807fd3b9bad572e49f899865acb3f60a882918de393de4bdd7f47b8efc", "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", - "0x1cb28a3b7155e6364727297a08ffd0aff3c0dfc6a0e3aef8427dd702a4571b55", + "0x206342a20740a6c07062992d64a7af9702f686f9011655283541b16a4e32a08f", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -5507,7 +5507,7 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 ] [hints.note_hash_read_request_hints.settled_read_hints.leaf_preimage] - value = "0x090e3c92b33874aa2c00c8d3e46ea329d557122be0cf8a335e823d7c48200533" + value = "0x0ea383dca7c0d16bd98e98a858c92f8e0869801a50f07725869204e2701b062a" [[hints.note_hash_read_request_hints.settled_read_hints]] read_request_index = "0x0000000000000000000000000000000000000000000000000000000000000040" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml index 091a162bfc3c..1007a30535c3 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml @@ -6,7 +6,7 @@ vk_path = [ "0x0a53612b564d6171b0b13b499eaed0cf2d21e8a6a678335f42ec8f30eb24a08a", "0x0e892653be0889bb19c33c717d702acef52f0bf85a230de172b8cf0b9fe0fdb4", "0x0f6bd8ccfb76feec5b9e3d00618759f8f9063f425f6518599bb779516323440f", - "0x0a83c402ec9b45af8f6379bb9b9e4b43fb7f9f95e629636bdb9c31523007079a" + "0x2ea5aef0b90c1efadd6c9aa97fc0ae6895a0c16f489fe5edada54bba23105b68" ] [previous_kernel.vk] @@ -160,23 +160,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = false -claimed_first_nullifier = "0x0be3c65c2d49ad3ecf8cf1aafc68ce1eb938503b9a991a3ab75dd10b04dd7f45" +claimed_first_nullifier = "0x0cfcf5bbf3cae528efc744e0d52c0b52050a61658d3d506152221fe0d9442467" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" - protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" + vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" + protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" - total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" + total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" + total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x0e8ef7f12683462ce5482c5c79c7a7bded4a0b57bd8233615b344388d0db6f39" + root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x008c7cd47a688e5b2021e9f2b9dbcf7365dec5a004311ad5c5138303cf6d76f1" + blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -185,37 +185,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x1dee6637bc05b1fd02c2d8a42eab028959018f5b086d0637007ba626ab826e84" +root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x1a443dd12842b2c2f4fadbfa63351ff72577b12b0059bdc634ede1a83d51e5fa" +root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x189e9a705c609addf8f5c6dcac63e9a18ee30a94330b79656a1ee99b0c57fede" +root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680783c5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -227,7 +227,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2739,7 +2739,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0be3c65c2d49ad3ecf8cf1aafc68ce1eb938503b9a991a3ab75dd10b04dd7f45" +value = "0x0cfcf5bbf3cae528efc744e0d52c0b52050a61658d3d506152221fe0d9442467" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4375,13 +4375,13 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000003" [previous_kernel_public_inputs.end.public_call_requests.inner] is_static_call = true - calldata_hash = "0x2defd00bf269b7391e46320a4fc005b50585a46cdd8ba1c2b0858fea947d7039" + calldata_hash = "0x061d4e77cfa15a0903d5dd5c81bcd524ba0c2a38cb1ae6c358671978964a32a6" [previous_kernel_public_inputs.end.public_call_requests.inner.msg_sender] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [previous_kernel_public_inputs.end.public_call_requests.inner.contract_address] - inner = "0x1a3a98220a436a1096c5bcfb137a95786dd057109e5e8f50b778fdbfdfd7ba88" + inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" [[previous_kernel_public_inputs.end.public_call_requests]] counter = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4941,4 +4941,4 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml index a7978516f4a1..84bd1b49b4d5 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml @@ -6,7 +6,7 @@ vk_path = [ "0x0a53612b564d6171b0b13b499eaed0cf2d21e8a6a678335f42ec8f30eb24a08a", "0x0e892653be0889bb19c33c717d702acef52f0bf85a230de172b8cf0b9fe0fdb4", "0x0f6bd8ccfb76feec5b9e3d00618759f8f9063f425f6518599bb779516323440f", - "0x0a83c402ec9b45af8f6379bb9b9e4b43fb7f9f95e629636bdb9c31523007079a" + "0x2ea5aef0b90c1efadd6c9aa97fc0ae6895a0c16f489fe5edada54bba23105b68" ] [previous_kernel.vk] @@ -160,23 +160,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = true -claimed_first_nullifier = "0x0a16a75643092d5aef61c9eb71ff79714f17615f924f1ba3fa5a547816549f2c" +claimed_first_nullifier = "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" - protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" + vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" + protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" - total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" + total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" + total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x0e8ef7f12683462ce5482c5c79c7a7bded4a0b57bd8233615b344388d0db6f39" + root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x008c7cd47a688e5b2021e9f2b9dbcf7365dec5a004311ad5c5138303cf6d76f1" + blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -185,37 +185,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x1dee6637bc05b1fd02c2d8a42eab028959018f5b086d0637007ba626ab826e84" +root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x1a443dd12842b2c2f4fadbfa63351ff72577b12b0059bdc634ede1a83d51e5fa" +root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x189e9a705c609addf8f5c6dcac63e9a18ee30a94330b79656a1ee99b0c57fede" +root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680783c5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -227,7 +227,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2227,7 +2227,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] -value = "0x14bc1195bc5381f55ca5407a68446a155af2ad9babe64a32767439bb441e27da" +value = "0x24ac82e7a637a4fccc2b5858a5cfc0136f80c5ce38773858d8a56a3ef9cba17c" counter = "0x0000000000000000000000000000000000000000000000000000000000000007" [previous_kernel_public_inputs.end.note_hashes.contract_address] @@ -2235,7 +2235,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] -value = "0x26cbe752d2d21f185b53b4429ff623ff3786f2cd329975b247be8e4aff475ee0" +value = "0x0391b5bc7051c88b9743eafb041a23660f86509794638c1f4f49e37790bbcad6" counter = "0x0000000000000000000000000000000000000000000000000000000000000009" [previous_kernel_public_inputs.end.note_hashes.contract_address] @@ -2739,7 +2739,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0a16a75643092d5aef61c9eb71ff79714f17615f924f1ba3fa5a547816549f2c" +value = "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2748,7 +2748,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x1dc77bf6a744218be035b1f422882d9e70c1b4a8ac401584f8aad032c5219ef4" +value = "0x0de8053dc64a02c2220f409bb45ff4c374e68a272b43ee33124e109804b5db95" counter = "0x0000000000000000000000000000000000000000000000000000000000000006" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3408,24 +3408,24 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000008" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x023d7ef2c9e59b863ea34228397589b6eedc5ad03bb29b3df0c23616e87a55f3", - "0x0e0fcb4369064bab84d2d7df3c351ab602f6362863a467b6c165daf0cbe87a5f", - "0x000141157cd8317ee909b6040fc21bcd74de9e0465c060b431786c704f3bfaf6", - "0x00d495ffbd02b9dc1e6a28b48b267a2568f6e0683dedd614f8ea29b70917c154", - "0x00e3fecc32f00c5f3d36ce22d3aae11757871c90098d2c4b30686e118af2903c", - "0x00e53b1bc2515033b82693c46bcc50b0093086fcbd8af596f60b34dae808e6e4", - "0x00bc4269217739ff39868fe4e63df8786ac81a4ad0532133d8e13b0d6a49b722", - "0x00c04a5bd90cfdfd50ddb0c4d03919d2450f33885f79f8d60b60f80a54e19ab7", - "0x00ab8e97791f0c59a553dac6098e18ec7969a6fe5301b98047bd22033d33d6f9", - "0x009dadff560ff0aa839555afbc9837940af1e8f64bf64d4d15903c53f4674b10", - "0x00552d853d003f61e87d8a9510b67901df4dd1b9fd3a7166089aed0d2fd145f6", - "0x005cbdb606b47661e6834bceccc9ee6f1aec359db59db9b55207549b59dd3f46", - "0x00751afaa9834cc2cd28ac86d0e9611ca7e79ed1b4e866b96b1455fe34084fe6", - "0x008666d98872090aef7f12ddfa11d7f1ed464003dfbb45a6c185b1bfeab6fcfd", - "0x006b788e6adb0ca6ea6bc57c639ecea5ece32e7b2b3c3dea5df628c1da180dca", - "0x002f006f1d593610e33b7f54f1cc02bb595bcadf2a2040acef6be5c1c4f6cefb", - "0x00cef445d17a33c4b484ebf20fc2007e6130becf1502a76e2dec4cd26a8b760c", - "0x00daf3a0896a6caab0029683bd1203a6d98c6dfcd22402c8a39fe83e411306e0" + "0x0770b2cbfe538a0651ab187ab5b7b126479911f6ca57ac53a8a379736610e7c1", + "0x2bdd68daa386f98df39612ed98cdd2fe297eabacafab88c061d589788046ea26", + "0x00006f6ccb8b4e74446082bf3d11738658bbf3fa34d47f14c4c4a13bf86794d3", + "0x0020f058a0534d05d96968dd728d0cb365d8d5965a175fdf7581d9c7e8e77b5a", + "0x00162a2ade7c948cb0af4f97cf0415edf77552eae5d160477c624a8413f606e0", + "0x00d99886126f6ff05c81c48072deacd32101cd2a9bb8a87e45ab769755d312fd", + "0x00e380cd9edfff77e977444bb25177c9d75bdfe467e20cdebc3ad371d266a5f2", + "0x00cdcf3e25265ec1377d10c18fda1b2dea4c45396d6af236aa7521cca2059dc1", + "0x006914727a686cdf46f11e09c2b3c6abf8fe8c2beaec5dd42bf1a8db2795c3f7", + "0x005ea0d20f31d261caa035fa64d2b7a7f7da10187016179d202606a0371853f4", + "0x002be4525d0c7401981d827aa802105302b1bd039de814cf7b84320cb4a83c04", + "0x00ce5881e355c5856ec5a1006e14ca6982bc05854312e30f4b65eca269daa770", + "0x00e99644a2b6ecd701e5d3ff26d34acac51ceedcaea1363cac01904494b87e07", + "0x00ea3d29daf251ad75b98b9a643bb25d7eb2ba6cd8d38a0142ef237d7f453140", + "0x005b1018fed544b94a5c72bf5a0622111148f8800dbe845cda60e6bc81b90bf1", + "0x009ba873d531a93bd256f2784df12cf805eed582459fc55a9815386429a86cd9", + "0x00318500e57624369a4f1fd09e8370aa59e721d6e2a5d0a291a302f9584b8eee", + "0x00c9694dd50f6a59b42a12173548d15cefe282b15037f759413a5f2503f33838" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -3438,24 +3438,24 @@ counter = "0x000000000000000000000000000000000000000000000000000000000000000a" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x28e14108cf7d6c51657436814d8eff0e59afbc016dc78644383f6cf1df5f1835", - "0x09b2bb6462013186ec836afe3976d3cb3f067c42e2bfbedfe6c80a7aebdb06f7", - "0x0001902b1383e5c3784f94e7bde749322faeca10b8a380ed4d66d18acee3d2b8", - "0x0025160dfa77a8849cf217421882eb624f9417328d5c8ed27fdcb52c65c81eae", - "0x00435a83069c93173eee86c86ffdc6a4091ebf86331bfad574e3c35044c0ca9c", - "0x00aa4dee2f8bc0a240cac5b859387c7f68ae9dbeb147390dc554017b4c085773", - "0x00ab70d657a9f61225791f1fefc99937b894b45fabd75e162d0a5dc81fb916a9", - "0x00a4782284772770a00ad00e3ef7d3d11724120421df1b3939c87ab70da4381d", - "0x006d1c13b5e2d2586fdf9a9fec91c7d48960e623d92c74ca47dc25354d908cf0", - "0x00af8d53e4264e27df27495180ae90341a4d8658379600f7878a426ecb435691", - "0x00ad8a3f3d38c408e9499a8c71ccd186b6a2b08c1ad5b83a72b81c7a24344a91", - "0x00966afd0424ff544bd9a20b4f78f963d8cc93c8bbecc33ca36116422394f5e1", - "0x0028815998511c1908df89bed4b620fd969d9e3b6aaa051cc22feeb131b1f26e", - "0x00149d0dc6e33d70d13f715cef27a262d9a48081809435189344041f60a7630b", - "0x00a7f6c3d55f6c40688b6203fae3f50a41b6eab0d00d9df047abe8324fae1a19", - "0x00972556ce2fe45581174b6aebfe5c9af8761f3f23dd931ecea0d7a4458760b6", - "0x0049ebfe6a2761a3192e8e5bf45dd53e8db8dfa6bbc41d8e7e318ea696a11015", - "0x0075bcb37cf025ff0a2cc50c86aaf5bbb18f5c453eff9c49548e042cf975bc13" + "0x01d9aea15f6a1d226d884c1d908bd58104f6fb9daaca0c97b55a4712f17ec5fb", + "0x0ca8a9af628946a49758ee14e7e3de6270b9725be6739cf0e81cf26a1d611522", + "0x000007b72a3575b18003fcb0ad2588a6ea7b05016917f43832d0d3e3eaf63802", + "0x00b9c532a777b18730b53be76ad1d869c47ee5133f5c1ea8155a3bc2a561ccf6", + "0x0078fdbbf99c655e3c7645757d1612b1288f94335500b045b4ac0dfeec8cd156", + "0x00a18fe56fb38d369efaaa5d75119709c64b1a2675f2d34ec9cce151e0c32c6b", + "0x001291a4e1511abaa7b82abcab90228b4cb986a0aaeec173e141621feab6f475", + "0x0080aea6c107610e2694c9d5cf44aaed86a21d11adc6d92f38030e827b1c3a58", + "0x00c547b22874d0b514d08d2882dc88c2ad86c3825c6a9aed804d2a16170e8348", + "0x00a2d17a8e2382129f98b7340867fc1d30dc0cdba8850ddf25d1acb19a8e4ed4", + "0x00bd9e4b7a8893dfca7777df62e49c614c3470cbcae98238903b15c5b199ca33", + "0x0078fa59a69260a5de7785b4eca42437c8860f3268f2b8e2c98f2e3762901912", + "0x005585d2301901b697b3fdaa7cbd7c33fd504df0ffdbc6541815fb12400b4632", + "0x0090c0c7c2cbc58a982ddcd82129f74dc18c813df638a0153bdae4dc00485336", + "0x004e90e816954ccd35172be795f48efee75545be02a1110da4b30fc6991d8939", + "0x000a4a4691bfc05b252b9aab962caa5b91afb03eb7e6a94cd3fba1db92127b1e", + "0x007935e583e890b6e31f0413e382c6af89cb501f80e6fccf29d17a3677c2b464", + "0x005fad622eab5e7d7fcc359813ff0a1657dc4c9e89dc250cb1b258c913750c92" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -3468,24 +3468,24 @@ counter = "0x000000000000000000000000000000000000000000000000000000000000000b" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x1c474b1f863425761cc06bf8fcd3fc31e4a10440c03bd95c4d7bc4665b42ceba", - "0x1e503fdfa7460705ea519e194b02dbde0895dc18c60888147a0185b3d45445aa", - "0x00013f6032397e68948c5c7e2286641188d22eea3436149249e63896016e9dc1", - "0x0060e3d27353bdbd2d7182f46d7859fef235977b54f0ad6362e44d331045fde9", - "0x00b8ed22f25afec74754bf7d85f2c08fe1600b0ec1908ff5943f88f73e6954aa", - "0x0063713053b899a97f698dc8135c5e6af55534b6eee5687e2ea33032fe0bb238", - "0x000aaa5d01d6d69dc86c7f401fe207bed7dd67d89d0ce7d54a6fe5bb2f2b879c", - "0x008f06a747c4c5df72a7677ea76624e76c0f1ed2b240a52ad07b688daf681312", - "0x0013b08254aa3f1f1d0050c6cf286bd6687360bdb6508ba34db1af8a9e13def9", - "0x00c8575364ddf160a61d4e6052f65688999e13495b40dda884a7905510ca8250", - "0x006ba2b913d961acff70cccab5b4975b0767cc806052b9ea1d9747d15466fd0d", - "0x006d20c223aafddab275d4a5e680c6531a431ec73cf5c59c0be57c73236d0689", - "0x004de43069703e31933f6f1154d3c1180a7abbe8bcac3ced8a31512b018cdf53", - "0x00f8796bffd6dc3824a99d0544e32e7856ec432a4f76ac465fb7b0260f741d08", - "0x003298e3fabde03fa630df51018fc61b488a199eaf21653d81841d0e163a550b", - "0x00b85e1f87c6606a7ff130b57887a5da14408d0bdb2fddd8a3d2f1d54fba8006", - "0x00b2d24ad2f108368ba796326edc830736fa0153f99afaf6a52b134d26316815", - "0x00b5812b4e05cb801ea2a4b78a1a27e1f67098b56a61973cd7c54d74cbe5210f" + "0x1369a1cbea27995ca20b9d7b16f4fadf3f8e7c42d919c79b6819e8767d2f9fee", + "0x21e89c900404aa792f14a881d334778880c8b3cdb3e1b28108c027653c4abb6f", + "0x000183e152bea35725090be7414e9c4881162ddef2e87909d193bb4a39c223e9", + "0x00dd46fc8d3f7c5c1df7a8e8b72cb3c5ce09fe93fff226498decdc057fa0ac7a", + "0x0099fc01c4a8706ad4b3aec3d3169aaa7f1da6fd56acb7f3e513d8d0a8f42d92", + "0x00b73bed2d24f8b35787aeb686bca5d215a21ca4ea9ae278e7ce84a6a18f64ff", + "0x00b8cb7c4f092fcf6c34fbf6457da7653dac83c00533a41ff46aed4a50292d7f", + "0x00d2ec3253dc80e8b986351a8bc22b7342c248c062867d61183de02f0bfcc93d", + "0x008884a30ccaf624787a30ae849e090f5cdbb9c680bbb77f045ea22ad9584613", + "0x00f0ce4234d291add28b800394ceb06dc30c1c562bd9abe281807f6345157344", + "0x001f54c1c7f4947838b3a650ae4dd674bc177bb5da8934007b6592a4f589fbd2", + "0x00ff870df8bde260b20b45ce94ace25c9cf5d90ec50da0db2e21b4a47efdefb2", + "0x00fb6d622ce89228fba40dec2567ed9a1e4bcb5955b55129be76019f9ac446c5", + "0x00fa22dd89dec95309a7ef6df8c2d515069003bf78efd44edf62c7de0535617b", + "0x00185481635a7e7280b58e32e81465d7840ef349f9aaeb1553917425a3c1e469", + "0x005cfa506fd18ae5cadcc60470ddb9ba3736c288085c7d39270e4eff490a64b7", + "0x00969a720629f33dfffe06fda05e96f7d2faf63c048efbe62274e2d6c54bc464", + "0x008c469d709e7b3f258c7fa40998eca40b73ca62ae8885e19cae72ad07e0438c" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -4941,4 +4941,4 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml index 297d2da3ab16..2ef365d8de24 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml @@ -3,20 +3,20 @@ _is_some = true _value = "0x0000000000000000000000000000000000000000000000000000000000000e16" [inputs.tube_data.public_inputs.constants] -vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" -protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" +vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" +protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [inputs.tube_data.public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" - total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" + total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" + total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" [inputs.tube_data.public_inputs.constants.historical_header.last_archive] - root = "0x0e8ef7f12683462ce5482c5c79c7a7bded4a0b57bd8233615b344388d0db6f39" + root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [inputs.tube_data.public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x008c7cd47a688e5b2021e9f2b9dbcf7365dec5a004311ad5c5138303cf6d76f1" + blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -25,37 +25,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x1dee6637bc05b1fd02c2d8a42eab028959018f5b086d0637007ba626ab826e84" +root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x1a443dd12842b2c2f4fadbfa63351ff72577b12b0059bdc634ede1a83d51e5fa" +root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x189e9a705c609addf8f5c6dcac63e9a18ee30a94330b79656a1ee99b0c57fede" +root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.tube_data.public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680783c5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" [inputs.tube_data.public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -67,7 +67,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -75,8 +75,8 @@ fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000 [inputs.tube_data.public_inputs.end] note_hashes = [ - "0x14bc1195bc5381f55ca5407a68446a155af2ad9babe64a32767439bb441e27da", - "0x26cbe752d2d21f185b53b4429ff623ff3786f2cd329975b247be8e4aff475ee0", + "0x24ac82e7a637a4fccc2b5858a5cfc0136f80c5ce38773858d8a56a3ef9cba17c", + "0x0391b5bc7051c88b9743eafb041a23660f86509794638c1f4f49e37790bbcad6", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -141,8 +141,8 @@ note_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x0a16a75643092d5aef61c9eb71ff79714f17615f924f1ba3fa5a547816549f2c", - "0x1dc77bf6a744218be035b1f422882d9e70c1b4a8ac401584f8aad032c5219ef4", + "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece", + "0x0de8053dc64a02c2220f409bb45ff4c374e68a272b43ee33124e109804b5db95", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -297,68 +297,68 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x023d7ef2c9e59b863ea34228397589b6eedc5ad03bb29b3df0c23616e87a55f3", - "0x0e0fcb4369064bab84d2d7df3c351ab602f6362863a467b6c165daf0cbe87a5f", - "0x000141157cd8317ee909b6040fc21bcd74de9e0465c060b431786c704f3bfaf6", - "0x00d495ffbd02b9dc1e6a28b48b267a2568f6e0683dedd614f8ea29b70917c154", - "0x00e3fecc32f00c5f3d36ce22d3aae11757871c90098d2c4b30686e118af2903c", - "0x00e53b1bc2515033b82693c46bcc50b0093086fcbd8af596f60b34dae808e6e4", - "0x00bc4269217739ff39868fe4e63df8786ac81a4ad0532133d8e13b0d6a49b722", - "0x00c04a5bd90cfdfd50ddb0c4d03919d2450f33885f79f8d60b60f80a54e19ab7", - "0x00ab8e97791f0c59a553dac6098e18ec7969a6fe5301b98047bd22033d33d6f9", - "0x009dadff560ff0aa839555afbc9837940af1e8f64bf64d4d15903c53f4674b10", - "0x00552d853d003f61e87d8a9510b67901df4dd1b9fd3a7166089aed0d2fd145f6", - "0x005cbdb606b47661e6834bceccc9ee6f1aec359db59db9b55207549b59dd3f46", - "0x00751afaa9834cc2cd28ac86d0e9611ca7e79ed1b4e866b96b1455fe34084fe6", - "0x008666d98872090aef7f12ddfa11d7f1ed464003dfbb45a6c185b1bfeab6fcfd", - "0x006b788e6adb0ca6ea6bc57c639ecea5ece32e7b2b3c3dea5df628c1da180dca", - "0x002f006f1d593610e33b7f54f1cc02bb595bcadf2a2040acef6be5c1c4f6cefb", - "0x00cef445d17a33c4b484ebf20fc2007e6130becf1502a76e2dec4cd26a8b760c", - "0x00daf3a0896a6caab0029683bd1203a6d98c6dfcd22402c8a39fe83e411306e0" + "0x0770b2cbfe538a0651ab187ab5b7b126479911f6ca57ac53a8a379736610e7c1", + "0x2bdd68daa386f98df39612ed98cdd2fe297eabacafab88c061d589788046ea26", + "0x00006f6ccb8b4e74446082bf3d11738658bbf3fa34d47f14c4c4a13bf86794d3", + "0x0020f058a0534d05d96968dd728d0cb365d8d5965a175fdf7581d9c7e8e77b5a", + "0x00162a2ade7c948cb0af4f97cf0415edf77552eae5d160477c624a8413f606e0", + "0x00d99886126f6ff05c81c48072deacd32101cd2a9bb8a87e45ab769755d312fd", + "0x00e380cd9edfff77e977444bb25177c9d75bdfe467e20cdebc3ad371d266a5f2", + "0x00cdcf3e25265ec1377d10c18fda1b2dea4c45396d6af236aa7521cca2059dc1", + "0x006914727a686cdf46f11e09c2b3c6abf8fe8c2beaec5dd42bf1a8db2795c3f7", + "0x005ea0d20f31d261caa035fa64d2b7a7f7da10187016179d202606a0371853f4", + "0x002be4525d0c7401981d827aa802105302b1bd039de814cf7b84320cb4a83c04", + "0x00ce5881e355c5856ec5a1006e14ca6982bc05854312e30f4b65eca269daa770", + "0x00e99644a2b6ecd701e5d3ff26d34acac51ceedcaea1363cac01904494b87e07", + "0x00ea3d29daf251ad75b98b9a643bb25d7eb2ba6cd8d38a0142ef237d7f453140", + "0x005b1018fed544b94a5c72bf5a0622111148f8800dbe845cda60e6bc81b90bf1", + "0x009ba873d531a93bd256f2784df12cf805eed582459fc55a9815386429a86cd9", + "0x00318500e57624369a4f1fd09e8370aa59e721d6e2a5d0a291a302f9584b8eee", + "0x00c9694dd50f6a59b42a12173548d15cefe282b15037f759413a5f2503f33838" ] [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x28e14108cf7d6c51657436814d8eff0e59afbc016dc78644383f6cf1df5f1835", - "0x09b2bb6462013186ec836afe3976d3cb3f067c42e2bfbedfe6c80a7aebdb06f7", - "0x0001902b1383e5c3784f94e7bde749322faeca10b8a380ed4d66d18acee3d2b8", - "0x0025160dfa77a8849cf217421882eb624f9417328d5c8ed27fdcb52c65c81eae", - "0x00435a83069c93173eee86c86ffdc6a4091ebf86331bfad574e3c35044c0ca9c", - "0x00aa4dee2f8bc0a240cac5b859387c7f68ae9dbeb147390dc554017b4c085773", - "0x00ab70d657a9f61225791f1fefc99937b894b45fabd75e162d0a5dc81fb916a9", - "0x00a4782284772770a00ad00e3ef7d3d11724120421df1b3939c87ab70da4381d", - "0x006d1c13b5e2d2586fdf9a9fec91c7d48960e623d92c74ca47dc25354d908cf0", - "0x00af8d53e4264e27df27495180ae90341a4d8658379600f7878a426ecb435691", - "0x00ad8a3f3d38c408e9499a8c71ccd186b6a2b08c1ad5b83a72b81c7a24344a91", - "0x00966afd0424ff544bd9a20b4f78f963d8cc93c8bbecc33ca36116422394f5e1", - "0x0028815998511c1908df89bed4b620fd969d9e3b6aaa051cc22feeb131b1f26e", - "0x00149d0dc6e33d70d13f715cef27a262d9a48081809435189344041f60a7630b", - "0x00a7f6c3d55f6c40688b6203fae3f50a41b6eab0d00d9df047abe8324fae1a19", - "0x00972556ce2fe45581174b6aebfe5c9af8761f3f23dd931ecea0d7a4458760b6", - "0x0049ebfe6a2761a3192e8e5bf45dd53e8db8dfa6bbc41d8e7e318ea696a11015", - "0x0075bcb37cf025ff0a2cc50c86aaf5bbb18f5c453eff9c49548e042cf975bc13" + "0x01d9aea15f6a1d226d884c1d908bd58104f6fb9daaca0c97b55a4712f17ec5fb", + "0x0ca8a9af628946a49758ee14e7e3de6270b9725be6739cf0e81cf26a1d611522", + "0x000007b72a3575b18003fcb0ad2588a6ea7b05016917f43832d0d3e3eaf63802", + "0x00b9c532a777b18730b53be76ad1d869c47ee5133f5c1ea8155a3bc2a561ccf6", + "0x0078fdbbf99c655e3c7645757d1612b1288f94335500b045b4ac0dfeec8cd156", + "0x00a18fe56fb38d369efaaa5d75119709c64b1a2675f2d34ec9cce151e0c32c6b", + "0x001291a4e1511abaa7b82abcab90228b4cb986a0aaeec173e141621feab6f475", + "0x0080aea6c107610e2694c9d5cf44aaed86a21d11adc6d92f38030e827b1c3a58", + "0x00c547b22874d0b514d08d2882dc88c2ad86c3825c6a9aed804d2a16170e8348", + "0x00a2d17a8e2382129f98b7340867fc1d30dc0cdba8850ddf25d1acb19a8e4ed4", + "0x00bd9e4b7a8893dfca7777df62e49c614c3470cbcae98238903b15c5b199ca33", + "0x0078fa59a69260a5de7785b4eca42437c8860f3268f2b8e2c98f2e3762901912", + "0x005585d2301901b697b3fdaa7cbd7c33fd504df0ffdbc6541815fb12400b4632", + "0x0090c0c7c2cbc58a982ddcd82129f74dc18c813df638a0153bdae4dc00485336", + "0x004e90e816954ccd35172be795f48efee75545be02a1110da4b30fc6991d8939", + "0x000a4a4691bfc05b252b9aab962caa5b91afb03eb7e6a94cd3fba1db92127b1e", + "0x007935e583e890b6e31f0413e382c6af89cb501f80e6fccf29d17a3677c2b464", + "0x005fad622eab5e7d7fcc359813ff0a1657dc4c9e89dc250cb1b258c913750c92" ] [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x1c474b1f863425761cc06bf8fcd3fc31e4a10440c03bd95c4d7bc4665b42ceba", - "0x1e503fdfa7460705ea519e194b02dbde0895dc18c60888147a0185b3d45445aa", - "0x00013f6032397e68948c5c7e2286641188d22eea3436149249e63896016e9dc1", - "0x0060e3d27353bdbd2d7182f46d7859fef235977b54f0ad6362e44d331045fde9", - "0x00b8ed22f25afec74754bf7d85f2c08fe1600b0ec1908ff5943f88f73e6954aa", - "0x0063713053b899a97f698dc8135c5e6af55534b6eee5687e2ea33032fe0bb238", - "0x000aaa5d01d6d69dc86c7f401fe207bed7dd67d89d0ce7d54a6fe5bb2f2b879c", - "0x008f06a747c4c5df72a7677ea76624e76c0f1ed2b240a52ad07b688daf681312", - "0x0013b08254aa3f1f1d0050c6cf286bd6687360bdb6508ba34db1af8a9e13def9", - "0x00c8575364ddf160a61d4e6052f65688999e13495b40dda884a7905510ca8250", - "0x006ba2b913d961acff70cccab5b4975b0767cc806052b9ea1d9747d15466fd0d", - "0x006d20c223aafddab275d4a5e680c6531a431ec73cf5c59c0be57c73236d0689", - "0x004de43069703e31933f6f1154d3c1180a7abbe8bcac3ced8a31512b018cdf53", - "0x00f8796bffd6dc3824a99d0544e32e7856ec432a4f76ac465fb7b0260f741d08", - "0x003298e3fabde03fa630df51018fc61b488a199eaf21653d81841d0e163a550b", - "0x00b85e1f87c6606a7ff130b57887a5da14408d0bdb2fddd8a3d2f1d54fba8006", - "0x00b2d24ad2f108368ba796326edc830736fa0153f99afaf6a52b134d26316815", - "0x00b5812b4e05cb801ea2a4b78a1a27e1f67098b56a61973cd7c54d74cbe5210f" + "0x1369a1cbea27995ca20b9d7b16f4fadf3f8e7c42d919c79b6819e8767d2f9fee", + "0x21e89c900404aa792f14a881d334778880c8b3cdb3e1b28108c027653c4abb6f", + "0x000183e152bea35725090be7414e9c4881162ddef2e87909d193bb4a39c223e9", + "0x00dd46fc8d3f7c5c1df7a8e8b72cb3c5ce09fe93fff226498decdc057fa0ac7a", + "0x0099fc01c4a8706ad4b3aec3d3169aaa7f1da6fd56acb7f3e513d8d0a8f42d92", + "0x00b73bed2d24f8b35787aeb686bca5d215a21ca4ea9ae278e7ce84a6a18f64ff", + "0x00b8cb7c4f092fcf6c34fbf6457da7653dac83c00533a41ff46aed4a50292d7f", + "0x00d2ec3253dc80e8b986351a8bc22b7342c248c062867d61183de02f0bfcc93d", + "0x008884a30ccaf624787a30ae849e090f5cdbb9c680bbb77f045ea22ad9584613", + "0x00f0ce4234d291add28b800394ceb06dc30c1c562bd9abe281807f6345157344", + "0x001f54c1c7f4947838b3a650ae4dd674bc177bb5da8934007b6592a4f589fbd2", + "0x00ff870df8bde260b20b45ce94ace25c9cf5d90ec50da0db2e21b4a47efdefb2", + "0x00fb6d622ce89228fba40dec2567ed9a1e4bcb5955b55129be76019f9ac446c5", + "0x00fa22dd89dec95309a7ef6df8c2d515069003bf78efd44edf62c7de0535617b", + "0x00185481635a7e7280b58e32e81465d7840ef349f9aaeb1553917425a3c1e469", + "0x005cfa506fd18ae5cadcc60470ddb9ba3736c288085c7d39270e4eff490a64b7", + "0x00969a720629f33dfffe06fda05e96f7d2faf63c048efbe62274e2d6c54bc464", + "0x008c469d709e7b3f258c7fa40998eca40b73ca62ae8885e19cae72ad07e0438c" ] [[inputs.tube_data.public_inputs.end.private_logs]] @@ -1013,7 +1013,7 @@ da_gas = "0x0000000000000000000000000000000000000000000000000000000000007c00" l2_gas = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.tube_data.public_inputs.fee_payer] -inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" +inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [inputs.tube_data.proof] fields = [ @@ -1560,7 +1560,7 @@ vk_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x157fcd65138221a77db675de5f924aad7f4c48affaf85acd249ba1bc9746587b", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1a8c157a307350dc57f06625e220057348008c02bc50c04154826acb1153bb77", + "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -1700,15 +1700,15 @@ vk_path = [ hash = "0x0000000000000000000000000000000000000000000000000000000000000002" [inputs.start.note_hash_tree] -root = "0x1dee6637bc05b1fd02c2d8a42eab028959018f5b086d0637007ba626ab826e84" +root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [inputs.start.nullifier_tree] -root = "0x1a443dd12842b2c2f4fadbfa63351ff72577b12b0059bdc634ede1a83d51e5fa" +root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.start.public_data_tree] -root = "0x189e9a705c609addf8f5c6dcac63e9a18ee30a94330b79656a1ee99b0c57fede" +root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.start_sponge_blob] @@ -1732,8 +1732,8 @@ expected_fields = "0x00000000000000000000000000000000000000000000000000000000000 [inputs.state_diff_hints] sorted_nullifiers = [ - "0x1dc77bf6a744218be035b1f422882d9e70c1b4a8ac401584f8aad032c5219ef4", - "0x0a16a75643092d5aef61c9eb71ff79714f17615f924f1ba3fa5a547816549f2c", + "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece", + "0x0de8053dc64a02c2220f409bb45ff4c374e68a272b43ee33124e109804b5db95", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -1798,8 +1798,8 @@ sorted_nullifiers = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] sorted_nullifier_indexes = [ - "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000003", "0x0000000000000000000000000000000000000000000000000000000000000004", @@ -1865,8 +1865,8 @@ sorted_nullifier_indexes = [ ] note_hash_subtree_sibling_path = [ "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x1e7609fe4de5e93a7ef16d8bd2d5a5384a07f11cdce5ad542be62e8422410e7d", - "0x282d4df140c87ac440248b7b9a749105c3c9013b787a05d9c67cd51e29613551", + "0x09f7f8de3925fd0d0723ee549476fa64dba80fc4a92220428d0a6781d77a18c3", + "0x1bcacce6e217a46734513c4a6525dcd3a757f89a573ffd1ba31307802b5e8b9d", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -1903,7 +1903,7 @@ nullifier_subtree_sibling_path = [ "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", - "0x0fbcbb9b34cfd7276b0e1db6e3ba46f49c2c34c1c6b0b122e916f812fb75ca73", + "0x2951a23c18ca74858f6222240f55aaeb7581e2e8f0f370f302771b62b2184f69", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", @@ -1979,14 +1979,14 @@ fee_write_sibling_path = [ ] [[inputs.state_diff_hints.nullifier_predecessor_preimages]] - nullifier = "0x1c3fd8f2385e15ac09de5bb30640cbd8bbb477d1422180142f63bf4174f3b565" - next_nullifier = "0x21a80bde4d564139f5de2759767b860e1840b842b310e8ea614be7e32a43acd4" - next_index = "0x00000000000000000000000000000000000000000000000000000000000000c0" + nullifier = "0x0f8ec08847a92c0e7c70a92a6af946ad2e40cf1a1d8cd3422d9431752d479901" + next_nullifier = "0x13c9eb415ecc1759327dd83ae979ff2cc71fd2d5642bfc3c35c62787b25df73c" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000081" [[inputs.state_diff_hints.nullifier_predecessor_preimages]] - nullifier = "0x02d93b27079cb3b61daa0654671becf996c73457bb404ee8611dd6d5f686711f" - next_nullifier = "0x0b3af10cac0833f0cdde483d733fe363579e8ff703cac8b2622217d45fd85f71" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000141" + nullifier = "0x0dad5945a0bf670e9620b85ae52c1d576e1021131f78d3676bdea0829f6e4963" + next_nullifier = "0x0f4773751d7f7b66cee82e80b567eff15e9996dc8e35e6f3e48037c3103f890c" + next_index = "0x00000000000000000000000000000000000000000000000000000000000000c0" [[inputs.state_diff_hints.nullifier_predecessor_preimages]] nullifier = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2299,17 +2299,17 @@ fee_write_sibling_path = [ next_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.state_diff_hints.nullifier_predecessor_membership_witnesses]] - leaf_index = "448" + leaf_index = "320" sibling_path = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", + "0x228ca2aed7f1bb4540f10b577a767210c1d1b9f231726e31d4795397a82ccc7c", + "0x1dbf4165e05022b2962d8d187cc8ef5359b55429f686fcb6ddc1e65cfe516808", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x2792e2d0f37c682b73c54c88bc298df7502054fd8ff68d66466140457f1fd871", - "0x1a734826345a47507df737e1126350f56d32e85a0ac5798f89927da90e31b6bb", - "0x11ffe764109e9b81dc3037f73aaa822a5be82168e1b26fc2c25a2708a82971c4", + "0x1abfbe878f3881ccf0420742c536b0ec68737fc486f4597445a4a9cc21614876", + "0x19c840caa171aff1d410b2c9359551ba34d88ec0eab88cb6e8d33afb6a12a842", + "0x24873522a8f7974849638d500b5e48cfa1e231b2503dbce006e5d713bbec3f04", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -2344,17 +2344,17 @@ fee_write_sibling_path = [ ] [[inputs.state_diff_hints.nullifier_predecessor_membership_witnesses]] - leaf_index = "384" + leaf_index = "130" sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", + "0x22a1b7d0a3c2b59b489691fd0c81d96ec2232ca0fa1162b8c9a08411f81d7d18", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x1f4bbd8fbaf6a6cf187b730b5a23cfc1eca58c46a5dfd6988a62c6251c6cbd69", - "0x1a734826345a47507df737e1126350f56d32e85a0ac5798f89927da90e31b6bb", - "0x11ffe764109e9b81dc3037f73aaa822a5be82168e1b26fc2c25a2708a82971c4", + "0x030e06bc4319110d17e75a8a534071da393bc99b1660f6ca82ea9356273331d3", + "0x1cca5a85bd0e1eb0bd63c73b54b30a7cbeeed3633445eaef9caf5ac5625bd95d", + "0x191cb9755ab6be2d7998c6b6775b110ec88a365a4f8e01ea4239d24d5e695a4e", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -5179,22 +5179,22 @@ fee_write_sibling_path = [ ] [inputs.state_diff_hints.fee_write_low_leaf_preimage] - slot = "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654" - value = "0x00000000000000000000000000000000000000000000021e19e0c9b139a02200" - next_slot = "0x1f74454e00a43255852e0c0ee27b1b4f6885228001816e31fa714f84cd8190eb" - next_index = "0x000000000000000000000000000000000000000000000000000000000000007c" + slot = "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" + value = "0x00000000000000000000000000000000000000000000021e19e0c9afadfcc4e8" + next_slot = "0x176126572877c32e398b129ff058d593a74d3e6ebfef9f0c1be56649fcb5de8a" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000079" [inputs.state_diff_hints.fee_write_low_leaf_membership_witness] - leaf_index = "123" + leaf_index = "120" sibling_path = [ - "0x07988581a56b702ad173d70cce2b448976d4deafc7d3bc7db1f3f1daa1494d1c", - "0x085c75add16287a6372035bae05f03c5afad9be78d42fc5ed33cc48668dd3b50", - "0x21cafa16a468960518428c8f3cda8877d6de6568292ee17b172f36960d9fdd10", - "0x08d0c5d646c63627348c77589b1c8121104b01023654deed5c0e5b7fdcc299b0", + "0x21d0bdec05f36b4f41573c46bcf661d71b4516c322cc129e1c9c0f1be1b82a9a", + "0x07d62c6fcba7e2104f760ac4f01df4d9b1bad9728367b5feb97063f7a24311d1", + "0x243b7cf08d9e700a8516c9d406aef9665b2550052566fd12276fd336932f1a84", + "0x08b10026def0dcfac8f145be005e40a32506bf7158bbc88d221587c10e729858", "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", - "0x1f6530bcb070a2a82b07f777efd4131537da992f8961b36c668e8d9e8617d7cf", + "0x182127ee0c015dde7b068973d43d3909bc7435ada18f0bc22efdeaf9618c938a", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -5230,20 +5230,20 @@ fee_write_sibling_path = [ ] [inputs.fee_payer_fee_juice_balance_read_hint] -leaf_slot = "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654" -value = "0x00000000000000000000000000000000000000000000021e19e0c9b139a02200" +leaf_slot = "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" +value = "0x00000000000000000000000000000000000000000000021e19e0c9afadfcc4e8" [inputs.fee_payer_fee_juice_balance_read_hint.membership_witness] - leaf_index = "123" + leaf_index = "120" sibling_path = [ - "0x07988581a56b702ad173d70cce2b448976d4deafc7d3bc7db1f3f1daa1494d1c", - "0x085c75add16287a6372035bae05f03c5afad9be78d42fc5ed33cc48668dd3b50", - "0x21cafa16a468960518428c8f3cda8877d6de6568292ee17b172f36960d9fdd10", - "0x08d0c5d646c63627348c77589b1c8121104b01023654deed5c0e5b7fdcc299b0", + "0x21d0bdec05f36b4f41573c46bcf661d71b4516c322cc129e1c9c0f1be1b82a9a", + "0x07d62c6fcba7e2104f760ac4f01df4d9b1bad9728367b5feb97063f7a24311d1", + "0x243b7cf08d9e700a8516c9d406aef9665b2550052566fd12276fd336932f1a84", + "0x08b10026def0dcfac8f145be005e40a32506bf7158bbc88d221587c10e729858", "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", - "0x1f6530bcb070a2a82b07f777efd4131537da992f8961b36c668e8d9e8617d7cf", + "0x182127ee0c015dde7b068973d43d3909bc7435ada18f0bc22efdeaf9618c938a", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -5279,17 +5279,17 @@ value = "0x00000000000000000000000000000000000000000000021e19e0c9b139a02200" ] [inputs.fee_payer_fee_juice_balance_read_hint.leaf_preimage] - slot = "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654" - value = "0x00000000000000000000000000000000000000000000021e19e0c9b139a02200" - next_slot = "0x1f74454e00a43255852e0c0ee27b1b4f6885228001816e31fa714f84cd8190eb" - next_index = "0x000000000000000000000000000000000000000000000000000000000000007c" + slot = "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" + value = "0x00000000000000000000000000000000000000000000021e19e0c9afadfcc4e8" + next_slot = "0x176126572877c32e398b129ff058d593a74d3e6ebfef9f0c1be56649fcb5de8a" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000079" [inputs.archive_root_membership_witness] leaf_index = "6" sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x1428c191da00ae9e6328322750fa77bbf6c5b2dd70ee3c219a39f0f1e9784b81", - "0x2ae950126da08ba15878702e2394c18a583d27e508fe0ababc036b9fc66f1fa0", + "0x2be2e0b5247d27d4aa1436c8ddb5f63ec56e9d8a0c0d295750b1bb90cb6d7343", + "0x1e96066120e8194f7cffe64e70af687163885eed70669e9707b1a00cede7cb81", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", @@ -8346,26 +8346,26 @@ fields = [ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants] -vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" -protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" +vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" +protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [inputs.constants.last_archive] - root = "0x01f3f9528860628e391a0775aa92501d300cbdf884e49318747dc9c8c4be2670" + root = "0x15b96c203874595fa1e623ce8e239e955f35474630ab7ecefaf9186f6de51778" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784b5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f25" [inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml index b2086723336e..b75515e19c41 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml @@ -1,18 +1,18 @@ [inputs.tube_data.public_inputs.constants] -vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" -protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" +vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" +protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [inputs.tube_data.public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000001419ea740" - total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" + total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" + total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" [inputs.tube_data.public_inputs.constants.historical_header.last_archive] - root = "0x0e8ef7f12683462ce5482c5c79c7a7bded4a0b57bd8233615b344388d0db6f39" + root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [inputs.tube_data.public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x008c7cd47a688e5b2021e9f2b9dbcf7365dec5a004311ad5c5138303cf6d76f1" + blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -21,37 +21,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x1dee6637bc05b1fd02c2d8a42eab028959018f5b086d0637007ba626ab826e84" +root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x1a443dd12842b2c2f4fadbfa63351ff72577b12b0059bdc634ede1a83d51e5fa" +root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x189e9a705c609addf8f5c6dcac63e9a18ee30a94330b79656a1ee99b0c57fede" +root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.tube_data.public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680783c5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d840" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" [inputs.tube_data.public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -63,7 +63,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -141,7 +141,7 @@ note_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x18a0687790f725e39f24e61a171517eda8f347575615e1c41b19e257799687ef", + "0x0186ca7da3619014309e4b8ebd49fec4c299f0b7bb7adb73d8817d4fb2256a06", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -2265,13 +2265,13 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests]] is_static_call = false - calldata_hash = "0x1230536a23315a20102f5c57d5915fc08908f78e102b4d15948cd06cacf19ec9" + calldata_hash = "0x279bdc5234d5f905d88572ccc882e3bcf455e75fa2634ef37377144aa1fb227e" [inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests.msg_sender] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests.contract_address] - inner = "0x1a3a98220a436a1096c5bcfb137a95786dd057109e5e8f50b778fdbfdfd7ba88" + inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" [[inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests]] is_static_call = false @@ -2598,7 +2598,7 @@ da_gas = "0x0000000000000000000000000000000000000000000000000000000000000400" l2_gas = "0x0000000000000000000000000000000000000000000000000000000000006500" [inputs.tube_data.public_inputs.fee_payer] -inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" +inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [inputs.tube_data.proof] fields = [ @@ -3145,7 +3145,7 @@ vk_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x157fcd65138221a77db675de5f924aad7f4c48affaf85acd249ba1bc9746587b", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1a8c157a307350dc57f06625e220057348008c02bc50c04154826acb1153bb77", + "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -3285,40 +3285,40 @@ vk_path = [ hash = "0x0000000000000000000000000000000000000000000000000000000000000002" [inputs.avm_proof_data.public_inputs] -transaction_fee = "0x000000000000000000000000000000000000000000000000000000001721ab30" +transaction_fee = "0x000000000000000000000000000000000000000000000000000000001be37338" reverted = false [inputs.avm_proof_data.public_inputs.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784e5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f55" [inputs.avm_proof_data.public_inputs.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.avm_proof_data.public_inputs.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.avm_proof_data.public_inputs.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000145a" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001694" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.note_hash_tree] -root = "0x0e78f1d5dec20ceac046bed6d2695d5086169440bdcd985416da690e4555cd13" +root = "0x2974c95d044b350c4ecbecd81e04f2209b53c87f1a82743d35501c53014aeafe" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.nullifier_tree] -root = "0x1cdcf3f81d3f8a38753a350f7c452a9771eb4ed31e4c5e898ee4ea9ba3b33afa" +root = "0x169e89387d7418d762567ed6f237578a00c8ebbfbef0a69bb636667dd7ca4ebd" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.public_data_tree] -root = "0x26b61fd8b4fac08968040eceda7dfe8dfb0f1a3ee607987c21e5b6945c612ce1" +root = "0x216e91eabfbf3f0c2d987353464d0c7b1c479d2d39682cf4709e10d758a7b0b3" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.avm_proof_data.public_inputs.start_gas_used] @@ -3335,14 +3335,14 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.avm_proof_data.public_inputs.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fc1" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" [inputs.avm_proof_data.public_inputs.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.avm_proof_data.public_inputs.fee_payer] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [[inputs.avm_proof_data.public_inputs.public_setup_call_requests]] is_static_call = false @@ -3666,13 +3666,13 @@ fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000 [[inputs.avm_proof_data.public_inputs.public_app_logic_call_requests]] is_static_call = false - calldata_hash = "0x1230536a23315a20102f5c57d5915fc08908f78e102b4d15948cd06cacf19ec9" + calldata_hash = "0x279bdc5234d5f905d88572ccc882e3bcf455e75fa2634ef37377144aa1fb227e" [inputs.avm_proof_data.public_inputs.public_app_logic_call_requests.msg_sender] - inner = "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" [inputs.avm_proof_data.public_inputs.public_app_logic_call_requests.contract_address] - inner = "0x1a3a98220a436a1096c5bcfb137a95786dd057109e5e8f50b778fdbfdfd7ba88" + inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" [[inputs.avm_proof_data.public_inputs.public_app_logic_call_requests]] is_static_call = false @@ -4072,7 +4072,7 @@ fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x18a0687790f725e39f24e61a171517eda8f347575615e1c41b19e257799687ef", + "0x0186ca7da3619014309e4b8ebd49fec4c299f0b7bb7adb73d8817d4fb2256a06", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -4453,15 +4453,15 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.note_hash_tree] -root = "0x0e78f1d5dec20ceac046bed6d2695d5086169440bdcd985416da690e4555cd13" +root = "0x2974c95d044b350c4ecbecd81e04f2209b53c87f1a82743d35501c53014aeafe" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.nullifier_tree] -root = "0x23482aaad7a91e191b4468847839fab55887883da561b2f444a7ede92c9fb386" +root = "0x13043cd5ef41357dd0e0bf7146d0e5941e63abb204e63344712a6dc29b3e5211" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000340" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.public_data_tree] -root = "0x22ab385e115ed2fa814be54cab190a65e1daec11eac7cc25cd289addb0d6834b" +root = "0x289324407d704b99f90c2c7ef631517db4d15817112b01561fb429b7d8035e59" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.avm_proof_data.public_inputs.end_gas_used] @@ -4536,7 +4536,7 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x18a0687790f725e39f24e61a171517eda8f347575615e1c41b19e257799687ef", + "0x0186ca7da3619014309e4b8ebd49fec4c299f0b7bb7adb73d8817d4fb2256a06", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -4859,16 +4859,16 @@ fields = [ ] [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x142c9cb52b4cc578630b15c79176858858a4cbae8d7c29358d66da0fa361ff44" + leaf_slot = "0x006dfd7adf426a182b417c95f4827bd707e73020aaf74cd0ad9c55b6d249ef84" value = "0x0000000000000000000000000000000000000000000000000000000000001f40" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x239d87885659c85849d8950cd42a0b69d41521f8c9a10670e86bb5fe24aa7192" + leaf_slot = "0x0ea327809af29f9262161a3968d72cc01506b8f8cdf044e5137c36f5f3819bc0" value = "0x00000000000000000000000000000000000000000000000000000000000007d0" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654" - value = "0x00000000000000000000000000000000000000000000021e19e0c9b0d92856d6" + leaf_slot = "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" + value = "0x00000000000000000000000000000000000000000000021e19e0c9af3c95fd7e" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] leaf_slot = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -9278,101 +9278,101 @@ vk_path = [ "0x041560686d9398f92c5c2b9e672987f4033d9cb200c25ca5ac84b66b05594f73", "0x157fcd65138221a77db675de5f924aad7f4c48affaf85acd249ba1bc9746587b", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1a8c157a307350dc57f06625e220057348008c02bc50c04154826acb1153bb77", + "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] [inputs.avm_proof_data.vk_data.vk] key = [ - "0x28190f9d2d27b8a0ab3736ab0004ccebbb6ff57f92eae5570bca5c985ea173f1", - "0x0c93a35e1247701ca42a8fc25560249e0059d197583917321a6dc5411e7b1c33", - "0x2696b32ea7cb9efc285d4f2e645b17815b31ef7cc289f3106b2007a08956b462", - "0x1b68e020841c5d8c0489c7df50404bb59a5e1ce91cc7e25026fd718c5f71e0ab", - "0x2d3ecf8ee5da794901fa6a4525869f843943ac4cd9f13ab2ce6af34af07ce563", - "0x04e23b3b2e5fd5574e304ccbfb69fc1b84b814368fe970c718932ac86cdb5d53", - "0x2ed5997155a9419e8d9cf822f70611ce2548c27ce8369403bba40bc82fd8b120", - "0x1164991a587a42955da30ac57f432ca08002988258b976119725d8581a81749c", - "0x28cb4e54981f88b6372f16397c69c913a1e6e6d18b640894534304187a7ffa4c", - "0x0551b0a56a4ad4f3206324353e648896a749be59a302e14db473bf4902fc6a2f", - "0x1ac261a6805c1ab5f820e3b98bbedd46e411148a9ab7a07347a1ef9de4250606", - "0x2bf3c3bed49c5cbdaf98f33f632bbd6f654b896aa76f178a3e579876075e4c87", - "0x1e7622817b2d1fea32f7a7618927aba490a5e7796267f07f083bcc08f8e3668c", - "0x074dbb1def71260ca901a17a3cddb19fe6b582fa4791fa16f14c6585004c33e2", - "0x1af91466608eba967ca6dd35dabea444c6d242f440f094b1731f3ab1b681667f", - "0x1399460626502f4656d86e13d843a69727da855d8aaac9db925c5b2e6b399f56", - "0x12ea84f608070ff2e9e652e2892ab4262b6396d8539ce5980ea1a4ff8185e567", - "0x0b5531550fb674dfebde7486bf017c9eed5bbef0f505f839cecbd4e23ea5d2ac", - "0x2aa840cd36600287040625ca338b2ad5319d538c078d8f5260c60cde8b1bbc0c", - "0x2d8f72f43ca5a7e7556a98222e8afb7e9a29d0fe5b9f023e752c8fdef8b4a120", - "0x1d9b2420d17e82fde1618363a66dfba41a2b44706e700bedabddc0aad0adcfc6", - "0x054ca717727d64ee7123801af5fea269d2992e0a90af13cdd7d56de109ac3b2f", - "0x270ba49dbc567f18439c7acfc49bb76f1b2f367d3daec42d70bd643e06f4033b", - "0x12d141c0aa7b365a32e9c555e9a485015f77fa928248577e0ca911de362befea", - "0x20d9edd3ae1b2a3bb900b39d1e6980323db3e531426d007cece9b430bf2f6572", - "0x0b35f0e043c7730c4c10178a81b8c282bf1db7374396b3f1eb549180f7806768", - "0x297d5a8d09903aeda486f3b61a412f1f1da7d19dc7ecebb89bf651e17664e8d1", - "0x2347323434cb95e92cef6068635014f2f8171169972b3b83821509c4162c03c0", - "0x06f449baa34060a59b9db78b0b42b609bc5bd58a0b42d21a920355491bf15a17", - "0x24b77a61364d470f572b09d835a275897d997c1b8c123e41f9a209322a4cae0d", - "0x0a3eed7e5a8b3c8605634bf984b433f6571735a5bf183dc215a0041d62da4efa", - "0x270363c970e1dd2589f79e89cb6e46d9b0ef13baa7a10954db4720123262c5ad", - "0x12309921802a7ab89828f3900c8a54223b925fe09ee4912b70ca1b0836cf5da1", - "0x11155c1464a577908626ae5c7cc0d8e50f06f627001e024e16a54332e428537b", - "0x12c1707eb1123db5fe8273b57b3f6d0f1f4bc91d1cd21360e20a7d6f1ee9f557", - "0x1c7608a721f105101b0800aeed7d9b7be2120da6f9c679616bb86cf889c1600e", - "0x1e2c3a44c4cb5417f972bbd4830e707310208a9f7a4697fe4bd095197cb0e003", - "0x05c5117b9a8a1ca9ef0050f84956e8b134971e71a29ecd8a259a59d3db9dfbef", - "0x24dfea2f85cdfb44cec057a1579c3020d7ddcee486cbd65feb753d9fefe33400", - "0x228d5f484e5cd134dea4552473f46e32d668a2cb26a690373bc19321a504f398", - "0x06942e39d43418609f723a6fbbb23d7de38d726f59444f9b9b7385a76e6ffe83", - "0x1f9d603363a15eb075994b88e416e6b59b7c9519a278a9e9162988f08e0545aa", - "0x0da7c6f9fdf38b78121aa1628a9b06ca6532ad628e79e48ffcc27ada290319b0", - "0x281a1d96df8fc58ff5b3e9fbac34c4c68cec5fad033c19b9fca6b200259675cb", - "0x05dbd20ac8b1322bf5ff3d98d324765b96d737e4483372a11390b22c68ace820", - "0x04cc2576f0191b0daa95008674de15d4e482fedb053769fbf55693377c038791", - "0x2d228c06b8aa46368a0127a34dba3c32645bafcacdd374cca601526c85063483", - "0x22a2f36fd68558abac19fc3d86c78c0cde6c47dd49d3163abb7cfdb397e3b2a5", - "0x12b18c5036542b6b53fc3a529f8f53dff640b438bbe5d50e7638dc37dbb78f9e", - "0x09d78febf867f28cfe87c850a697cfbce1a2eca145c17804bf5781b854e51f45", - "0x1c1d491003cc01c96c85ac414e6a08c561e8ac0ee2cb4200c564b5778002167f", - "0x09176251b0497258097b619aa54460f3d738d8abf5967567509e2554be2d565d", - "0x079ac1028296b404e1104ecb76ff47dd95a37a30b046319490b306e087398fdb", - "0x2e96a67beaaf0d5f6562d6ad7498b5874296edf9d003ab71fd75030bb2059187", - "0x27b25ca8303a50fb9c0783401128cf94f3014c9d903e3edad9256075008c2649", - "0x0d6f56b2b48a75c09e575ef39d1b3c07b1739ca9dd51e5295669d34581a0dc91", - "0x11761c5322503b32d167b9cd465c8a21801cdf1c2a02f699d4bfce4f0a431660", - "0x28ceb751f6372f80f143f161d6756f2b9f9863dfca7ab865c6a28e3f50d24ca6", - "0x2a8cfdf8ec3c5b073313b388fa738540509cc519e53574fdf0d13209731137d3", - "0x278545cd317b6890679e32d624d8e81384efda914345732c82f05af31b209d24", - "0x2df702a6cb10f9ca63e6b4b63768fb3e414a1627b4af58a96eb278053438b0cf", - "0x2d7ce621212488b7783dff6d50d1f0588047799007aa859e733e2e555dedf6cf", - "0x16cab5ec03fcf0d646e098f8c80745bd6963b47218698e34936684b1161be5c2", - "0x1586b0e1d8ea93f5449ab0f2e103cd2ffc26be498ddd4162d38e6f19d7fe8bb6", - "0x2a95333b8ed3cb4b04132376736cf5caa6d6a473a8c9a464c2e7f54de842ff89", - "0x16bcfc3d7c60b5d8ef78d4fbc230601e6d3063521d12cf640b6634680c22e176", - "0x0c1b33b15ca0134daac8240e9af8219b276300f5e59a935c28366435b64c7e7d", - "0x185dfbd9aafd28181f491cffc2aaf13a0365e7255e748877fe694bfbc1b16362", - "0x1ac69e697ecb73fc9878bfbd5f3c1119bcf6691d78c2e51e62e71491132249f3", - "0x0caa6b33a85e0dde12ef869a2f75bd642a2c3acf8245459eb8ff056c89e06217", - "0x0454319ed6a32ee295bc5c3a662fb1fe7e71c1262fa23d9583c89bc6e518d37d", - "0x0d4e799a0b67e327a8b7c50239db56e8c207b4ac5e4d98c85c5b94e0b34e41df", - "0x1327e4a899a3fcf0f13062bdd1d376884695de770537646df4ff0e92769ca3e8", - "0x0433c23f223e4f0692da121ca233d996a3e36ab67567a6b9a7e0a4c0c2dab2fb", - "0x1302c2cd8d547f7bc7b5682d49025004f8cedb00bd8a35e2fd580ae3bf37f82a", - "0x0b298c6edcc72b4aafae3734226eb283aa684266b87fbddd42f0e30980d8e193", - "0x1018f0dbe45bcdbf0c01778f8170887d2f773d44c5c4deafeab1ce9f87162db7", - "0x2051b0812fe8fd30ca9499a3352571189ab61beb7135f28a92b3d6a5efef8ec5", - "0x02f35807325aac64e15df1c69b258d7e9b9d49bd78a0ea9571fbd3443e72e8cf", - "0x19567084d5e6927ed2b785c67ea62b304137eebeeb2d1714e983e2baf86a0133", - "0x1b3933891f98f0042174d31ba9d5c1da92fb9bf51bc7dd9b1ca4c384948b418f", - "0x1adb6607bc9429afea347aca866a3622df0fd723374533d2bfef8d68850503f4", - "0x2cfe32c419eb42c043684d87f75359ac5deac3788b92194ec9b45ec4d1d19238", - "0x2976983a385f406f6d025c9a380ac32c99137773c626a1320c0f7cf00b25ec34", - "0x3002a5e5212b0f60e9b4fed3979e051144d4a1fb8b6adec71a1c320eb9a66fe5", - "0x2ca1526fd1ec21af3186d4ec8dd4fdfcfe046f3729d2eee80ad2fe096d13f674" + "0x1ad2b8b45b3742f7818ca8449f9d1b5e2d2773cc415c729a26ce7edf00ed1a1f", + "0x05613b39b4d97a14f1cce925035d4a66a13a984bdb4ffaf53604c5a781064b18", + "0x0834b667bb98aeccc3fb739ce039c1b5bb0e1f4a80b4364209cd57774e406440", + "0x2dbe35d0605813f9e40c1b6c0c8e35d222ff5bfb96143af578f9489b9869f520", + "0x2b48ca5e49a258bc7ad69ee9b4dc1c79a7b9593932dbc862b06430eb3c69a0fd", + "0x25857b0768acbe84e921436595672b79d55518e3cb6f9a6b1ec5122319ae4636", + "0x19d932139ecba722aaa3290fbc0e13c68476742b7a45a1414afc3b6c343a531f", + "0x2b7e28fd4bb2ae152f04204af1e1f539af88b2e7d0da1ad4a92ca85f4ac86290", + "0x073fe11c5df2ee321b70fa2eb23095cc073df8a9cf454574c1e567c26569369a", + "0x032937e5efb95845487cce0b95012cfdbd7f7c5aa7c667092ee8209c26d14b1b", + "0x12d7368bbd499029a0b4dc1e3969e2d191750aa290349790e30ae2f94799c2f3", + "0x0360a836286895791d1b774d4fd1ac767a5ce9c73ee39f04648f15bad4e80dad", + "0x1740fff2ff00db0a033040c1aeb42dd0da117345d36b5e7a739f43b961994b0a", + "0x26c87730359eef3afca783999afce71d53cb0104bf71430784986d8fed0eb495", + "0x1b0c69fd1936ce18b77187aa58cbf6e93df7b4a77196729d1a928d0d662fe08e", + "0x0f312f4c8bcea1be6e66f95bf031950a0d8ef6c318ac3d71474c5b8839714320", + "0x0f9006410b19935a74cc273b4add42dc00b430a2dae5376953e5f359881988ef", + "0x01eaf7c3db9aff770b725dc84c3390d7bceecb8d9c9c93c54dae4527fa16e899", + "0x2d2152f979e2de6608dca284c21cb49b90eabd54e77efa30b23b09ee8c2784f1", + "0x2b7cbe3af5dc7952748c40d0591b93b14b9f0d94c41abca164b2ed7bccd42357", + "0x2c8fa485c69496f4aa237adf8949a36e54cf3d092bc6326b4af7545bff5d7ba7", + "0x147955b632b5ba00e4cb05d035f07b5219d72ed574d01b2e0518d6cf6c9b6851", + "0x16a31feefb8519c3d1108224860ea81e9ebeb7b07a4df28a56083c41a060e4c3", + "0x0c2d1c9d1944f087ed5e64d417de8744bcbc369503a99577f25aacefea5c3f62", + "0x14eecf69d0266d242927909d694064c21f66ddeda19311215fc05fe313dd8f40", + "0x25c55de55acff79235849510862c48b3f3805db73d70fb435ddd3bb0f6b27ad5", + "0x1e3cb83a7c44c159c9112e50104514c2b4cc4ed46b58cc418d4624fa72a822dc", + "0x23da6567eb2891dfc05be6ee5308d3a96c8fe730189dd349a439d26dd8b4eb99", + "0x1d02508dee8e01cadf7c32e8ad77e3b8da8be70bd79caab9259a386d1e3b3f11", + "0x2d2d3555d14af790b9713ec68fd38731b68d70189cb58c036ff33b3afa845605", + "0x2b3b1b4b7082f10ace1e84ae33775b81c0a74a3d99f8eafdffca02d02b320692", + "0x1d70ebc1d62a87c13f6c2f28c6b7e976cd03a08e22d2e3045048b81092ca023e", + "0x2919581fa9c88b31d31d48a5157d781e0730536a471084e1b698b2d12ce1afea", + "0x0e5a528d498e5a476f09121b3a9dd706e236b5333bc3e5424296d827ddd428b3", + "0x1171ec026138e629ba03e951935f4d2c6effd970067b63a462c2056cd696b8c7", + "0x178587de5a9aef580a0700d943e73af647f538cb58cd9b7322041512accd55d0", + "0x2da6099e0f60859fdba66547ca7d9591060b69f1876d06b621cf69cc959d503a", + "0x21ba9dc6a92bf5c876c4c2b1da142d05b2a6637d6f5b848db451f994c1758081", + "0x06b4856a69254d2bfed2bf28d52c39fd6a5f9693a7f3d1b8c633e898bd8a3cd3", + "0x09c6e1866ab7c9db997e04e61101926a45b56ca9411a521732d4c10df34e74ee", + "0x03e553b1f64a685e2cf3729dd2eb975fbbd624f037376a8b03c1380b92ee56e5", + "0x1fefee40799ae0751a8cda0c41d335dc143dbe0dc8ff0dfda3b6bc3127a33d37", + "0x0f02ead4ef88005713d5955ce8378459476f56f42a1e53c2d100852edfc485dd", + "0x0e582237f3083a02d779a4a6208156271783531916875af7b741f514325214dc", + "0x1eb558c7b0bedd0141d6cf57648c7a896f7f5f8e5a4cb1b2b3efa6c883eba577", + "0x23eb1f334496cf807c9be0a9628963c608c741102c308de4f16ee7287624d1dc", + "0x1c129620d02769ca2680fdf331b995cb2c6402d9404b71c00ec47ccdeccfdb95", + "0x1494aef650214cd14c88ec7aa89f9fc5f77b5eb05fd1f897f0dd4e358beca7fc", + "0x2c40923611fe40e79a23652ed21ed28e50dc001f80045f4a146b424e3ef10763", + "0x191cd9252766a579131bb6888e7f6f95fb5605be38108917d159ba0af2bf0d5d", + "0x0af9d55a3a796bd8ea8e771a6454d4b90bdb241e8fa520f805bd424b9dff4ccc", + "0x18a7ed69f144ac638b2f5bfc5e97604be12cae51e359df993aa15819a280c8b1", + "0x0526196ebe8e5872d5402a68779dac8be74e3774952a75a79c8e9c6ae43eb508", + "0x12e7feae2c697c1d59bb68021413d074bf397d8cf2e35a4cde4221e57624814f", + "0x2ff3ffe67f41f1bd4c4367b17e4150e8932e90c80c8a5eb17a8240bb1e73f444", + "0x20be7c6324f20544c11663be0c29b7f91c02610a2508d4a59cfecd73c9a17153", + "0x259c87a1a6bee7457497667fa1ccddcd17a269c15bf3d68ab7b66a476acc4fbd", + "0x213151f5b77f188de8b7dca19ada6f8d9a4ca621f86b67dee1551f1d0b37b7fa", + "0x010dd0e3eb54acaf8b6cd6c9b74a5b9dd2aa190f9d496a01252e3b0040acacf0", + "0x0c723a4068f3b1840b5378f3d9edcb690bda0435ebf1453e93fc9eafdf22b737", + "0x1f32ca67752045c857c986b5926ec55fd9bbd196b043396444948c7628853bb9", + "0x05d80c6574e6950edaaca180780b3a95dee32d2bbb0b891179ddb55d6d9c6708", + "0x0020cfb74abb25ef7ce1695196332fffee81fff00d4b09b24c4f05234496adf0", + "0x164329eb3ebeaf225a8575c887022530193b1998e482008664b1826f4e7c1f8e", + "0x1ec4c143cdf6df76667d55e1cf1e4dc3b893108a279a477cbbbf4965b347050b", + "0x1c6231a5e7cfc99f335522c4d9c5f8b0e7e1a0b6714bdbd5cdc78402e370dc9f", + "0x15c261e90184440dfc0b1891a05c610275d7eeb69c695a64a96aa7eb930cbab2", + "0x0f5eefbd4fbd3f45e469fb448bb1e70819923d26eb75e4a4ae95df249c6dcc52", + "0x1bcb5b76889e95b5b8b89f49a09fc0edc24a5594233b71057dad6de2e99d8f15", + "0x21f8b965a501fd68f98f88fd6d19078ed923632181d112b0c1b96c49aed6e8ef", + "0x28d7827bd8fe8a53cf2a521f3be997da3d91d67b8a9bf0505370c942730c27a2", + "0x03e0284611f393525a48225be6a4b1bf14cba08e6f88bc3b3442499505d58b6b", + "0x2288ac203020c24ea1757b42212a40cb33e089cd3ad43fac6c01d148437c11d8", + "0x24bc1f80ef58b3597385a671658e167c26f9c6ca5e71d148ef87a12cc0a5d39e", + "0x1fd83ea02d8e8b4a95b39e238e46898adb0c84661e42808dc0f1c2b0734f23f8", + "0x1e73f71e6499682bcaa4f47005539de8f43225b381012776e4be7e0b000922df", + "0x26adf9896f04dd33f9755768ab275a2e4761bac227d3de0298433a6e55020faf", + "0x114b611a4e1ad2634e9e4348eb2b884d5d179f2533d0d7eca5f6c168880f1077", + "0x2a2bc4b2b2074cc26b353260f5732b739efe1bca0d95767a6d31f76d7aa34b9a", + "0x0a538a0602f5b574dcdc8a619a6807611f1f16010e84027438fb4e6cae98bd1f", + "0x0fc91325b659a4a3b2a0fdc5e58042fe91a63f4ee397c58cb21dd5daadb8ee6e", + "0x0d0cf921cdea973642374849287594e8dd6628308fff9371932eebf4b79d9759", + "0x18aeace84a3adbf2062dda8edd3c7c0ac44d97fd0bbb3072732cb7ec5e2c0ce1", + "0x2f86a7e532a1f935fb9cbfc9335edfbe76fee17319275dd7e41a3e4cb8c46daf", + "0x0710322fa3c53f7dfbea848f21cb1c053e8bba007fd0d5473e284d369e85203c", + "0x063b41b02ccfbbb4f9a236907f0ceab7c502d343ffa161292e6551d4c81b4fc5" ] - hash = "0x19e0ed53cb1c7d364909845a1ab7c5cf2eb1ae8073cb0313e331cc7e60ac7af9" + hash = "0x2198bcb9d04137aa3b68d9e963863c051cceb3b5a7119d4a1e86197cb78b20ad" [inputs.start_sponge_blob] fields = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -9396,10 +9396,10 @@ expected_fields = "0x00000000000000000000000000000000000000000000000000000000000 [inputs.archive_root_membership_witness] leaf_index = "6" sibling_path = [ - "0x2d97a3b962d08e0a6dee9bc286cb853154df2d660c34768a539abe30738d77e5", - "0x1428c191da00ae9e6328322750fa77bbf6c5b2dd70ee3c219a39f0f1e9784b81", - "0x2ae950126da08ba15878702e2394c18a583d27e508fe0ababc036b9fc66f1fa0", - "0x0b6125f7ffabce5fa629725b93e3eeeb91ba9e2bac9deb72ce57d04f54a91c48", + "0x2c1e37040106baa26cfccc669a9fbdb80bb014f9a375c4ab17a4da6fba1f3246", + "0x2be2e0b5247d27d4aa1436c8ddb5f63ec56e9d8a0c0d295750b1bb90cb6d7343", + "0x1e96066120e8194f7cffe64e70af687163885eed70669e9707b1a00cede7cb81", + "0x00ea387bed0ee12d6d235b4ea55875140df3212bb252acf27d6ceba9e76cbe6a", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -12455,26 +12455,26 @@ fields = [ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants] -vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" -protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" +vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" +protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [inputs.constants.last_archive] - root = "0x00e90e8835f281e4326e5f50c81dd69a65415ac31e4802a55275ebe02627a7e4" + root = "0x2654086cd6d89561f4e67ddcb44940715de36e827be817fbc8617a2e0c02e0d4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784e5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f55" [inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000145a" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001694" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml index 4b66c36a1a6b..0de416abb6ec 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml @@ -1,57 +1,107 @@ [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" -protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" +proposed_block_header_hashes = [ + "0x007f01080db85061d9a8f4c700757c51a956538d32ba6c0f289b5222b00f9902", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" +protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x01f3f9528860628e391a0775aa92501d300cbdf884e49318747dc9c8c4be2670" + root = "0x15b96c203874595fa1e623ce8e239e955f35474630ab7ecefaf9186f6de51778" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x0d3828a8fd93fdb49ce09ccc58b3a5903cd3c87783948c2095687dcf7fd44bc7" + root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784b5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f25" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784b5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f25" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000000000093bd180" + value = "0x000000000000000000000000000000000000000000000000000000000a524180" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -337,19 +387,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x2b7654006d02c5805989e047a53e97e597d755669d482351474ac619e5250220" +z = "0x001841f73fb11082921a49c10432e66ccccdd5607d6da1f5b02c83db3abdfcfd" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0xa7571bf41cb3bbba9185704bd8bc51", - "0xc3ee8f31759634c8598d5fc28ace3d", - "0x4135" + "0x1c60371acabfe17d5bde1152a6d5bf", + "0x182f215cd91016a553edacfe0899a0", + "0x603d" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x0099b696d1aac59ac1d4bb75c8baba02ca72d3b973e9cedca6b53359a997df48", - "0x000000000000000000000000000000e3e7515687b11fc6178923f9b1f5de67a7" + "0x008b4729283581281f60e84226de54260b2f4b54020a984f38dbc105c8ecd367", + "0x000000000000000000000000000000ddc329f725352424fa4d448a72e3c84f5a" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -3229,144 +3279,154 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000400000", - "0x00000000000000000000000000000000000000000000000000000000000003f4", + "0x0000000000000000000000000000000000000000000000000000000000000424", + "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000000000000000000000000000000000000000040a", + "0x000000000000000000000000000000000000000000000000000000000000040b", + "0x000000000000000000000000000000000000000000000000000000000000040c", + "0x000000000000000000000000000000000000000000000000000000000000040d", + "0x000000000000000000000000000000000000000000000000000000000000040e", + "0x000000000000000000000000000000000000000000000000000000000000040f", + "0x0000000000000000000000000000000000000000000000000000000000000410", + "0x0000000000000000000000000000000000000000000000000000000000000411", + "0x0000000000000000000000000000000000000000000000000000000000000412", + "0x0000000000000000000000000000000000000000000000000000000000000413", + "0x0000000000000000000000000000000000000000000000000000000000000414", + "0x0000000000000000000000000000000000000000000000000000000000000415", + "0x0000000000000000000000000000000000000000000000000000000000000416", + "0x0000000000000000000000000000000000000000000000000000000000000417", + "0x0000000000000000000000000000000000000000000000000000000000000418", + "0x0000000000000000000000000000000000000000000000000000000000000419", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x00000000000000000000000000000000000000000000000000000000000003da", - "0x00000000000000000000000000000000000000000000000000000000000003db", - "0x00000000000000000000000000000000000000000000000000000000000003dc", - "0x00000000000000000000000000000000000000000000000000000000000003dd", - "0x00000000000000000000000000000000000000000000000000000000000003de", - "0x00000000000000000000000000000000000000000000000000000000000003df", - "0x00000000000000000000000000000000000000000000000000000000000003e0", - "0x00000000000000000000000000000000000000000000000000000000000003e1", - "0x00000000000000000000000000000000000000000000000000000000000003e2", - "0x00000000000000000000000000000000000000000000000000000000000003e3", - "0x00000000000000000000000000000000000000000000000000000000000003e4", - "0x00000000000000000000000000000000000000000000000000000000000003e5", - "0x00000000000000000000000000000000000000000000000000000000000003e6", - "0x00000000000000000000000000000000000000000000000000000000000003e7", - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x00000000000000000000000000000000000000000000000000000000000003e9", - "0x00000000000000000000000000000000000000000000000000000000000003ea", - "0x000000000000000000000000000000c91b09ee4477cad93086589015c19d664d", - "0x000000000000000000000000000000000021255915f66a1fb1c0c45527c0d0b0", - "0x0000000000000000000000000000007f29a552af1d2e40f80e877018051689b2", - "0x00000000000000000000000000000000002a06e2eb9d9e03114039334173bbe6", - "0x00000000000000000000000000000067547e19ec5c471a48e76e3bdfb7b5a823", - "0x00000000000000000000000000000000001fa896438c0f8b4139bb6379e9612a", - "0x0000000000000000000000000000006550158e15b0fe7712727527ea3d0c399b", - "0x000000000000000000000000000000000013d0096d7c4fea967be9b8ee599ef8", - "0x00000000000000000000000000000044123f796c6a94b1c449e8745631eb4d0a", - "0x000000000000000000000000000000000029a4b2664a3afc231fa14965344dda", - "0x000000000000000000000000000000f1c792d80f9a9f902451be8b99273b796a", - "0x0000000000000000000000000000000000208114ac766e8ee1fcefb741617eb4", - "0x000000000000000000000000000000b8ac66b8175c77fbed938fc691f46a291b", - "0x0000000000000000000000000000000000237e86b73a28273c4c7b0572c18f2a", - "0x000000000000000000000000000000a4e297df117a0a695915e0e2dc29d691b9", - "0x00000000000000000000000000000000002350b59c33a549ee165efa5eb86b03", - "0x000000000000000000000000000000e68cdfa136708813d5c551155f77462df5", - "0x000000000000000000000000000000000011d1901f037ad3d16091f13e91cb72", - "0x0000000000000000000000000000006624d40454b46441d73c874b35fb302c88", - "0x00000000000000000000000000000000001f45ba241f056fb577655a0a8325af", - "0x0000000000000000000000000000004f9d11429c2edce01790c07e538f5667cc", - "0x000000000000000000000000000000000006a7ae99867b42c1ec7b865e06c6c4", - "0x0000000000000000000000000000001f2b95639440c1a63877ac345ddc6f31a2", - "0x0000000000000000000000000000000000245f687da57d3b3a0e6ca5130c46b8", - "0x000000000000000000000000000000e6a9379f531ea207de4c38b3eac969d590", - "0x0000000000000000000000000000000000168890ac957e785e5322018a09f155", - "0x000000000000000000000000000000dfc38022eaac25d496a4537759ce2bc920", - "0x00000000000000000000000000000000002bd0c4aa32c8a85d9b5200367521b5", - "0x000000000000000000000000000000758e96a3659a0877b601e21c4269543487", - "0x00000000000000000000000000000000001231cf0520c463ff976a7e02790e09", - "0x000000000000000000000000000000f0759da36dda572ca16a880241cd8dfbe0", - "0x00000000000000000000000000000000001ee5b47453d93f3e8fe6aedd38a111", - "0x000000000000000000000000000000031a0d6c051f70654474717889ab0b40c9", - "0x00000000000000000000000000000000000cb262f60112bed8012e27f9745099", - "0x000000000000000000000000000000d76a3abe4c898fa4180b66e9f702bb4328", - "0x000000000000000000000000000000000007d8fc47186699fb8d2dbbb235e8d5", - "0x000000000000000000000000000000f5cae6ae7f16c1a2dd27284fa8865f2691", - "0x00000000000000000000000000000000001a14f81b7331c73e6a5113af314ee9", - "0x00000000000000000000000000000018c8bfe71feedc009498aeb03e4779f05e", - "0x000000000000000000000000000000000029749134a511152530d6b456e771fc", - "0x0000000000000000000000000000007039fe373dd9498554f0f0b88057f6ee28", - "0x00000000000000000000000000000000002e86ff735bfead8fff1fd217af3b6d", - "0x000000000000000000000000000000eeeed70761f7b7dc833c4e52c065ef889a", - "0x000000000000000000000000000000000014bb2d26b4a88498a132a5d49157bb", - "0x00000000000000000000000000000037f392bebc84b9f68e7481cb636d94930f", - "0x000000000000000000000000000000000012d83bf31021974a9112c057050db4", - "0x000000000000000000000000000000630b174bcfdc99cfffc18c5a3357fc9fd9", - "0x00000000000000000000000000000000002369fa36e6e7b848ae1720a8aded03", - "0x000000000000000000000000000000071dfb07128344beb94865b2545decb893", - "0x00000000000000000000000000000000000cf35f7cda155febb76dabef3f3e46", - "0x0000000000000000000000000000005791274945bfad20980643de4edfb9ece8", - "0x0000000000000000000000000000000000232ea9d7800464c1e8cc8e2bd1e7fa", - "0x0000000000000000000000000000009b01459d542f8bc0ca0c45f7dc010e9d3c", - "0x000000000000000000000000000000000026355b4385dbe5494d06ce1d3aab63", - "0x0000000000000000000000000000005adef58e5dd913443f9236ccde99348012", - "0x000000000000000000000000000000000005c2b48d769c481b64766977be11f5", - "0x0000000000000000000000000000009a9592b8e831c549900823caf6fff2a63b", - "0x00000000000000000000000000000000000ef1f6cb4c305130ffcd2cba7998d5", - "0x000000000000000000000000000000b111ecc0e3b6096d04ab409d1031113d8d", - "0x000000000000000000000000000000000022cb8c3bf6411f00b43b5e144f15db", - "0x000000000000000000000000000000335d82d0e7ad2ab867b3455c5573bc5884", - "0x00000000000000000000000000000000001d9899242d75dd7e50c4d833319255", - "0x000000000000000000000000000000166740b9f2177af9356ae2e97915cd3348", - "0x0000000000000000000000000000000000002001093682571844a66bf3646d95", - "0x000000000000000000000000000000a302265c23a9b1c243e5f25e8608732956", - "0x000000000000000000000000000000000008e05a879e24f9448959f256466f27", - "0x000000000000000000000000000000aa735a464058e8b6b1d1fc4919430e0519", - "0x00000000000000000000000000000000001678d9f1bf9728fbd96b0467dd7bb4", - "0x00000000000000000000000000000011e28678d41b4202fd6b7c8fbb8d3ecacb", - "0x00000000000000000000000000000000001a9429ae351527a73388b5430b9821", - "0x00000000000000000000000000000051c9bf17dfdcc7c5525d039b2c701132db", - "0x00000000000000000000000000000000001b421034d5333685e2fdfa23a43f38", - "0x0000000000000000000000000000005d8d0cc8efa0ed1e5e03fb57dfe90b73fe", - "0x00000000000000000000000000000000002397c69f0bb570b8025cacf29d7bab", - "0x00000000000000000000000000000044a2b1f7a8df29c4a98f722fe4beb7e374", - "0x000000000000000000000000000000000011fcce004e9b51a3c906e106d6cd1b", - "0x000000000000000000000000000000518801da7ba087fcbb0c440943c8086bd8", - "0x000000000000000000000000000000000021b2e6ebb6a8603f94ee106464b003", - "0x00000000000000000000000000000057fdb84a8a159f6db6777b3f08077b5653", - "0x00000000000000000000000000000000000472da363520675cee5aeaad93a0b7", - "0x000000000000000000000000000000f2525afc9880482204e3b4423623980411", - "0x0000000000000000000000000000000000274e7f1480c27d476b86a5f5391c29", - "0x0000000000000000000000000000004a8eddb3b148661c9ac36cce0f1aae8d41", - "0x00000000000000000000000000000000001c73715417505d0b2b64114819a4be", - "0x000000000000000000000000000000950682eb60cb5455d12d47d478edcd8744", - "0x00000000000000000000000000000000002674dcc5c46aace2a7b24c9177bca4", - "0x0000000000000000000000000000009d0400d74c2810099803ce00e4d212e027", - "0x00000000000000000000000000000000002dd78ffbcabe324f8fdd974ba4592e", - "0x000000000000000000000000000000835d6524088c85a6229c253f19f9075a24", - "0x00000000000000000000000000000000000ea53cd2576f3ed59997b9c31ade62", - "0x000000000000000000000000000000b63021ec911d878a8808271f9fc354f6c1", - "0x0000000000000000000000000000000000013899f19981c306831c30f8be091f", - "0x000000000000000000000000000000e9ea0973de12fdbcf9692352b0bb9e126c", - "0x00000000000000000000000000000000000f480ce1fe1a5e6d79c1aea34ff6bd", - "0x000000000000000000000000000000377185add84afd6c2c81cd920469f4eed8", - "0x00000000000000000000000000000000000b30da5e57df9005bb26388bec1e13", - "0x00000000000000000000000000000016d15d01c4e568368a015a4a1bd827a3b9", - "0x0000000000000000000000000000000000181038d51220ac7f524520f4dd4e00", - "0x000000000000000000000000000000f69b5e222476cd81abc41a7e1c7dab2bc2", - "0x00000000000000000000000000000000001fb2cec72c2a711d3a7cd9da9ae57b", + "0x000000000000000000000000000000000000000000000000000000000000041a", + "0x000000000000000000000000000000000000000000000000000000000000041b", + "0x000000000000000000000000000000000000000000000000000000000000041c", + "0x000000000000000000000000000000000000000000000000000000000000041d", + "0x000000000000000000000000000000000000000000000000000000000000041e", + "0x000000000000000000000000000000000000000000000000000000000000041f", + "0x0000000000000000000000000000000000000000000000000000000000000420", + "0x0000000000000000000000000000000000000000000000000000000000000421", + "0x0000000000000000000000000000000000000000000000000000000000000422", + "0x0000000000000000000000000000000000000000000000000000000000000423", + "0x000000000000000000000000000000419e7449b6adf1fd85a2c257e0393cd204", + "0x0000000000000000000000000000000000199570e259755453396fdcf92bed76", + "0x000000000000000000000000000000dfe17d35601509209d3c794ce7590de703", + "0x00000000000000000000000000000000001e4dc2db4651fbcab36a253964d094", + "0x0000000000000000000000000000009fa10a4dc7242aeeeefa528721c64be971", + "0x0000000000000000000000000000000000169ae254b0abd0ec6ed10a748c06b0", + "0x000000000000000000000000000000fa0cc8d50135f79336d2e9943147f1fdcc", + "0x000000000000000000000000000000000020202ba9736558aa72db82a7371261", + "0x0000000000000000000000000000007e4be0963c1aee7065ebcae1a24287bf1e", + "0x00000000000000000000000000000000001b3af4930768449cd6219753816230", + "0x0000000000000000000000000000001fc531939cc1eb6071e1fa3de4ba0da873", + "0x000000000000000000000000000000000009feed0c8ed731c4dcf1c2ab3633f9", + "0x0000000000000000000000000000001596fb9abffd61d5766dc34a1c60a1ce54", + "0x00000000000000000000000000000000002e62cec2dd81d0d25d7a999049523b", + "0x00000000000000000000000000000052376060fe0a0a4340a74ab9820cb5f3dc", + "0x00000000000000000000000000000000002b78ef38a40c841751c0a570cea133", + "0x000000000000000000000000000000baf35b01257782bc47d1004fa51bc145b4", + "0x00000000000000000000000000000000001da608e92e07ad96f1425ae4afa39c", + "0x000000000000000000000000000000757fdf0fa2cec6b71b56e08f25d9b03073", + "0x000000000000000000000000000000000012fc126fe069812e0e46908deae457", + "0x00000000000000000000000000000025a63a2310119e032062edf2748af3935d", + "0x00000000000000000000000000000000002a6b4b83a0c773df436ac08d125a6f", + "0x000000000000000000000000000000fbd36b80ea33b7685b16be6db694499bd5", + "0x000000000000000000000000000000000020ffa122ec5c8303dedc2e14f8bc4f", + "0x000000000000000000000000000000e6bee501455201368d829cd1ce79087f61", + "0x0000000000000000000000000000000000200a6916f2e94e0de862bccb7c66e9", + "0x000000000000000000000000000000ce79b607a7f0f58208394dd5ae4ed88772", + "0x0000000000000000000000000000000000289dbe505abab4d4613cf578f4ee04", + "0x000000000000000000000000000000f345237557f2315bbf1c292e85cb1fcf84", + "0x00000000000000000000000000000000001d8dbd5043a6b4f045dba7e0d93a43", + "0x000000000000000000000000000000ad875e883b75687701b4b45373ae00b679", + "0x00000000000000000000000000000000001489f0a865e17b3c308ce2eced6040", + "0x000000000000000000000000000000dd45e6eed7ea285daaba2ae39c138d788f", + "0x0000000000000000000000000000000000008ddaab4a5bb998c41add978ad528", + "0x0000000000000000000000000000006a2a99308f13dd548edeecc6f8f5fd1d52", + "0x00000000000000000000000000000000000c78f4679dddc6650c1bf822dfbd0d", + "0x000000000000000000000000000000e430f1bf59328f1e2163d9edf2c6c29499", + "0x0000000000000000000000000000000000038d703475a6e55a48b307018d79c8", + "0x00000000000000000000000000000061d31b3687253f7c0a17a0bee920440ed7", + "0x00000000000000000000000000000000000876d7518b158a5826caa989a42f28", + "0x00000000000000000000000000000065e5753e3f96ad88571b2d305e7514d6c2", + "0x000000000000000000000000000000000023e2f0a345aa338df5b1d0e06f7f37", + "0x0000000000000000000000000000003af39bf2395f7544eaf12190cc6829ccf8", + "0x00000000000000000000000000000000000ab85ba63d1e2ffad75cef9be15145", + "0x000000000000000000000000000000bd35b8821f75beffd500853d52d20f1ebb", + "0x0000000000000000000000000000000000140fc1c97352554613cd1fd993a523", + "0x000000000000000000000000000000c2300bdcfc58eb11e22caceb21d164cf92", + "0x00000000000000000000000000000000000c6eb88a70d96c66e624a4ca8668f8", + "0x000000000000000000000000000000f140ed8677a314751991c7bb4b554d62ff", + "0x0000000000000000000000000000000000143df52054703b6bce2e9e9162c55a", + "0x0000000000000000000000000000009ebb9c8cb9f9efafc2f66be4f937babbfa", + "0x000000000000000000000000000000000022f2a9fc5f19f76566c397cd4baf10", + "0x0000000000000000000000000000003f93ec368741fa6240a16cfe7262aad4e8", + "0x0000000000000000000000000000000000083c3852d51611baaaf92207fcb167", + "0x00000000000000000000000000000049534804e747421f647a7a45795a0ba234", + "0x000000000000000000000000000000000007e0aa0df42602fad1ef2d10afbc61", + "0x00000000000000000000000000000085a5c35aeeb20075af017e107f68003c4a", + "0x00000000000000000000000000000000000559648c7be59a7ed631465912a370", + "0x00000000000000000000000000000002514b8f30ecd8691d51e8f05fd685116b", + "0x00000000000000000000000000000000000751ba882f3f85aff0c3708330fdba", + "0x000000000000000000000000000000b43c8d31b3a552fd6ccdc3d8478dcec28e", + "0x000000000000000000000000000000000011717cbd0ce268c10c4d84dec84d4f", + "0x0000000000000000000000000000007278923f22cfde811f1b66a9d7db2e7fa2", + "0x00000000000000000000000000000000001361da9446af9c98d59b49eaa1b357", + "0x000000000000000000000000000000ea30012fb09431a85d92a00263ef987eef", + "0x000000000000000000000000000000000029bca370a46f8f354ac5e49f6ca59f", + "0x000000000000000000000000000000fb9f6ccce672614ed9333a44024e2a0be6", + "0x00000000000000000000000000000000000dfb388286f15e852482e237a50d51", + "0x0000000000000000000000000000005fc56c6b0c13b7db749137119a48f5b3b7", + "0x0000000000000000000000000000000000205834f9ac179adc772061d7bcd8dc", + "0x00000000000000000000000000000075ed56b4cb2557df3fabb2f89eb789c119", + "0x00000000000000000000000000000000002f04a7542161079050a92ea07fd5cc", + "0x000000000000000000000000000000323203d6d39cf766b9823232f8dd624fd9", + "0x00000000000000000000000000000000002df1d38173d8713f1047284cf4f2d6", + "0x00000000000000000000000000000005a53dd9bada258725818e67b9c1103d10", + "0x00000000000000000000000000000000000e8059f2acd119d92a3412731b93a3", + "0x0000000000000000000000000000007ce14852270ecb1c2a86349b1a7b61828c", + "0x0000000000000000000000000000000000156194d8ad86978a8dd6b8b4d3a1e6", + "0x000000000000000000000000000000651e9c17397afdea3f138092bc0fea2972", + "0x00000000000000000000000000000000001bf1c9d51814f099d4544e7675da2a", + "0x000000000000000000000000000000daa21cc9d5e8175c08a69118b766845c76", + "0x00000000000000000000000000000000002e7da3f77177a2d86c0b8450b1bf23", + "0x000000000000000000000000000000ad8581a81ee364d5238cd1f591801c9ded", + "0x000000000000000000000000000000000026049e5b956065ef9d897a0cfb6268", + "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", + "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", + "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", + "0x0000000000000000000000000000000000230b997570d1f85ae65a57bb57a7d0", + "0x0000000000000000000000000000000bc60b4ea3525f05223875c1af3ed2b02d", + "0x0000000000000000000000000000000000236868e5e41937ed2cdc41de55f10b", + "0x000000000000000000000000000000249541e175626917b9aaedb0e2915d4177", + "0x00000000000000000000000000000000002fb85434d64a786207f332f20277da", + "0x000000000000000000000000000000aec46500b248445db79f52d6ed7b30158b", + "0x000000000000000000000000000000000002321694c1a17469bdd178eafdfa6e", + "0x00000000000000000000000000000023fd9365c6a81758f239e73dee60348b69", + "0x000000000000000000000000000000000014cbd4ad9a23e8adbaa2eb703f2801", + "0x000000000000000000000000000000a1dd8f964e4f1c6a0c2c1407da434a5d2f", + "0x000000000000000000000000000000000018ee0334d49c017b30c8e7656c679f", + "0x000000000000000000000000000000f1571f393c77481ab166deb9cc943c32f7", + "0x00000000000000000000000000000000002f977fa69325d670afb3b6523af5c6", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000005a7a656146458b2aa2daea0c7503235726", - "0x00000000000000000000000000000000002ca964e842b63733ebc21c63d14545", - "0x00000000000000000000000000000096a8f72cd3a0e0bfdc0596f85aa3f1f02d", - "0x000000000000000000000000000000000004228f8e981bba79c16e40c2e2dd49" + "0x000000000000000000000000000000fd205e3cbb08bf3732f42f8f7394513ac4", + "0x000000000000000000000000000000000010325670ecb08d1c1ad20f04d5749c", + "0x000000000000000000000000000000f2d889b901e3e7247fdf4893478d31c904", + "0x0000000000000000000000000000000000170cf314533d4667f535487be8b352" ] -hash = "0x1ce265e7e102a08674a09b24fc17204ecaa5b5b828cfd4a910a9f2cd9b049587" +hash = "0x12190b990be64e0a871c4995d6d4091f4fe34e7c392416e0949f7fa849dec5d5" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" sibling_path = [ - "0x22913f84ca022bd27b6bc5f3cc74b963a529b9c890af5938b29d357ae5b5cb46", - "0x21e70fe2469354bfc7514de8bfc82b272cc362046fb9a108e0819db2b1c9457e", - "0x2489113f912b343d6df5fac3449c1833efd317c0abc64a8ed9d59df4130d7fc6", - "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", + "0x0efa1bf9873f28b2b90fd97b3aa86f81792b62ff852383f1f161ff2185513cfc", + "0x1f8a29ac619adc9528879eb5f86632217299fbbf54784da57b8259f454a2e59e", + "0x0e31294ddae4f4798f2bba4b55ed737d196e1624f73265772ffe5ccca88f2a5e", + "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -3374,57 +3434,107 @@ sibling_path = [ [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x00db4f24d6eff7983ec163d02c230d6a44237feabd8a2da284edce08afc71435" -vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" -protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" +proposed_block_header_hashes = [ + "0x008cd6b70a977ddb5b158d0fbef9040329d8eadf7f5699be23d72060db634191", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" +protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x0d3828a8fd93fdb49ce09ccc58b3a5903cd3c87783948c2095687dcf7fd44bc7" + root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x00e90e8835f281e4326e5f50c81dd69a65415ac31e4802a55275ebe02627a7e4" + root = "0x2654086cd6d89561f4e67ddcb44940715de36e827be817fbc8617a2e0c02e0d4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784cd" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784cd" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000000000401a4e7a" + value = "0x000000000000000000000000000000000000000000000000000000004b3112b2" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3710,19 +3820,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x02a57e7dcfee562691e9f705a27dffc2411694a45dd299cc0e46c2a98323f606" +z = "0x2340a66742e66b43f5ecad8af2115647f1701c8595468cff31373853ad0cc86c" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0xd7ec2deb3f32934971e36ab8690cee", - "0x306b16f20e668e5070e903183314cb", - "0x339b" + "0xdcde22002fd28444ac3319fe5b97f7", + "0xfb95b391f75023e9656ae83f9c1831", + "0x2238" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x008abf61373dd489794229987b3f1e6549b102719f023a973ab284074469c7cf", - "0x0000000000000000000000000000009c8747b18cf207a60939988ca7a69d327c" + "0x0080fc98f548e26e38084ad23a25b1756ff9a218d289f7ae7404f5d35017fad1", + "0x0000000000000000000000000000000e43b628bf9cc36e41a23048021d58a084" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -6602,144 +6712,154 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000800000", - "0x00000000000000000000000000000000000000000000000000000000000003f4", + "0x0000000000000000000000000000000000000000000000000000000000000424", + "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000000000000000000000000000000000000000040a", + "0x000000000000000000000000000000000000000000000000000000000000040b", + "0x000000000000000000000000000000000000000000000000000000000000040c", + "0x000000000000000000000000000000000000000000000000000000000000040d", + "0x000000000000000000000000000000000000000000000000000000000000040e", + "0x000000000000000000000000000000000000000000000000000000000000040f", + "0x0000000000000000000000000000000000000000000000000000000000000410", + "0x0000000000000000000000000000000000000000000000000000000000000411", + "0x0000000000000000000000000000000000000000000000000000000000000412", + "0x0000000000000000000000000000000000000000000000000000000000000413", + "0x0000000000000000000000000000000000000000000000000000000000000414", + "0x0000000000000000000000000000000000000000000000000000000000000415", + "0x0000000000000000000000000000000000000000000000000000000000000416", + "0x0000000000000000000000000000000000000000000000000000000000000417", + "0x0000000000000000000000000000000000000000000000000000000000000418", + "0x0000000000000000000000000000000000000000000000000000000000000419", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x00000000000000000000000000000000000000000000000000000000000003da", - "0x00000000000000000000000000000000000000000000000000000000000003db", - "0x00000000000000000000000000000000000000000000000000000000000003dc", - "0x00000000000000000000000000000000000000000000000000000000000003dd", - "0x00000000000000000000000000000000000000000000000000000000000003de", - "0x00000000000000000000000000000000000000000000000000000000000003df", - "0x00000000000000000000000000000000000000000000000000000000000003e0", - "0x00000000000000000000000000000000000000000000000000000000000003e1", - "0x00000000000000000000000000000000000000000000000000000000000003e2", - "0x00000000000000000000000000000000000000000000000000000000000003e3", - "0x00000000000000000000000000000000000000000000000000000000000003e4", - "0x00000000000000000000000000000000000000000000000000000000000003e5", - "0x00000000000000000000000000000000000000000000000000000000000003e6", - "0x00000000000000000000000000000000000000000000000000000000000003e7", - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x00000000000000000000000000000000000000000000000000000000000003e9", - "0x00000000000000000000000000000000000000000000000000000000000003ea", - "0x00000000000000000000000000000014361f342690cd4deb4d40f30978eb3c38", - "0x00000000000000000000000000000000000caeea6096551ca77d1247c82b324f", - "0x000000000000000000000000000000bff0865704c1d910f2f25f85e1b25b2a54", - "0x000000000000000000000000000000000017ad3edce86c42c71c9c80a3cf5c0c", - "0x000000000000000000000000000000aa44e82cd3ca93e13894098623ad97fb91", - "0x00000000000000000000000000000000001bc14642ea86b1fcac6762deedcc1e", - "0x000000000000000000000000000000dc412ac4fb86b0e7495bb97b461d6376ae", - "0x000000000000000000000000000000000021058a5dea33a62a9f749286f53f9c", - "0x000000000000000000000000000000e70eeb8de36491eab8bb58169933aa87df", - "0x00000000000000000000000000000000001d93e082a3e6e2ef1c1d876d20ed05", - "0x0000000000000000000000000000005c50d01d5da87584cdff9cc21d2a85d601", - "0x0000000000000000000000000000000000104b56de344b70da70b2fcabb2b827", - "0x00000000000000000000000000000095ab56c9a0fa796c1ada7c49aa9c06fdd1", - "0x000000000000000000000000000000000011dc4a39de2594d76a4de0cd5560aa", - "0x0000000000000000000000000000009e0a7116b667b2928dc220809d5184b067", - "0x00000000000000000000000000000000000b1beb6b3892541efaf02786d44da7", - "0x0000000000000000000000000000004a48825cebf72755a41cce48d5897e0c19", - "0x00000000000000000000000000000000002a4029cc4391f7c440dabcaa4c750d", - "0x0000000000000000000000000000000917c98a10d134a0f732cb3d6f8a540ef6", - "0x00000000000000000000000000000000000c9b78c35eea7f9deea1cf22fb1d4a", - "0x000000000000000000000000000000c47b486492c330bee443920e46cdf3115f", - "0x00000000000000000000000000000000000ab1a24cebe015c666b3a9803ea2b4", - "0x00000000000000000000000000000022a56721ba6437587c8199c7dc0f154f9c", - "0x00000000000000000000000000000000001074affacc4cc82092090ac622d54e", - "0x000000000000000000000000000000e22cf3743e5cb7f3a371bafa34a51c6f3e", - "0x0000000000000000000000000000000000174619de5df7d784e3601e194d981a", - "0x000000000000000000000000000000911c4ac4eb3c690d3b6aaab8591d96837b", - "0x00000000000000000000000000000000002272ec1535e8941efb0182efe0574e", - "0x00000000000000000000000000000025590d64148dff3ca7d35829ab863d1195", - "0x00000000000000000000000000000000002c21d182318b6ce11e9ac0e88e0564", - "0x0000000000000000000000000000008c99eec57242eb9430cec48f460f649755", - "0x000000000000000000000000000000000004d517eb4437cc7d9a941f8306bc74", - "0x00000000000000000000000000000004d354aa1e0205e8cc8577c5c446ebac58", - "0x00000000000000000000000000000000000e72673d45a8f370e9818cc643a269", - "0x0000000000000000000000000000008ca3156422032e0309d328651b82ac67b6", - "0x00000000000000000000000000000000001807e5a4f4c9f49878c4db5065ba15", - "0x0000000000000000000000000000006a89aa484c0463d54cfb666cad405bd897", - "0x00000000000000000000000000000000000231c0c3b7c07fc4e1154b750a1068", - "0x000000000000000000000000000000cfe82657adaf901c15f6c5e6e962cd8d08", - "0x000000000000000000000000000000000006af5efaa75283a8fecfc804f3054a", - "0x0000000000000000000000000000005b8348629164a83e2a680cee036152574b", - "0x0000000000000000000000000000000000188dad005a25e0b77e62b6b1d5e69f", - "0x0000000000000000000000000000003073e98f5595a82929d13bc72edacbff27", - "0x0000000000000000000000000000000000002b59117c5ccb2b61503346d366ef", - "0x0000000000000000000000000000000dd50bce82c9a75e49971f1a5a2e2c9d1b", - "0x000000000000000000000000000000000000fefab39c7f8c75089d47c8fa2613", - "0x000000000000000000000000000000a0d638b343691be265311b35a4c77b4eda", - "0x0000000000000000000000000000000000248556d390ca336c899a93ce4e2a56", - "0x0000000000000000000000000000002a5ff9a32c343499c353d62ef73397bd08", - "0x00000000000000000000000000000000002fa462cce54e8fd540312b856dec55", - "0x00000000000000000000000000000010eeef50eb562c486766243b2d6a0261c2", - "0x00000000000000000000000000000000001137f554fe0dcb1fb2c800c5172619", - "0x00000000000000000000000000000030be9f37a22ff72b5f16dace7cabccd95c", - "0x0000000000000000000000000000000000264252493b3a633b66fba48ebba3c4", - "0x0000000000000000000000000000004cacfdc3394ad0604a4a6792f6b49b9102", - "0x00000000000000000000000000000000001801d22fe50c50879eeb96cc99e6ba", - "0x00000000000000000000000000000000a556461f5f8894dc8935bb9f44b6c263", - "0x000000000000000000000000000000000014fad790756dfcd38939802545e75f", - "0x00000000000000000000000000000021a23d49055b34c06a03aac2b31eb07c0b", - "0x000000000000000000000000000000000022105e4a6c0352d8f96605d5c6f32f", - "0x000000000000000000000000000000f47d6f448765953ee793ccee38b21334f9", - "0x00000000000000000000000000000000001e76374ed7569f8a0f034f11d93bbe", - "0x0000000000000000000000000000002a1cd67d3409f9eb2899c9b088ea5a6b36", - "0x0000000000000000000000000000000000203b27ae5626ea986af8e1be098a7f", - "0x0000000000000000000000000000003e5a8374e4a7afed06dc2c4af8b1d462c3", - "0x0000000000000000000000000000000000118d66f0e0de545aa1fb6a62d2b9bd", - "0x0000000000000000000000000000007395a59a5f72ddc3229ebad099d12fc834", - "0x00000000000000000000000000000000000e52049337b35e4423ad4f37252071", - "0x0000000000000000000000000000003b2e5e724b898611c08e724266641e05e8", - "0x00000000000000000000000000000000001b485375a2ad236f002f0963ddca2d", - "0x0000000000000000000000000000000653da5167498b557b45db75a9782add83", - "0x000000000000000000000000000000000015fa7461195e1bfe95bb8455a36a3c", - "0x000000000000000000000000000000407e7accd0f34df669de2258bff4a53bfd", - "0x00000000000000000000000000000000000fc5c3617d87a91a916773b14d3468", - "0x0000000000000000000000000000001e696b4fd28fe9f63adfd2e9e10079a47d", - "0x00000000000000000000000000000000001f6d82cf182394396522db3584f6c5", - "0x0000000000000000000000000000001ddd90c26515b53f2dea5f82b5d5a48261", - "0x000000000000000000000000000000000029fef3405a7604dfcbeaa7c01c184c", - "0x000000000000000000000000000000123e0f04860e1f83e4fdcdcd796da1b883", - "0x00000000000000000000000000000000000f02fb7bbccb43481063825d962456", - "0x000000000000000000000000000000539a0777f0b167cccfbd0d91432aa78413", - "0x00000000000000000000000000000000001c143785d16eeaf944b162e66a633a", - "0x000000000000000000000000000000549cb733a91d85ed5be8ddca9920a14915", - "0x000000000000000000000000000000000018f77a7c8986165b4f2a394cef2061", - "0x00000000000000000000000000000050d1b6dfaff2d2c5abe4ed8c56cc176dc5", - "0x000000000000000000000000000000000025ff411db197a1f181b2966f397e86", - "0x000000000000000000000000000000e2e587d24b0ad383cfd47adc734958a6ef", - "0x000000000000000000000000000000000007ba08b5e67c187210ed06db4bf394", - "0x000000000000000000000000000000620e9b3d19c8cdff7e3a31fa3fc0c168dc", - "0x0000000000000000000000000000000000010aedec6b4712a533b6efea7019d1", - "0x00000000000000000000000000000063cde6622d653dbd3321a6cfc6a2d3d6c5", - "0x0000000000000000000000000000000000008438b4884539fa320e9323d1f484", - "0x00000000000000000000000000000026a3b7eafa0d91361a86c3901078392db1", - "0x00000000000000000000000000000000001ef0e855b11bb37d7a306198d1d6af", - "0x0000000000000000000000000000006fc7532a51760b09301fc1d0f165815d21", - "0x00000000000000000000000000000000002711b761e5f73eace7dd8c66c0c711", - "0x000000000000000000000000000000afdfcd94b14289ae8727001d12b2e35dac", - "0x0000000000000000000000000000000000136609fbf4de871dc22fb27033dfab", - "0x0000000000000000000000000000002cd4d9cfe09a023e3fb6fd74baf2689b82", - "0x00000000000000000000000000000000000c9054a9084deaa4ce84c4673a73d3", + "0x000000000000000000000000000000000000000000000000000000000000041a", + "0x000000000000000000000000000000000000000000000000000000000000041b", + "0x000000000000000000000000000000000000000000000000000000000000041c", + "0x000000000000000000000000000000000000000000000000000000000000041d", + "0x000000000000000000000000000000000000000000000000000000000000041e", + "0x000000000000000000000000000000000000000000000000000000000000041f", + "0x0000000000000000000000000000000000000000000000000000000000000420", + "0x0000000000000000000000000000000000000000000000000000000000000421", + "0x0000000000000000000000000000000000000000000000000000000000000422", + "0x0000000000000000000000000000000000000000000000000000000000000423", + "0x000000000000000000000000000000f186e6c64451691473628419c2e0214021", + "0x000000000000000000000000000000000015f65ca1a289c27d57443485bc422f", + "0x000000000000000000000000000000e917f97b391f46a994191a5588dffcaf05", + "0x00000000000000000000000000000000000454b683360f63d2d4844e4eb66014", + "0x00000000000000000000000000000032a5fb49a00a4261bc264707a69df12790", + "0x000000000000000000000000000000000010f9cfa5a0ddc2f4ff057d0c767ee6", + "0x0000000000000000000000000000005030beee1b4c8bf8d5908ce885b498f230", + "0x0000000000000000000000000000000000297fbb53137118cc9659f184f07f40", + "0x000000000000000000000000000000d509163d6dc49b5433f15e710fc4a96158", + "0x000000000000000000000000000000000005457dfcb0e6b559a6a349adac5ee5", + "0x0000000000000000000000000000001004f49fae33906d7fda02b68ac2171eeb", + "0x00000000000000000000000000000000001e55ec4db9bd88291ddaf7931d8a67", + "0x000000000000000000000000000000ce68e4ddfde40132e255c50eac9bf2a34e", + "0x00000000000000000000000000000000000882110de4d55b7c2ac06d0f89254b", + "0x00000000000000000000000000000081a62410ebacf3942d479415514649ff34", + "0x00000000000000000000000000000000001a8a10529beaca80bdf2884912974c", + "0x0000000000000000000000000000001795739e33725b89e3c496e35778a48d0a", + "0x0000000000000000000000000000000000012526fe086b02415da579a1a566e1", + "0x0000000000000000000000000000004beda47bec585c377df9f236c740865035", + "0x00000000000000000000000000000000000e9e971dec8753c3db8070fb967f31", + "0x000000000000000000000000000000448fd42e6c52acc999c879be9fb3613a0c", + "0x000000000000000000000000000000000007679c4aa0c9998d86c13fd6d417bd", + "0x000000000000000000000000000000a45526cc53376ec419468d9abd82e32d7d", + "0x00000000000000000000000000000000002ea35a5a352ac5b728f4993aebe528", + "0x000000000000000000000000000000ebd38778b3274496532399746d9ad2b21e", + "0x00000000000000000000000000000000001f0792f3fb8d0a1fa047b39c348a0b", + "0x000000000000000000000000000000c38c90b96e080b0443ac3b57f0807e82ce", + "0x000000000000000000000000000000000002425fdb1a2c58a9b62b7b8a0e5500", + "0x0000000000000000000000000000000b1160319affb53960bd43d829c831cd1e", + "0x0000000000000000000000000000000000180c6a9acd9ce667dfadbc45eb3742", + "0x000000000000000000000000000000a651437be54a07bbf93ccff4992094ce7e", + "0x0000000000000000000000000000000000257e1024bfbbbe2de8411f854c5a64", + "0x000000000000000000000000000000b529dc5a9952600ed5711b004c8eb08bb7", + "0x00000000000000000000000000000000001d30349cc834e28b6882375f9ed76d", + "0x000000000000000000000000000000476835083429fc19c38a33dfc7522e3dd1", + "0x000000000000000000000000000000000003855d0d02927e8e979f54f15fd71d", + "0x000000000000000000000000000000d9f607c417f7b084432251a1b61a8cd85e", + "0x000000000000000000000000000000000008b91e185e8f1309a253006eba5d7d", + "0x000000000000000000000000000000bb4b6ab72c49a7e51e4032fe166a1bc624", + "0x0000000000000000000000000000000000193f7887455921a7ecbe1535a67218", + "0x0000000000000000000000000000006c6462e79b9e81163635c85c634621a621", + "0x00000000000000000000000000000000002e934a9c3a2699e4b7d32f31cf927f", + "0x00000000000000000000000000000003581c9d77de90584a52746e8d5e2ee92a", + "0x000000000000000000000000000000000029bda394498a6513ffdbc66a7b0e17", + "0x0000000000000000000000000000005f8dbd76fe8d3b47c35b3b515e744d22aa", + "0x00000000000000000000000000000000000ca6fbecd5f2a99c7a7f2136a817fb", + "0x0000000000000000000000000000006cd0678a92034e7ab258cf0863b69d065f", + "0x00000000000000000000000000000000001a63548454951fde58111f85b7ca17", + "0x000000000000000000000000000000c50ff202b1de359f765e25e91c0b7b8850", + "0x0000000000000000000000000000000000088b0870f4423c6beba33189a12400", + "0x000000000000000000000000000000b25f74b60d4e3e9594c740ecc391d18d09", + "0x0000000000000000000000000000000000117ebe1b9f71ba258102013e625042", + "0x000000000000000000000000000000b57bb0c18749211d3801c27bc3aeafbe7c", + "0x00000000000000000000000000000000002db5a2052dab544cbd3b178749347a", + "0x000000000000000000000000000000ab11dc6b49ec633df3dadeffc477db54a4", + "0x00000000000000000000000000000000000ff93dc453e69b2ac00a4228713dba", + "0x0000000000000000000000000000003ca7ef824e5860dae9d92fb64c09a805c7", + "0x0000000000000000000000000000000000066e6060426204c25e41fb7159466b", + "0x00000000000000000000000000000090a35fd9cc79b2936612fe5a9ee4074eed", + "0x000000000000000000000000000000000007b72deafe12112151dfbcc381eb72", + "0x0000000000000000000000000000009d08369e8bbffe875baf0cf7f2146ff671", + "0x00000000000000000000000000000000001d1aab64cde3c7d5a1b4355d981bf7", + "0x0000000000000000000000000000008e09f9b5dbddc8fb2b4c43fd562d82ed31", + "0x00000000000000000000000000000000000c04af0773bf42791c09a3c03e0265", + "0x000000000000000000000000000000cfc9d4948adc5891fa4c61846215ec97fc", + "0x00000000000000000000000000000000000b658877aa83807ba16a7c2511aa0d", + "0x00000000000000000000000000000063f9b32ec63b5b21a537b554a05307f7a1", + "0x000000000000000000000000000000000010cd28edb772b8a0b901ce439aca64", + "0x000000000000000000000000000000ce66a769cf4ddc90f7aadeb5d758dfc37a", + "0x00000000000000000000000000000000001b8f4206fd0d9b0b40f67f51c9452e", + "0x0000000000000000000000000000005bb99d6795f6ebcfdcf48d2acd4ed621c0", + "0x00000000000000000000000000000000000b0608eda03bbd5e9b90dfab2bc9fc", + "0x00000000000000000000000000000075465ebbe90999afc6ac49da21aee9ce5d", + "0x0000000000000000000000000000000000226ff0f81049753b533edd85997768", + "0x0000000000000000000000000000004b5fc8098516c1ee228e99e532cdb19bfc", + "0x00000000000000000000000000000000001f06c7fd8bc0c014f0bb9fb037906f", + "0x000000000000000000000000000000cb48c14218824313e5aae7355e9b270fb9", + "0x0000000000000000000000000000000000303f4adcb00d043d007d8c24195253", + "0x000000000000000000000000000000f0cf0e21d5a0be67d5367be6aa4ac642e9", + "0x000000000000000000000000000000000001797daa7bec9edffb5719e6e64871", + "0x00000000000000000000000000000043b35482581458e4c79ab3b5fcbc3c4ec1", + "0x00000000000000000000000000000000000efcb9be78c41f84f592c1194dc9e3", + "0x0000000000000000000000000000007b03cad4e7920a08e4ceed504927684654", + "0x000000000000000000000000000000000012e515774d00c89c77eeb5fe3c6262", + "0x000000000000000000000000000000a1df7d029b9ff4ee2daa206366393a7f31", + "0x00000000000000000000000000000000002a3f1db615617f2856ecabbfea3662", + "0x00000000000000000000000000000008b2769342754a7fb7764ba017cc543239", + "0x0000000000000000000000000000000000089d976f0a0dda0128ed6e5328907e", + "0x00000000000000000000000000000040aca0f2e0b6d770a2cf109a76532ed852", + "0x0000000000000000000000000000000000150652cf9f6b08bc31ddd4d3499362", + "0x00000000000000000000000000000049a9a7fc74679e24111f0349561c3f5be8", + "0x00000000000000000000000000000000001d751d973e4b64092b3cc8513f0a24", + "0x00000000000000000000000000000025b56a9d19de3a92e0578bc12373abad43", + "0x000000000000000000000000000000000006672a2f08656e68b0e298139a8558", + "0x000000000000000000000000000000870f121db70afc1411a31f5de38a65e652", + "0x00000000000000000000000000000000000a809bd48dc7ac613f62898ee9d058", + "0x000000000000000000000000000000dcd70143ba7789af0ba2b0ced39aa6c031", + "0x00000000000000000000000000000000002b2dc2aa64d7fbd3f023315aa26f9a", + "0x0000000000000000000000000000007e8aa43cd4201c3d7635a6a1d97d188d4e", + "0x00000000000000000000000000000000000f77c508797e4e19f7ce2a5f1730b9", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000009be60c96af032327e34113ac4dedb692f6", - "0x0000000000000000000000000000000000070342ee4b19b68e7978888625616c", - "0x0000000000000000000000000000009abf3c6aa16ea9b2f9d5795c14637641c6", - "0x000000000000000000000000000000000015bcc6645ec86c222a69d2426f4016" + "0x00000000000000000000000000000087fac46f68317daf575e010c825aa94d55", + "0x0000000000000000000000000000000000011305a51c8b42246bbf54965ef874", + "0x000000000000000000000000000000f335e9e286b2994a940db5dc928df97195", + "0x000000000000000000000000000000000027ac47d8ede5900974539d6c9051f6" ] -hash = "0x036aa8c1ad36f39d58374255796c7367c09d8e18bfb2977c9187f222dfc90224" +hash = "0x007b7897db2c228cf9ac161c205a0eecbcae5451d6365d3ccf61323f2710e747" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" sibling_path = [ - "0x213fb9c7202198fffd4baec80885d5a42ffa329b5297936c925c3d68a05485be", - "0x12362d30d5079f57e1cd1171ce0057b21c3962d2ba7d7c461645b5b09ef44f31", - "0x2489113f912b343d6df5fac3449c1833efd317c0abc64a8ed9d59df4130d7fc6", - "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", + "0x180c796146fafa025ed66fd72bec570028abe91c7ad734541db133c9f4071ea9", + "0x2c005f8f725e63e5612b065f9e48839a33b29f9f5c268df1d21b7d2406141bc6", + "0x0e31294ddae4f4798f2bba4b55ed737d196e1624f73265772ffe5ccca88f2a5e", + "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml index 8196fb1dc931..85995d089cda 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml @@ -3,56 +3,56 @@ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000001" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" -accumulated_fees = "0x000000000000000000000000000000000000000000000000000000002d6b14d0" -accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000016d38" +accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000040ded132" +accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000001d2ab" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" - protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" + vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" + protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x0d3828a8fd93fdb49ce09ccc58b3a5903cd3c87783948c2095687dcf7fd44bc7" + root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784cd" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x2205a826a3f9516231b2edd7cb8f0573517202c36c5935573a30020f5b5b9791" +root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x04f4bf59e2a38d5910ae6ff74c70fe0c4bad3b82d5fd5a85b89fc98a4381d569" +root = "0x19d316424ed6bd56f3016f8dbb6db9a9671f5c9bf9b3507600751ffce4a4d227" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x150991e665deef36358651132dae8ed393beb6033496590a727d84e6d72f2385" +root = "0x07ca9f2bfbdd89f82d057d91ea89021e1400ae7700b2f372f73bd33696a55e5e" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x0e78f1d5dec20ceac046bed6d2695d5086169440bdcd985416da690e4555cd13" +root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x027e0b77bd515faf05c278bbd22692ef6c2daf9262660da2f2285e7f4a276282" +root = "0x1638127f0b085d1ccccff7f140acf3f91e154550ab9883c863a2f3d297e85c0f" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x23045d8524ba8a3266bdc3c79c9343c058d86f2adc267433d1f7b5bda53dfc16" +root = "0x264038ca78601a4472bd12b0052b2e3b3bc1f6382dddb319a5d8431adf6fa760" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] @@ -75,20 +75,20 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 squeeze_mode = false [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] - fields = "0x0000000000000000000000000000000000000000000000000000000000000052" + fields = "0x0000000000000000000000000000000000000000000000000000000000000016" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005c" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000021e19e0c9b102f93bb0", - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654" + "0x00000000000000000000000000000000000000000000021e19e0c9af62cbb236", + "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2", + "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" ] state = [ - "0x0c77bf4c89940f917c1217a13ac86017dcdde1a5ee98c5bb430e651b905683b9", - "0x0ecb9ec3eb7eb81eeb5a691167a965a033bce02d845ac8a2feb8f5776ae8fd8c", - "0x2af2576a0bd8ad1889a14910de4a3d568df46fc8c239488315ba2c00554a7938", - "0x0629b1095bf45777cba95efd372c6aa521851b843df2bff16e5edf5ed499fbd5" + "0x2881762ad9363d07164b4adcd8fba0d34cac7324b5e6039eeb82a0daa1d7e98f", + "0x041e60c8e1d3f54f35a87c0b87f1a8f99d1814620b38ccc65eb74c795f795b35", + "0x17ce0454dabf60a6eb91b31bb316c45f7910ecdf748fce1b6b78af4c47c95d50", + "0x1f380d4eae917b0df150aa708ff1d825eedbebae0923e6bd7efbcc2c5b37cd77" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false @@ -769,10 +769,10 @@ hash = "0x213fb9c7202198fffd4baec80885d5a42ffa329b5297936c925c3d68a05485be" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" sibling_path = [ - "0x036aa8c1ad36f39d58374255796c7367c09d8e18bfb2977c9187f222dfc90224", - "0x12362d30d5079f57e1cd1171ce0057b21c3962d2ba7d7c461645b5b09ef44f31", - "0x2489113f912b343d6df5fac3449c1833efd317c0abc64a8ed9d59df4130d7fc6", - "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", + "0x007b7897db2c228cf9ac161c205a0eecbcae5451d6365d3ccf61323f2710e747", + "0x2c005f8f725e63e5612b065f9e48839a33b29f9f5c268df1d21b7d2406141bc6", + "0x0e31294ddae4f4798f2bba4b55ed737d196e1624f73265772ffe5ccca88f2a5e", + "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -782,73 +782,73 @@ sibling_path = [ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000012af39aa" -accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000000963f" +accumulated_fees = "0x000000000000000000000000000000000000000000000000000000000a524180" +accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" - protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" + vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" + protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x0d3828a8fd93fdb49ce09ccc58b3a5903cd3c87783948c2095687dcf7fd44bc7" + root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784cd" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x0e78f1d5dec20ceac046bed6d2695d5086169440bdcd985416da690e4555cd13" +root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x027e0b77bd515faf05c278bbd22692ef6c2daf9262660da2f2285e7f4a276282" +root = "0x1638127f0b085d1ccccff7f140acf3f91e154550ab9883c863a2f3d297e85c0f" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x23045d8524ba8a3266bdc3c79c9343c058d86f2adc267433d1f7b5bda53dfc16" +root = "0x264038ca78601a4472bd12b0052b2e3b3bc1f6382dddb319a5d8431adf6fa760" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x0e78f1d5dec20ceac046bed6d2695d5086169440bdcd985416da690e4555cd13" +root = "0x2974c95d044b350c4ecbecd81e04f2209b53c87f1a82743d35501c53014aeafe" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x1cdcf3f81d3f8a38753a350f7c452a9771eb4ed31e4c5e898ee4ea9ba3b33afa" +root = "0x169e89387d7418d762567ed6f237578a00c8ebbfbef0a69bb636667dd7ca4ebd" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x26b61fd8b4fac08968040eceda7dfe8dfb0f1a3ee607987c21e5b6945c612ce1" +root = "0x216e91eabfbf3f0c2d987353464d0c7b1c479d2d39682cf4709e10d758a7b0b3" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] - fields = "0x0000000000000000000000000000000000000000000000000000000000000052" + fields = "0x0000000000000000000000000000000000000000000000000000000000000016" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005c" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000021e19e0c9b102f93bb0", - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654" + "0x00000000000000000000000000000000000000000000021e19e0c9af62cbb236", + "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2", + "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" ] state = [ - "0x0c77bf4c89940f917c1217a13ac86017dcdde1a5ee98c5bb430e651b905683b9", - "0x0ecb9ec3eb7eb81eeb5a691167a965a033bce02d845ac8a2feb8f5776ae8fd8c", - "0x2af2576a0bd8ad1889a14910de4a3d568df46fc8c239488315ba2c00554a7938", - "0x0629b1095bf45777cba95efd372c6aa521851b843df2bff16e5edf5ed499fbd5" + "0x2881762ad9363d07164b4adcd8fba0d34cac7324b5e6039eeb82a0daa1d7e98f", + "0x041e60c8e1d3f54f35a87c0b87f1a8f99d1814620b38ccc65eb74c795f795b35", + "0x17ce0454dabf60a6eb91b31bb316c45f7910ecdf748fce1b6b78af4c47c95d50", + "0x1f380d4eae917b0df150aa708ff1d825eedbebae0923e6bd7efbcc2c5b37cd77" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false @@ -859,15 +859,15 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654", - "0x00000000000000000000000000000000000000000000021e19e0c9b0f04a0206", - "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f" + "0x00af53dcbfbe40616c079981f43fdb0cf9f4b00a55589902f49e215c79d16d00", + "0x00be4d828be2d3f952ed4192c3e34fb2764dc1d341c518925ec914378ba0ed14", + "0x008a89f085d69862902f2228ce1b7fa696e9f1197cc7d230d2f4b7d8d7a00d3c" ] state = [ - "0x1666a8700b7a0fbc5f4fa2c2cd683a44dedf1caceb6defb0bc0aa49541ec8313", - "0x1f16ad0681ed021f3b581053e2fd2d3de5a77e501f3e3b41904f4e1197bf8157", - "0x11907a0c0955aa8e9e2b53c2170d796cf74c79d410fe87f9f40564f2129c284b", - "0x0337bac06464bd2fb20a980aa908b6f8e7b63826bbba80b1616e81dcc0eaa9a4" + "0x263a05e6e30b36d11aab75d1dda151e46d7307b2b6c36c7d9028dd24f3f42b17", + "0x0f80333c283d404ed13bbab6c7a005bb23ff49c4903d0c7aa97472e0e9d6b4df", + "0x2331e15236230041a7212e3d915c6963dd965391621d08358b07b2b9f7c3378f", + "0x11edebe728a94d62c283f5579123a21918c4149c50e4533c83a633ee05a705b6" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -1434,90 +1434,99 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000042", "0x0000000000000000000000000000000000000000000000000000000000000043", "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x000000000000000000000000000000307f5b8d76dd2a6510221d72ef2af872de", - "0x000000000000000000000000000000000021c674ae84acf95641d459aaeebf73", - "0x0000000000000000000000000000002e1d308105f1ae6bed2310a0f6f3554c6d", - "0x00000000000000000000000000000000001645f93a33f9454bd3a48f0435ab7c", - "0x000000000000000000000000000000f9514ed6fb8f36b60052b4a7ee87b58891", - "0x0000000000000000000000000000000000236c0e98f540a52818d53063f80ab3", - "0x000000000000000000000000000000093d4fb792c433f8a3f78651fbd00154bf", - "0x000000000000000000000000000000000015fef1f8ac1fa0afe6d4b86d0703fd", - "0x000000000000000000000000000000f3f1d5db5cd86529eb4be793a1c09c90d0", - "0x00000000000000000000000000000000002b1c0b1b6e6ff40a1db0d56b92e48c", - "0x000000000000000000000000000000c87448ac0aa0ac0289540732c0be55a27c", - "0x00000000000000000000000000000000001d4b1bb612a4e03e99d6a34eb8a19c", - "0x000000000000000000000000000000653b6a66eb5f828a305feebcc32e6c4991", - "0x000000000000000000000000000000000022cb8bb34f30da3b2cafa6bed058d2", - "0x000000000000000000000000000000cf167ec9502aef45bcc3e9532e0c35213d", - "0x0000000000000000000000000000000000089988b259ea79bc7e5279a584fcca", - "0x000000000000000000000000000000559ea843cb44625df56c97d84fd431af08", - "0x000000000000000000000000000000000007419e3e6e97977939958acc8a257a", - "0x000000000000000000000000000000a5db67870c6c3fcc896f2837fe8861abf1", - "0x0000000000000000000000000000000000104e397c72db51d5e8ef949bc4a736", - "0x00000000000000000000000000000018728c390bc83fa2ac2ecd34989b3200c3", - "0x00000000000000000000000000000000001fc6ff9c5f27febaa9bfa3efa16c42", - "0x000000000000000000000000000000ace95fb022b84dd977890e6b4b6e2f02ff", - "0x000000000000000000000000000000000007d5e1c80a25150fcc9d4e5069a8bd", + "0x0000000000000000000000000000000000000000000000000000000000000045", + "0x0000000000000000000000000000000000000000000000000000000000000046", + "0x0000000000000000000000000000000000000000000000000000000000000047", + "0x0000000000000000000000000000000000000000000000000000000000000048", + "0x0000000000000000000000000000000000000000000000000000000000000049", + "0x000000000000000000000000000000000000000000000000000000000000004a", + "0x000000000000000000000000000000000000000000000000000000000000004b", + "0x000000000000000000000000000000000000000000000000000000000000004c", + "0x000000000000000000000000000000000000000000000000000000000000004d", + "0x000000000000000000000000000000c9644cf046fabe3b46186fd1d31e4a634f", + "0x00000000000000000000000000000000001ebdf04e02bcd06d38255557b14eae", + "0x0000000000000000000000000000004006cfca9230c8381544d42afd17e423bc", + "0x00000000000000000000000000000000000f4c11c73c96ba41968ab9176543d9", + "0x000000000000000000000000000000170a6b14b50a0ea346ea77adf33caeccc8", + "0x00000000000000000000000000000000000642abf751a0c3173c571987b81c76", + "0x00000000000000000000000000000022469b618010c2aa2cabcde9d518b44338", + "0x00000000000000000000000000000000001b599d876e394114714733a2bd9f4d", + "0x0000000000000000000000000000008b210c42e86aa5980fce568b226af34fe5", + "0x00000000000000000000000000000000000a158a4caad7266fbfc4f9a619d47c", + "0x00000000000000000000000000000076dfa11c8d99b2563c2cf697f6ac9ddd1e", + "0x0000000000000000000000000000000000135c76c9cbfc3083868f23cc098a2f", + "0x000000000000000000000000000000d2a52bdb84c0ee98dd0a15c0d53b7968fc", + "0x000000000000000000000000000000000004aa0de8c3735a18fd3903dddcbf86", + "0x00000000000000000000000000000036bedf4ce1b036e9cbc8ea1fbe2c30b5d0", + "0x00000000000000000000000000000000002f873548c191874848496b71a126e5", + "0x0000000000000000000000000000008a2b522df5d01aa5213a80861c6d4bcc09", + "0x00000000000000000000000000000000002d2473f32cf421d41cb7342396fbf0", + "0x000000000000000000000000000000fdf976f6610caf5313a88dcec941f95be7", + "0x00000000000000000000000000000000000a1c346ef53743e533a9885a5b3aab", + "0x00000000000000000000000000000009d953db2feaa4cbad7b95f78e5f73fd0f", + "0x00000000000000000000000000000000002609bfa75c22002b6bc5decda78eab", + "0x000000000000000000000000000000e0165044d08e48425a755224ce1e8862ec", + "0x00000000000000000000000000000000001e42cb2c93984db877aadbf6ca52f0", "0x000000000000000000000000000000e7bab6896d9724b5b46b796551dc5feed2", "0x00000000000000000000000000000000001fd93debdcf16cc93f99efd69e938d", "0x0000000000000000000000000000004b94434e1705c9bc2a4f5b2bc2a05c3c03", "0x00000000000000000000000000000000002a29d5563fd08e454dace1605a1aa5", - "0x00000000000000000000000000000001ff2ac57b1c52fd3a5589a5ef3ef608cc", - "0x00000000000000000000000000000000000ae1f6d097efb73837c888206b5627", - "0x0000000000000000000000000000006a94cb27951e584fc7f6a77c685ad6b3d6", - "0x000000000000000000000000000000000019033c84dd0600c909bb8890907b6c", - "0x0000000000000000000000000000002f797ff83a0322e549a331c3e371e42317", - "0x000000000000000000000000000000000001682d1c02a03f8a86ecf633d68035", - "0x000000000000000000000000000000264c49167f0708052d371dbd0b9db133f9", - "0x00000000000000000000000000000000000def14918ebd1ec70252b1aa4f2f30", - "0x0000000000000000000000000000005a0ea3aa1dcb16c1e378a12776139175e6", - "0x00000000000000000000000000000000002230ef6d2bbfa1e43387c54053acda", - "0x0000000000000000000000000000002eba4a74542fcfc0d0c9f20f4266c29be2", - "0x0000000000000000000000000000000000122782fec208fa2da7a3806b3f0411", - "0x000000000000000000000000000000e47cd90b2766343c427897b438440f85f0", - "0x000000000000000000000000000000000001843b9079a49fdcd73c16b776afce", - "0x00000000000000000000000000000053362ad18d8713df3273e67f27a98bc375", - "0x00000000000000000000000000000000001a78a3a8232eb885f480c958fe96b3", - "0x0000000000000000000000000000007d034f697037899c24c6eff17ec8ec99b3", - "0x0000000000000000000000000000000000237adf05233c7587b7816cc71e1206", - "0x00000000000000000000000000000083d2a090d67772f3c78797cee894b1563f", - "0x00000000000000000000000000000000001b6075b87892de831d14dba4b42ca1", - "0x0000000000000000000000000000009e67d900ce38bc0a8ba4ba574627e95535", - "0x000000000000000000000000000000000023a12ad8dc157995bee182a1984bba", - "0x000000000000000000000000000000f8611d968082bab97c4caff11d8504e7b2", - "0x000000000000000000000000000000000023747bf4d19033795b66878bc77504", - "0x0000000000000000000000000000007012d641797376834f136a3cc9239b1922", - "0x00000000000000000000000000000000000bc4036aff2fd78afa72b53d26ea9a", - "0x0000000000000000000000000000009f79a73ba8c460801141cfef6a699f52bd", - "0x000000000000000000000000000000000011c13766ad192df4ddada5b412b0e0", - "0x00000000000000000000000000000057079418ae7686eb442cc4a9e4fa08a908", - "0x00000000000000000000000000000000002ae5e170f3e228b1ea2bbcbd277f42", - "0x000000000000000000000000000000da3cef02586fd7acdb2868edec4cde83c7", - "0x000000000000000000000000000000000001e2d8a35f8d8d85af2f433537c377", - "0x000000000000000000000000000000f9e997bb1718df60f3f958a827db0eea9e", - "0x000000000000000000000000000000000021fdeb56e87b959d2e0d48dfc5517b", - "0x000000000000000000000000000000d5110e9037e70d55d6c726a7608703009c", - "0x000000000000000000000000000000000012d7b7a753bffe46b32fbf04299da3", - "0x000000000000000000000000000000d33100f3a27346c959de3636e67373bad0", - "0x00000000000000000000000000000000002ea5a3a3baec5d0f9ace2c6400d566", - "0x0000000000000000000000000000006562dea7d8149e7e1b43fc816fd8eacbe7", - "0x000000000000000000000000000000000019b679db1fbc606804a344b7c338b9", - "0x0000000000000000000000000000002cb02cc09d5c9dc19cc3a089bf6027f0c0", - "0x00000000000000000000000000000000002959370c7abaefcf98ee27bf19313f", - "0x0000000000000000000000000000001592dcd3bb305e32b40619d9135153f03b", - "0x0000000000000000000000000000000000282d2b2c5f2bf993517721fd2d2b1f", - "0x0000000000000000000000000000001acd10314f56403d936c89faaf382c46c0", - "0x000000000000000000000000000000000009b9d53924cf543750b6d278659b6f", - "0x00000000000000000000000000000094f08329658951cbed51f33549fe64ab5f", - "0x0000000000000000000000000000000000164697c899d232d842f48ce348f492", - "0x000000000000000000000000000000afd86924f1e86aa270ad8c6da8343f4a77", - "0x00000000000000000000000000000000000314a4b080634c56931653166fbabf", - "0x000000000000000000000000000000eb1246f4419815e47f1d5ae8d6dba6d962", - "0x00000000000000000000000000000000001f313c2da4433c6c54d4af0d2b2b17", - "0x000000000000000000000000000000236795d1eebaf06bfbdb1493a682637d52", - "0x000000000000000000000000000000000011b0eeaa05e3097cd5da0a34873236", - "0x000000000000000000000000000000dad932f24983ce4571cd0ead65267e8e7b", - "0x000000000000000000000000000000000015240dde6f5f8790cc86a5fc2fb794", + "0x000000000000000000000000000000e1fb3d427b73bab2c11dae5ce721223d21", + "0x00000000000000000000000000000000001f8588599ae47d5d086bb8e00f8625", + "0x00000000000000000000000000000010ecccfb7aed7cdc6b3e4893084d705ee0", + "0x00000000000000000000000000000000000c4e4d56e1ade9ae17f3bde878a1f9", + "0x000000000000000000000000000000c46228e4d0d2a2c307442a43bb23d2248c", + "0x0000000000000000000000000000000000038c5e48b5ec296511ee16e3291a65", + "0x0000000000000000000000000000007b486b588dd7c6052debd34eb27014799f", + "0x000000000000000000000000000000000012d3037964d4e49732fa5947f54064", + "0x00000000000000000000000000000057fbf4b6a01d9677544cba4473c4dc3049", + "0x00000000000000000000000000000000002bc0e9270588fac691096aaed3e938", + "0x0000000000000000000000000000001afd4bfacd4233aa89adce3da3b00a57b5", + "0x0000000000000000000000000000000000267c176e5eb60f5b09651dd89d660b", + "0x0000000000000000000000000000005dc29066e3fb49c245e0edeab4c1a10667", + "0x000000000000000000000000000000000014b76faaaa563f382cb1646dcc2133", + "0x00000000000000000000000000000038851ea92628726bfc7fde6e90c4e582c1", + "0x000000000000000000000000000000000011ed1c7854ffc4353472b49ea4c957", + "0x00000000000000000000000000000006d3223a49a4bae5f1b2c2cb6118926e70", + "0x00000000000000000000000000000000000d6c2b94668835dfa0495fd9d28079", + "0x0000000000000000000000000000009795078410ec9afd95b25d51b816e8dd88", + "0x000000000000000000000000000000000019682a7137a90539776fb277c7ba94", + "0x00000000000000000000000000000038b962e3fc459e36224dc9aae811b868d8", + "0x00000000000000000000000000000000000dd3285648305441ffcf70e0721765", + "0x000000000000000000000000000000b384879bd16132be7c7fb8f55608875db9", + "0x00000000000000000000000000000000002d896e8b4907522977e0d4da869f0d", + "0x000000000000000000000000000000e3b56fda82a6a02d77c1bf79b7a16442d0", + "0x0000000000000000000000000000000000303b0d9bc5c029d32661f6f39c9d4d", + "0x0000000000000000000000000000002c9a776cf3916dc6dad39ac873d282a869", + "0x000000000000000000000000000000000007e2fcc3c3af98d8e39b0fb76e1c30", + "0x0000000000000000000000000000004eba86e2011eae38bd144c381fd77f7a29", + "0x00000000000000000000000000000000002bd3d0ef45abc16269d086c7e6840f", + "0x0000000000000000000000000000007ac63f3982a80ed11fd18f949513c160c3", + "0x0000000000000000000000000000000000299f99527df26d098053dc77598cc3", + "0x000000000000000000000000000000cf59e5a4303332db258b8d2f2a420bf169", + "0x00000000000000000000000000000000000a3bc62d7b2d510f35637b5b012c94", + "0x0000000000000000000000000000006cc09361b66a9769c54d103fc3efc0e0e2", + "0x00000000000000000000000000000000002bf8041e7eec21e9bf162295b6c1ed", + "0x000000000000000000000000000000315b67face1c74c547a25a08b9137e2b32", + "0x00000000000000000000000000000000002963487d85991c1568ed9634dbc6d1", + "0x000000000000000000000000000000c17dc1513d94944ad4d9df3c06683150cc", + "0x0000000000000000000000000000000000123fdc940f065e30b6c62696f392f2", + "0x00000000000000000000000000000059591250216fa4d9c723b36ee12fa5ef8a", + "0x000000000000000000000000000000000016b55cfa9aeaaa536def8bae510187", + "0x000000000000000000000000000000977d28c3f102a61ea185d7cdcb0655e954", + "0x000000000000000000000000000000000025eb8938920663becd970934effd10", + "0x000000000000000000000000000000b3173103a6bacd94b858b50c3d3310e498", + "0x00000000000000000000000000000000002759da1caf883bfba5a9dc1f433b2b", + "0x00000000000000000000000000000005bb7abde3494dd7576eabc41de3b73a18", + "0x000000000000000000000000000000000023b5a3c6b9a923d1cd3365863343ab", + "0x00000000000000000000000000000025e903932df14f80bde37e97d59ca7593e", + "0x0000000000000000000000000000000000029740995cb8035b1400cf88d64064", + "0x000000000000000000000000000000355c42e08220f7560974d9329eacd303bd", + "0x00000000000000000000000000000000002074c250ac80711897db58ca60b01c", + "0x0000000000000000000000000000000e044a82560642d2c743ba1c752f9dd64d", + "0x00000000000000000000000000000000003023d831e86afbee59508fc7b768d6", + "0x000000000000000000000000000000d50965001f5628c37c0770164b9a0c3932", + "0x00000000000000000000000000000000002b180be1e4e7764825ab8ef53a0e7e", "0x000000000000000000000000000000e97fb648fc1ff99f9988a73de181e0de22", "0x000000000000000000000000000000000024cae2d5d2c4daefe858889eeb01b8", "0x000000000000000000000000000000e072297115d09425f5612d626dc82f1002", @@ -1538,20 +1547,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000001567f3f96a0c53ad32d96de09ac1cae126", - "0x000000000000000000000000000000000026baae0f0d8505282894f5ada72223", - "0x00000000000000000000000000000011679c6c956cae3c86d399a00bb3aa46de", - "0x00000000000000000000000000000000001bd9f4cdafea960e099cb8afad8a8a" + "0x0000000000000000000000000000002c43f224fcf543b4690c3decf428df16c8", + "0x0000000000000000000000000000000000034a80aee11994ad8003b85f40b762", + "0x0000000000000000000000000000006e75b36384f2b35a1ecec355bd4a90c9a1", + "0x000000000000000000000000000000000022b417745523169cd4e273a17216c6" ] -hash = "0x14caa5816578cf92f252792e62335331c3c7b3aba456597e9d2ec7131722bdfe" +hash = "0x2105487deb54ac9c459b3050270ea0b48ac21bc057a48da073c3fb56dea06740" [inputs.previous_rollup_data.vk_witness] -leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" +leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" sibling_path = [ - "0x2ef0677eced88cf91ef001e856c0e3e649ab915b579ddcede447fa49fcbc0e2c", - "0x0f410eb6e69a2497aabc2f1686a1bdf90876c704621e028ec62c0341f74560ec", + "0x0cae9a18e830901d937e8150200d55d6b97b58f12cbe0a8f24c0e50c8bda66ff", + "0x1a8ceec79a52f0cadbada4e0362dfd6ef1f2af334809c9bc837825b657cec6a1", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1a8c157a307350dc57f06625e220057348008c02bc50c04154826acb1153bb77", + "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -1595,9 +1604,9 @@ l1_to_l2_message_subtree_sibling_path = [ "0x21849764e1aa64b83a69e39d27eedaec2a8f97066e5ddb74634ffdb11388dd9a" ] previous_archive_sibling_path = [ - "0x2f9744998facf20ece1a4bdccc896d360259f265ac9d3ec723650bfc36da904d", - "0x1428c191da00ae9e6328322750fa77bbf6c5b2dd70ee3c219a39f0f1e9784b81", - "0x2ae950126da08ba15878702e2394c18a583d27e508fe0ababc036b9fc66f1fa0", + "0x192af59986de97a21bb9942e27b303b63cfc8278ec924eb84709bb0976ad7549", + "0x2be2e0b5247d27d4aa1436c8ddb5f63ec56e9d8a0c0d295750b1bb90cb6d7343", + "0x1e96066120e8194f7cffe64e70af687163885eed70669e9707b1a00cede7cb81", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", @@ -1629,7 +1638,7 @@ new_archive_sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", - "0x26f2254416c3ed362e156d8124e734b5af1086f68f5f16afb41eb0258bddd0aa", + "0x1dcf1f62394c44e20c9be64b8d04cd65aabe973bc5a65a4fe490c0e8b47791d9", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -1661,9 +1670,9 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.data.l1_to_l2_roots] vk_path = [ "0x2d133f1353a0c1bd24faab6cc05696677d88a24d4e2767b77446437451fb7ce4", - "0x235ea71e8a7e1bd64f7de95985ed7abe7d8b4605a1dfa7e1f636625f0f5f413b", - "0x0a80e4c3fa91f16ab6e479a924b71ed3d9b192794ce5744116b534a38f60e8fa", - "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", + "0x180dee67e547c248a94710c09ce1aed8c5e78884da885f61ac041381acb7bb7e", + "0x249e51fc196c78b39e44c75f2cd9bb14e5841d3ec9e6c4354257673559a0c3c2", + "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -2264,19 +2273,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.data.l1_to_l2_roots.public_inputs] sha_root = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" converted_root = "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e" - vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" + vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" [inputs.data.previous_block_header] - total_fees = "0x00000000000000000000000000000000000000000000000000000000093bd180" + total_fees = "0x000000000000000000000000000000000000000000000000000000000a524180" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.data.previous_block_header.last_archive] - root = "0x01f3f9528860628e391a0775aa92501d300cbdf884e49318747dc9c8c4be2670" + root = "0x15b96c203874595fa1e623ce8e239e955f35474630ab7ecefaf9186f6de51778" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.data.previous_block_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00de62c24ff7dc1dedd485056a4ffa2f8d90ae7e7d86304070af64f51631c670" + blobs_hash = "0x0064ab7c96161b0ed1c0209cd3d833c7c4fd199cbb8cc611d9dddf5a2e861fb5" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2285,128 +2294,128 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000070" [inputs.data.previous_block_header.state.partial.note_hash_tree] -root = "0x2205a826a3f9516231b2edd7cb8f0573517202c36c5935573a30020f5b5b9791" +root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" [inputs.data.previous_block_header.state.partial.nullifier_tree] -root = "0x04f4bf59e2a38d5910ae6ff74c70fe0c4bad3b82d5fd5a85b89fc98a4381d569" +root = "0x19d316424ed6bd56f3016f8dbb6db9a9671f5c9bf9b3507600751ffce4a4d227" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.data.previous_block_header.state.partial.public_data_tree] -root = "0x150991e665deef36358651132dae8ed393beb6033496590a727d84e6d72f2385" +root = "0x07ca9f2bfbdd89f82d057d91ea89021e1400ae7700b2f372f73bd33696a55e5e" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.data.previous_block_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784b5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f25" [inputs.data.previous_block_header.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.data.previous_block_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.data.previous_block_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [inputs.blob_data] blobs_fields = [ - "0x000000000000000000000000000000000074785f737461727400004600010000", - "0x0c21a877defa3d12d8a12e94e79c79d255fafdf4c088b7cb87e141b42465b612", - "0x00020000000000000000000000000000000000000000000000000000093bd180", - "0x0000000000000000000000000000000000000000000000000000000003000002", - "0x10adb3ed29181266a51b134fefdf8a8bda10eb4f7b88d4d07fed48cb4321922e", - "0x25ea2696aa4598d58ee7d0dca8e3728952e5e4caed60f77d8a2317db0233b038", - "0x0000000000000000000000000000000000000000000000000000000004000002", - "0x2fd2e12aa0a6d530d8f0f23e7af3bae008ae0aa1dc7a60797eeeadd8aa7d4c7e", - "0x04c6ffa0b01f9dcbde73020d4b9443bd65991f481f058aff1dda3a90e6ca02e9", - "0x0000000000000000000000000000000000000000000000000000000006000002", - "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654", - "0x00000000000000000000000000000000000000000000021e19e0c9b127287f00", - "0x0000000000000000000000000000000000000000000000000000000007000039", - "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x039a4a3c3c16862a069e69b780e5bc8a0770cd9882cb87147f8f232161dcb6f4", - "0x0dd48f7d8d86c28de8542281e0aa07822cc95c098c246997ceffe0ffde03f69c", - "0x000005f40aab0cd96fd28b40e8e1bfa0eeb163d2b22cc2e7cbd7a559ebaf458e", - "0x00aa7d2df5b14aaf759121509fb6b7ec112f98cf4a085ee5072a08d8cda1f282", - "0x0052d4e85ef66fc58c5dd4a7aa1eb5ba60c7aede4313c2aa2cc1475c55dc9073", - "0x00c44ccd106354c7eab9c67b50197979fefac047f48fda2422b88578aca678d7", - "0x00dc8078c09ce0e995e767b45c742ce0d46b70f90a200a49826247f7142c2a7c", - "0x008d1c15d0a3a32441d03ef0b7306ddbea8341067d23fbd274a6e89ffb7b9644", - "0x00fb7d5fa5bf946f2d4befbd044a708e9690d2682f38034fe0680ea742ce0eef", - "0x009894fe50184d6bafe006a0e63810e27ed2ab1f4b525eb9cab1f38227365176", - "0x000ebdd479d08add56c8c4c237ea2b7ba126c53b5fdaf5169df4514c48e20a81", - "0x007e17b3cd6ddd2b34f216f811301f4b2b3ef5cc0b35727fc499e24b8735ea77", - "0x008ee53f1904be62ef594320a33a4ab67b06c60c8e04bba85f2fed8e8b3b958c", - "0x00e35634172a90fd3ca6b68bfba5e368f33a36d30a10d3c7d6d476f0819e886a", - "0x00088520aeb612750b2982920805876d99daaab67c9f2a10fef5e6196acb6e27", - "0x0008a78afbf381b2f6014762793c27dcec99f523436063530c4dd17b3e84cecb", - "0x003dc11aaade39eb054f499512712bf3e55571da34d19e6295ff77f900783989", - "0x0099aca5d2115caced1d29691068288b064e5f5a303974bb0c2e1daff69315d2", - "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x1fde1eff9f179610b383c551fdaf89112cd14d2b288ffcf9b0c1238834274ea9", - "0x2cd8fc2475a32a3fc4741537bd40e12794b9688ba634ff11a0687dc4960edd62", - "0x000133b6d73ca561998d9a1c4a0af1a2c35681aabc3aaffe6080389ee27b6931", - "0x00846002b17aa3e5026d30100ff0139adda91641356f7fe7cc5a0f25463836ef", - "0x001db402ae4f0d6311d084d6d81184e34931983d99d431b2baed52a2acaeea56", - "0x00942fd34fe814d0220ed14df87845d81cf6032fda533abf2efdf84d9aa59ca7", - "0x005b380295c12c1d60bdaa77209095cf2cbe6a5b050077775b2e64ff317fab26", - "0x00c03f8a7931fad30e7f47b4fc150786a770070c406be5ab275f30d77438007a", - "0x0014b1fea82d41d9f0c42c653aa9e2697cd7965c61b481e40ea67d6ec941efa8", - "0x005a2612fa5d28856c61e209eb7c4f2d58b0c54fda9ad9375cc4f6818b5c7ac5", - "0x003a5c4b2011e0ba2a0a1c7311b6377420177de9916771edad89b845622870cf", - "0x005eaf382bce51baa1b2d592b39e9d88a8a1fc3333a6d9e3f896d582f2c3dd29", - "0x001e3ad0c17ba8ccbffabcbb5ea8d70d0ca24d222848cdcc41cafa139e8dd808", - "0x009fcef850ed3e54c37ad535bdd207bd9f66ef3e4560445ce7893220cae1f428", - "0x009df99ad53b27bbd65d5d508e9584608396c7f42a87a31540456f0fbb13d6aa", - "0x00cad22fc7934a57778cb66f41cd7cf1e5f942dffcbceb9e18f2dfb079a21707", - "0x00c67b7a92275b20161d07f045bd028a516e61154b592635c887cdf5e273d491", - "0x003355e0d1911a86417e67e23d3f16c25e59a3c679fa1266b994ae9f87dd71fe", - "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x1835b83f346b0996b392bec8ee235522b526dc574fa545809222ff1934960dec", - "0x02c8a6c2bca15af58a4005e22871fb0c95cb6c91e8bcf1d84f7ed5bbf08c52f6", - "0x00019e60a68e620a94a5753a3e0f26bcf838aecd7f8748fe595640927ef7e606", - "0x007989c4cf61e955d842394cd90c9836f33930ee6e8f087d94242e940887de3e", - "0x00aa6082d4ff67060dfdccd64cd1792e8af756a30ed45b498697a00e1d193fe1", - "0x00f934068d09495eb4a41c1f7b9f8440185158239c1473195ccbb8e869a3a0d1", - "0x000e011a06fe61a8e2c8d69ba9ab57dde0684703dfe51d3927ca7b64509ce98b", - "0x00e393576b21197948a471525b374c62b2aadb0a6a8a0964f66fc3a0a2fce411", - "0x00e9b7aa46f0e83a418b4c2501a12119ce891f9970cbb65f9f92d118799512b0", - "0x007a4e90358cfd83e35800c2f0ecf16089e450c67650993bee9827c1f6bf8170", - "0x004c194829fe34f518ad3be52da7b65a7ce5d2e80f39ec536f71f697c942e1a6", - "0x001aa7dea3908b681fa80c6fe0126c3f30cd0dc3c7bd3aa537dccd0b1b0101d3", - "0x00f22909581df7b6da13fa0d98a05df5852b9f18622f670796868ca2fc6f2551", - "0x00f3296484063df8e1ded914233e018f9f8858c524a849bcd68ae552296975a4", - "0x001f79ffd016a883c750b8716698dd3efa4a754237e57c873a00b3412c9eb1e7", - "0x00ea8a67bdf4fcb0c81b9b6972f76d1456afc0d9e06a22954c997a555a8e76b6", - "0x00acb3dad6cd68dea76a18536a222ca901ba1fc14a854030cbda4c8a4d515b33", - "0x003b23bc07c30d6a3b5e5e6eec1a674033836190f84176b7f518b25557a4b5f6", "0x000000000000000000000000000000000074785f737461727400000c00010000", - "0x2393732a1d114df303dd17adf48e3f35a4e2cec05420ec7472d7324b79486e2c", - "0x00020000000000000000000000000000000000000000000000000000242f4350", + "0x01a22ec4be49f6045e5959b16107fbe027e5163328570d0a2238b42e90854bad", + "0x000200000000000000000000000000000000000000000000000000002bf4a9a4", "0x0000000000000000000000000000000000000000000000000000000004000001", - "0x2065eb29a2bfbf807660b650a06a4590e77520eab16e425be8d1b15d34cc2432", + "0x2eb682626c01a7093bb878315b15ae2912a01573f217945f796384a1527c33c3", "0x0000000000000000000000000000000000000000000000000000000006000006", - "0x142c9cb52b4cc578630b15c79176858858a4cbae8d7c29358d66da0fa361ff44", + "0x006dfd7adf426a182b417c95f4827bd707e73020aaf74cd0ad9c55b6d249ef84", "0x0000000000000000000000000000000000000000000000000000000000002328", - "0x239d87885659c85849d8950cd42a0b69d41521f8c9a10670e86bb5fe24aa7192", + "0x0ea327809af29f9262161a3968d72cc01506b8f8cdf044e5137c36f5f3819bc0", "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654", - "0x00000000000000000000000000000000000000000000021e19e0c9b102f93bb0", + "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d", + "0x00000000000000000000000000000000000000000000021e19e0c9af77b5d9c4", "0x000000000000000000000000000000000074785f737461727400000a00010000", - "0x2e0935175d333c9b0f374a4951167708c667d927df432bcf795f489c13a6d093", - "0x0002000000000000000000000000000000000000000000000000000012af39aa", + "0x0f2b017e95ccfaa73f79da9b99a7313addfbeaea5137e04caa7381572c482c35", + "0x0002000000000000000000000000000000000000000000000000000014ea278e", "0x0000000000000000000000000000000000000000000000000000000004000001", - "0x1f46b5874e9e5d27fa4e2589415cb61afef6d460b829e1f7fd68f087429a5ee3", + "0x25f9b7fe66cd8d44587d49495460a3197586360ca1d8a4c67986ed009014837c", "0x0000000000000000000000000000000000000000000000000000000006000004", - "0x0f9caec453d2ff1709e711d4b8573cfb06eba2f0de513bab849cfd80971c0660", - "0x2767f9570de8773ff9c0ee7316694a7959e85930a452a3b991946494c036e37f", - "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654", - "0x00000000000000000000000000000000000000000000021e19e0c9b0f04a0206", + "0x0f51803a7b1f8417db27e66800d5d17bea83d68ef0b3ac2789dca7609a5c2714", + "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2", + "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d", + "0x00000000000000000000000000000000000000000000021e19e0c9af62cbb236", + "0x000000000000000000000000000000000074785f737461727400004600010000", + "0x213e8c2d4e24eb31225718a7bc377e7ad4cb1386facc97da323552af33a4022a", + "0x000200000000000000000000000000000000000000000000000000000a524180", + "0x0000000000000000000000000000000000000000000000000000000003000002", + "0x1d59027a04b6d8722da2f6682a3952b2c7e36f33a4277aae37d2154dccc37fa8", + "0x0193d7e7bcf2ed193edcf2a5e67f3b3cc3612c31aa813d70a7cf10bfb833c587", + "0x0000000000000000000000000000000000000000000000000000000004000002", + "0x199c3591dfc143ada897739f620077e33bee4d0f066157b6ef3214e8027e983d", + "0x0f6984e215f59086cd7e14a7b38a2cb6d111980094fff53fe0eef0704d324e6a", + "0x0000000000000000000000000000000000000000000000000000000006000002", + "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d", + "0x00000000000000000000000000000000000000000000021e19e0c9af587970b6", + "0x0000000000000000000000000000000000000000000000000000000007000039", + "0x0000000000000000000000000000000000000000000000000000000000000012", + "0x02b411799c5ad79db3fd514b02fb51c1f49dd8be5621c46bf160f4a3dc7d0ffc", + "0x1c3f0a787cfb9072724e7834859b0386f084645878dbc643cc630d4252356517", + "0x0001b8069f641741f03cba22ea69687c8b761cc5c9aa962a0279f26d88a25f12", + "0x00312c43ba0ea39a27fc6dbe0d519a83f0d567551482914eecb6070cecf32552", + "0x00d207b40a160299917442f76d657454b58b7ca4de8d54b77345594119451d89", + "0x008761c94d42b721ca9c6b996f646a3141e38c27bdf0f4b20bfd8a548e31d53a", + "0x00e3aadea7c78883f09b337e7fc9b0a33d07e784df87627d4ad76de26977fe38", + "0x009c836fdf3ee1c3d777884b9d6c792863fe19a3ddeb6cdcdde6630ff375b242", + "0x00548a28eeb58cbfa41258bac6a9777199f228a5af8f9d4dc93f0e949b33f12c", + "0x000c309601a8189012c3d5922156220a0b03d0da71a5d3b6be0598c4295f8446", + "0x00911ce39ba02a48cc557cc35f8fbd512f63b0eb25241d25fb7265170429e7b4", + "0x00b783b163131c673c5d2a27ef22adbddde875c7b8c86647b56a198cde1e4b9c", + "0x003f7233ee14e5b50d8ac0c8455d9a5f7ea253c1ea0931ccd0585e5116bd5c31", + "0x00710228ce335215d56a61c231b320a9f67d14d15ed2ecd54dc1111d5fd9c704", + "0x0056738c53d342f7405702ead275607e6c9d1635de94cbab5360a7245f8f8d94", + "0x001e8bc8032e724b119485ff1ce6a90b43c00982cf6ca86c113a891ddd02ee38", + "0x00332d23ab997028189a3cbacfd6e3a1b4ce8290765fd51dd91b0cfbc23e351b", + "0x0072e4c322183891fd4cb5fcd362d7ad298483726128a17f38f8a4666e10d2b2", + "0x0000000000000000000000000000000000000000000000000000000000000012", + "0x11eedde76ab269afb20c92e33ea1cff613d3a0451efa3ee9e62402475fe47e6e", + "0x1e4458b12b705c33280717eedd2e6d4c4391ce17a7be78b0fac770db851e0f17", + "0x0000424028bf907b7542712d02cb2ea529737f4cea2e44b26c06bdcac325e211", + "0x000e76c26606a75d1f09c48e2283673a39bae77f23cfd23eb57df0cc2b45085c", + "0x0080170634cd20da16b4230faf71d0a454fb777e28361ddd7522a95427d71e71", + "0x00452f146c8a66b7a4b2c5d72a0d4f938845da0cb3e61e51a73559dca278a7c1", + "0x00b1e659c5294a33827419a0d46fcd67933d0190316a2078644d454727d9aabe", + "0x00fc0658cc5965e5e40f780645b09bc0abfb387a9da02384e1ed4e4e83aef2ab", + "0x00a5987cda13351be669609ec55e942964dea9b153d6ade75aee7b2da232e230", + "0x0039d90f1d387610b0aa69c768a3faae5e7f3feaf3e9b13a47de08b47ab11e45", + "0x002d79646cbdb01953f8a8ec21931934bee0f8422997f2318d63d593b28856a8", + "0x008c97eb440524e2d2ac31902b95f001e22dc8e2bcc88fe8a90d4e90e7babc07", + "0x004428e5ec1912a69ef9380f4aa0684b33fe96f3139db39c888ac6ca2606f452", + "0x00b8daeebe88d6973636184e0fbb8ad8b21d49de7cf6d4c8fcc95c77ce7057ad", + "0x00fa36c8ae9e92c4570039cbfd73ddfa019ee45fbafeb4109e5e0e9204a82c13", + "0x002633aec59551949872b213e2a64df81eb18122d04fbc9c217d0c497fbc55ef", + "0x000fed0a7f7244b5a02c12b4d1e77d10a9078683cf04274d766b2442210f3166", + "0x00abb48f5415a8de8075a41879aaaa9a3cb2577f4c14a131bd0230af64cad504", + "0x0000000000000000000000000000000000000000000000000000000000000012", + "0x0790f12116d7e4d9f0259341202c9c5aa13c881b29ac54f8c812f8a86869b9a6", + "0x19b56c5876b3a9bfb55edf9cb38a2e056fc7fb4eefc826a85ad1be40c595a30e", + "0x00003885733851f093b8a537c516b47b6005e85ce53428267baa915332b78916", + "0x0098312de8c3cbbdeae424edacaddaeba77f228d03961b33291567c64d1caf17", + "0x009d4fd7d530f2ed393be03504dad9c01ca0af698f52d9a119b6bf91ad41567a", + "0x0054f2aa223853743ecc10cc3060c87dc167d421d6076015f93304331523107f", + "0x00c7631a3dd7183ee272425a76e8c8a660778426ac8ad64613ba8f4865b72391", + "0x00af1cc986f63aae6c81ec602aee2e187386a80e2e3130b8201c2bc1fa511cfe", + "0x00e82e356895baceefec7439267f7de383ffdc49984b199b781733b598d0aca1", + "0x005b4de81e0e67debcf822a835c403ecc7be601de5adcd11cfe577e19aaa8600", + "0x0055ab0963d72b3a1884f1170118765b3eddd0928e826aa0f5957940966bef14", + "0x003f89d05b013942a8bbef0c73cd0af9fa8c3b5692f1a4c405444aab4b8671d3", + "0x0092fac88e94a3218121393320215a0599cad8d75597710c3786c2c5f097e895", + "0x0065b0bd8d67f0478a312a08c8d89d901b07a18410d15d95cb9409f26ad7d0d8", + "0x001483c9da3b6bc997c8c0626ef61055116fc2cf9214934c7b6fe894808cdc50", + "0x008a89f085d69862902f2228ce1b7fa696e9f1197cc7d230d2f4b7d8d7a00d3c", + "0x00af53dcbfbe40616c079981f43fdb0cf9f4b00a55589902f49e215c79d16d00", + "0x00be4d828be2d3f952ed4192c3e34fb2764dc1d341c518925ec914378ba0ed14", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -14604,12 +14613,12 @@ blobs_fields = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -blobs_hash = "0x008a68564f13d17b5b4b8d2c6e9b645c2afdacdc4f8869d0c74c0f6c08179cfb" +blobs_hash = "0x0074c51b4329d9da5da68499ab14af02451bf4ed00d52efd057db5d53e6f1431" [[inputs.blob_data.blob_commitments]] inner = [ - "0x008abf61373dd489794229987b3f1e6549b102719f023a973ab284074469c7cf", - "0x0000000000000000000000000000009c8747b18cf207a60939988ca7a69d327c" + "0x0080fc98f548e26e38084ad23a25b1756ff9a218d289f7ae7404f5d35017fad1", + "0x0000000000000000000000000000000e43b628bf9cc36e41a23048021d58a084" ] [[inputs.blob_data.blob_commitments]] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr index 637fb5c801ad..28ef80788036 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr @@ -48,6 +48,7 @@ pub struct BlockRootOrBlockMergePublicInputs { pub start_global_variables: GlobalVariables, // Global variables for the first block in the range pub end_global_variables: GlobalVariables, // Global variables for the last block in the range pub out_hash: Field, // Merkle node of the L2-to-L1 messages merkle roots in the block range + pub proposed_block_header_hashes: [Field; AZTEC_MAX_EPOCH_DURATION], // Hashes of proposed block headers for the block range pub fees: [FeeRecipient; AZTEC_MAX_EPOCH_DURATION], // Concatenation of all coinbase and fees for the block range pub vk_tree_root: Field, // Root of allowed vk tree pub protocol_contract_tree_root: Field, // Root of protocol contract tree @@ -69,6 +70,7 @@ impl Empty for BlockRootOrBlockMergePublicInputs { start_global_variables: GlobalVariables::empty(), end_global_variables: GlobalVariables::empty(), out_hash: 0, + proposed_block_header_hashes: [0; AZTEC_MAX_EPOCH_DURATION], fees: [FeeRecipient::empty(); AZTEC_MAX_EPOCH_DURATION], vk_tree_root: 0, protocol_contract_tree_root: 0, @@ -85,6 +87,7 @@ impl Eq for BlockRootOrBlockMergePublicInputs { & (self.start_global_variables.eq(other.start_global_variables)) & (self.end_global_variables.eq(other.end_global_variables)) & (self.out_hash == other.out_hash) + & (self.proposed_block_header_hashes.eq(other.proposed_block_header_hashes)) & (self.fees.eq(other.fees)) & (self.vk_tree_root == other.vk_tree_root) & (self.protocol_contract_tree_root == other.protocol_contract_tree_root) @@ -103,6 +106,7 @@ impl Serialize for BlockRootOrBl fields.extend_from_array(self.start_global_variables.serialize()); fields.extend_from_array(self.end_global_variables.serialize()); fields.push(self.out_hash as Field); + fields.extend_from_array(self.proposed_block_header_hashes); for i in 0..AZTEC_MAX_EPOCH_DURATION { fields.extend_from_array(self.fees[i].serialize()); } @@ -129,6 +133,7 @@ impl Deserialize for BlockRootOr start_global_variables: reader.read_struct(GlobalVariables::deserialize), end_global_variables: reader.read_struct(GlobalVariables::deserialize), out_hash: reader.read(), + proposed_block_header_hashes: reader.read_array(), fees: reader.read_struct_array( FeeRecipient::deserialize, [FeeRecipient::empty(); AZTEC_MAX_EPOCH_DURATION], diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr index a0e7d9fe737d..4ea43df93e54 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr @@ -51,6 +51,9 @@ impl BlockMergeRollupInputs { let out_hash = components::compute_blocks_out_hash(self.previous_rollup_data); + let proposed_block_header_hashes = + components::accumulate_proposed_block_header_hashes(left, right); + let fees = components::accumulate_blocks_fees(left, right); // TODO: We need to eventually accumulate blob info to a single BlobPublicInputs instance which will verify multiple blobs in one call @@ -65,6 +68,7 @@ impl BlockMergeRollupInputs { start_global_variables: left.start_global_variables, end_global_variables: right.end_global_variables, out_hash, + proposed_block_header_hashes, fees, vk_tree_root: left.vk_tree_root, protocol_contract_tree_root: left.protocol_contract_tree_root, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr index fc6717e5c31b..31933c45eb1e 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_root_rollup_output_composer.nr @@ -16,6 +16,7 @@ use types::{ content_commitment::ContentCommitment, merkle_tree::{append_only_tree, calculate_empty_tree_root}, partial_state_reference::PartialStateReference, + proposed_block_header::ProposedBlockHeader, state_reference::StateReference, traits::{Empty, Hash}, }; @@ -52,16 +53,18 @@ impl BlockRootRollupOutputComposer { let constants = self.merged_rollup.constants; // Build the block hash for this by hashing the header and then insert the new leaf to archive tree. - let new_block_hash = self - .create_new_block_header(constants, self.merged_rollup.end, blob_data.blobs_hash) - .hash(); + let new_block_header = + self.create_new_block_header(constants, self.merged_rollup.end, blob_data.blobs_hash); + let new_block_hash = new_block_header.hash(); let new_archive = self.update_archive(constants.last_archive, new_block_hash); + let proposed_block_header_hash = self.create_proposed_block_header(new_block_header).hash(); let block_blob_public_inputs = self.get_block_blob_public_inputs(blob_data); self.finish_with_new_values( constants, new_archive, + proposed_block_header_hash, self.merged_rollup.out_hash, block_blob_public_inputs, self.merged_rollup.accumulated_fees, @@ -75,17 +78,19 @@ impl BlockRootRollupOutputComposer { empty_effect_blob_public_input: BlobPublicInputs, is_padding: bool, ) -> BlockRootOrBlockMergePublicInputs { - let new_archive = if is_padding { - constants.last_archive + let (new_archive, proposed_block_header_hash) = if is_padding { + (constants.last_archive, 0) } else { - let new_block_hash = self - .create_new_block_header( - constants, - self.data.previous_block_header.state.partial, - empty_effect_blobs_hash, - ) - .hash(); - self.update_archive(constants.last_archive, new_block_hash) + let new_block_header = self.create_new_block_header( + constants, + self.data.previous_block_header.state.partial, + empty_effect_blobs_hash, + ); + let new_block_hash = new_block_header.hash(); + ( + self.update_archive(constants.last_archive, new_block_hash), + self.create_proposed_block_header(new_block_header).hash(), + ) }; let mut block_blob_public_inputs = BlockBlobPublicInputs::empty(); @@ -96,6 +101,7 @@ impl BlockRootRollupOutputComposer { self.finish_with_new_values( constants, new_archive, + proposed_block_header_hash, 0 /* out_hash */, block_blob_public_inputs, 0, /* accumulated_fees */ @@ -106,10 +112,14 @@ impl BlockRootRollupOutputComposer { self, constants: ConstantRollupData, new_archive: AppendOnlyTreeSnapshot, + proposed_block_header_hash: Field, out_hash: Field, block_blob_public_inputs: BlockBlobPublicInputs, accumulated_fees: Field, ) -> BlockRootOrBlockMergePublicInputs { + let mut proposed_block_header_hashes = [0; AZTEC_MAX_EPOCH_DURATION]; + proposed_block_header_hashes[0] = proposed_block_header_hash; + let mut fees = [FeeRecipient::empty(); AZTEC_MAX_EPOCH_DURATION]; fees[0] = FeeRecipient { recipient: constants.global_variables.coinbase, @@ -125,6 +135,7 @@ impl BlockRootRollupOutputComposer { start_global_variables: constants.global_variables, // we have asserted that left.constants == right.constants => ... end_global_variables: constants.global_variables, // ...with a current block range of 1, we only have 1 set of constants out_hash, + proposed_block_header_hashes, fees, vk_tree_root: constants.vk_tree_root, protocol_contract_tree_root: constants.protocol_contract_tree_root, @@ -171,6 +182,19 @@ impl BlockRootRollupOutputComposer { } } + fn create_proposed_block_header(_self: Self, block_header: BlockHeader) -> ProposedBlockHeader { + ProposedBlockHeader { + last_archive_root: block_header.last_archive.root, + content_commitment: block_header.content_commitment, + slot_number: block_header.global_variables.slot_number, + timestamp: block_header.global_variables.timestamp, + coinbase: block_header.global_variables.coinbase, + fee_recipient: block_header.global_variables.fee_recipient, + gas_fees: block_header.global_variables.gas_fees, + total_mana_used: block_header.total_mana_used, + } + } + fn update_archive( self, last_archive: AppendOnlyTreeSnapshot, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr index 4f11779bc44b..3e8b1963b52d 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr @@ -68,6 +68,16 @@ pub fn assert_prev_block_rollups_follow_on_from_each_other( } } +pub fn accumulate_proposed_block_header_hashes( + left: BlockRootOrBlockMergePublicInputs, + right: BlockRootOrBlockMergePublicInputs, +) -> [Field; AZTEC_MAX_EPOCH_DURATION] { + array_merge( + left.proposed_block_header_hashes, + right.proposed_block_header_hashes, + ) +} + pub fn accumulate_blocks_fees( left: BlockRootOrBlockMergePublicInputs, right: BlockRootOrBlockMergePublicInputs, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr index 41d5937b8edd..9af368956d20 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr @@ -56,6 +56,9 @@ impl RootRollupInputs { let out_hash = components::compute_blocks_out_hash(self.previous_rollup_data); + let proposed_block_header_hashes = + components::accumulate_proposed_block_header_hashes(left, right); + let fees = components::accumulate_blocks_fees(left, right); // TODO: We need to eventually accumulate blob info to a single BlobPublicInputs instance which will verify multiple blobs in one call @@ -70,6 +73,7 @@ impl RootRollupInputs { end_timestamp: right.end_global_variables.timestamp, end_block_number: right.end_global_variables.block_number, out_hash, + proposed_block_header_hashes, fees, vk_tree_root: left.vk_tree_root, protocol_contract_tree_root: left.protocol_contract_tree_root, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr index a0dca33af5f8..2accc9435b78 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr @@ -2,6 +2,7 @@ use crate::abis::block_root_or_block_merge_public_inputs::FeeRecipient; use dep::types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot; use dep::types::constants::AZTEC_MAX_EPOCH_DURATION; use blob::blob_public_inputs::BlockBlobPublicInputs; + pub struct RootRollupPublicInputs { // Snapshot of archive tree before/after this rollup has been processed pub previous_archive: AppendOnlyTreeSnapshot, @@ -9,6 +10,7 @@ pub struct RootRollupPublicInputs { pub end_timestamp: u64, pub end_block_number: Field, pub out_hash: Field, + pub proposed_block_header_hashes: [Field; AZTEC_MAX_EPOCH_DURATION], pub fees: [FeeRecipient; AZTEC_MAX_EPOCH_DURATION], pub vk_tree_root: Field, pub protocol_contract_tree_root: Field, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml index f18a51df1006..811144ca7f89 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml @@ -3,57 +3,57 @@ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x00000000000000000000000000000000000000000000000000000000093bd180" -accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" +accumulated_fees = "0x000000000000000000000000000000000000000000000000000000002bf4a9a4" +accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000013c36" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" - protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" + vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" + protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x0d3828a8fd93fdb49ce09ccc58b3a5903cd3c87783948c2095687dcf7fd44bc7" + root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784cd" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x2205a826a3f9516231b2edd7cb8f0573517202c36c5935573a30020f5b5b9791" +root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x04f4bf59e2a38d5910ae6ff74c70fe0c4bad3b82d5fd5a85b89fc98a4381d569" +root = "0x19d316424ed6bd56f3016f8dbb6db9a9671f5c9bf9b3507600751ffce4a4d227" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x150991e665deef36358651132dae8ed393beb6033496590a727d84e6d72f2385" +root = "0x07ca9f2bfbdd89f82d057d91ea89021e1400ae7700b2f372f73bd33696a55e5e" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x0e78f1d5dec20ceac046bed6d2695d5086169440bdcd985416da690e4555cd13" +root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x2171cafb642df56e87d822c83a68653ec9005e8aaed7bc4c551e67ae9cbffa40" +root = "0x17e6de2c211925553d72e019641834a07e6a736ae1abc90a00400ce021e5c703" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x02f60259f9c4998eea8dabb7bdda0abaae8ad6c834593650c4043d9fe78b5ce2" -next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" +root = "0x197eb345e67372c12909358c4178af8299b9dd3d6a197a1d0ce6999f26c52ea8" +next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] fields = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -75,22 +75,22 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 squeeze_mode = false [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] - fields = "0x0000000000000000000000000000000000000000000000000000000000000046" + fields = "0x000000000000000000000000000000000000000000000000000000000000000c" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005c" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x003b23bc07c30d6a3b5e5e6eec1a674033836190f84176b7f518b25557a4b5f6", - "0x00ea8a67bdf4fcb0c81b9b6972f76d1456afc0d9e06a22954c997a555a8e76b6", - "0x00acb3dad6cd68dea76a18536a222ca901ba1fc14a854030cbda4c8a4d515b33" + "0x00000000000000000000000000000000000000000000000000000000000003e8", + "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d", + "0x00000000000000000000000000000000000000000000021e19e0c9af77b5d9c4" ] state = [ - "0x0b3ec790f7d2bec3f20d842e3debe40e01530098c2af94b6ec11e2e6436cb1ff", - "0x0bdb4ba2af4e2efb09328199bb263ada91093841379ac5d8975d583c85a4c921", - "0x2a4b4e49d2a1aa30e09ba321f00b081a2a9f86506a24b7f58142f3a86555342d", - "0x178e6f222c2adc9f6746ee96670ba43c18fe039efef96787345bfd3866e7f1bc" + "0x20f339cb5d0146fb675875e3192aef07bb9aabc88b1b0782d20462311b4ffe1a", + "0x02199d7af84fb789e1d58b4cb0b2662b620d6bf56bdae3891d8bc1ca5b883faa", + "0x17c38189dfec26828207773508780e147f7048b1040f0201d74273ef06aa83d0", + "0x005561318da097c32dff4bbd09e34a9e1aaa8cf6fc3c72b48a59cc133c84bb15" ] - cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" squeeze_mode = false [inputs.previous_rollup_data.proof] @@ -654,91 +654,101 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000041", "0x0000000000000000000000000000000000000000000000000000000000000042", "0x0000000000000000000000000000000000000000000000000000000000000043", + "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x000000000000000000000000000000521b9d4f83c543b2d84cfdc2bd2a98fb40", - "0x00000000000000000000000000000000001339c78afbaf20ae75727c7b732af4", - "0x00000000000000000000000000000080022768f68ea22b61825c0c21bfb8ac3d", - "0x000000000000000000000000000000000015ff4c9ac04d118866917d85503b7e", - "0x00000000000000000000000000000070713038ce33770306927dd8ca492322b2", - "0x00000000000000000000000000000000002fee639887369cd3a83579202b79dc", - "0x00000000000000000000000000000061bab45392977e273d132d7cb7a44ff202", - "0x0000000000000000000000000000000000155170bb6e84f41b220e351ccccd36", - "0x000000000000000000000000000000d762b23206e8619049ccdc3d9d72db53e8", - "0x000000000000000000000000000000000027b2187681c7d7d762978a8699d1ad", - "0x000000000000000000000000000000fb6231cdcee4bf02adf80ab4f5b4e1b7f7", - "0x0000000000000000000000000000000000158ff5241a1461fb0a35fd985ec474", - "0x000000000000000000000000000000c4953b141659032c469ce6770f016b7980", - "0x000000000000000000000000000000000006920ab0aa6f66843372f54781ca2b", - "0x000000000000000000000000000000c7af0b22593cce863a4a8ca0b240d074ca", - "0x00000000000000000000000000000000000dfdc634e7b62976f6ce0549fe233a", - "0x000000000000000000000000000000c1d033ae709c039af90b2234226cb5c4f8", - "0x00000000000000000000000000000000002dc468919a1be7cbd81296c1733377", - "0x0000000000000000000000000000005d502fdc01a9736a9219cf912d9694a2e9", - "0x000000000000000000000000000000000021aafb24e110636d9df075e9bc6b86", - "0x000000000000000000000000000000a7d84e314ba33098291f60dea80b20d68f", - "0x0000000000000000000000000000000000217076933f7d213145d14d14915da8", - "0x000000000000000000000000000000a16d19f8a7acf7d489e6271afc1b954c20", - "0x00000000000000000000000000000000001c765879c0be34217b869c3b7a9a67", + "0x0000000000000000000000000000000000000000000000000000000000000045", + "0x0000000000000000000000000000000000000000000000000000000000000046", + "0x0000000000000000000000000000000000000000000000000000000000000047", + "0x0000000000000000000000000000000000000000000000000000000000000048", + "0x0000000000000000000000000000000000000000000000000000000000000049", + "0x000000000000000000000000000000000000000000000000000000000000004a", + "0x000000000000000000000000000000000000000000000000000000000000004b", + "0x000000000000000000000000000000000000000000000000000000000000004c", + "0x000000000000000000000000000000000000000000000000000000000000004d", + "0x0000000000000000000000000000002b6175f3c2d13fefa852197a9e2c1ef43a", + "0x00000000000000000000000000000000002f757ec74e1efc65699cbf84c0c932", + "0x000000000000000000000000000000e696919dd11693741079c5f5dc31eaa606", + "0x000000000000000000000000000000000029a584f282ffbaf879b2e98e9c6d1f", + "0x0000000000000000000000000000000e0ecb5505aceda7d182bb0d8233b62abb", + "0x00000000000000000000000000000000002fc1534f08e1a31feb184dcca0e5a8", + "0x0000000000000000000000000000003429c14c7fc9ca2ba50d3575f6289650ec", + "0x0000000000000000000000000000000000213865498316e80d91f45716363c7b", + "0x00000000000000000000000000000066e3382a53311b8961b6164bfff9de5fda", + "0x00000000000000000000000000000000002b256cdd48a80074a1e977d5787114", + "0x000000000000000000000000000000ec8c6556756066c63462d030dad0f04a24", + "0x0000000000000000000000000000000000103236f5e8396a3dfd3313f4b863f0", + "0x00000000000000000000000000000061e35814c22e7fb118094876a02122ead1", + "0x00000000000000000000000000000000001f3fac6355d8ea84bec274abfcd055", + "0x000000000000000000000000000000c3f8047edbcdc2f5a62cd5d73e39b0042d", + "0x0000000000000000000000000000000000245a096371cf6c925176a147c37814", + "0x000000000000000000000000000000b075107c5961c379bed15f2fd241cc989f", + "0x0000000000000000000000000000000000187f95acf56b4f583054e3ea03103c", + "0x00000000000000000000000000000096a7bf259b81ceb4d1d447844c7b98cf2f", + "0x00000000000000000000000000000000001fdf4d64bfe977846272f1bc45ca2f", + "0x00000000000000000000000000000035d93826436a59665e1b02efd2617f91f0", + "0x00000000000000000000000000000000002823bca05aa8856d0a0e1073161a26", + "0x000000000000000000000000000000eadd571871d32b3dd0836dbd236cd53e21", + "0x000000000000000000000000000000000024e3e3e65acc31decea46ba97d7157", "0x000000000000000000000000000000e7bab6896d9724b5b46b796551dc5feed2", "0x00000000000000000000000000000000001fd93debdcf16cc93f99efd69e938d", "0x0000000000000000000000000000004b94434e1705c9bc2a4f5b2bc2a05c3c03", "0x00000000000000000000000000000000002a29d5563fd08e454dace1605a1aa5", - "0x000000000000000000000000000000c605d0398cd0b2427c3c9c461bb8429b53", - "0x0000000000000000000000000000000000196952a7e4218337f71f1105909c3d", - "0x0000000000000000000000000000006cae2999b90655b65fb2612f6692e2adf9", - "0x00000000000000000000000000000000002dacb567e258b182d2aa0f0c2673e9", - "0x000000000000000000000000000000fa23b5130fb864af7b45be9abdfee90f81", - "0x00000000000000000000000000000000001b5f38c9b239993607e4bd64e1ec0e", - "0x000000000000000000000000000000bdd3479bd2de629e84156d2c0af3b2ef68", - "0x00000000000000000000000000000000001da27039bf77a359382fc0c56838d9", - "0x000000000000000000000000000000e7039a59b6348c66427f2c08e1b4a38415", - "0x00000000000000000000000000000000000d34616a91f79d7613bbfb94ed0d38", - "0x000000000000000000000000000000ffa72e0f4b9857447bc99abb6f83d42647", - "0x0000000000000000000000000000000000193a8bcc5d47c5f43e6cc581ac0eca", - "0x000000000000000000000000000000609f79166c04a86fef382541bd1c5ab9ee", - "0x00000000000000000000000000000000000db5fa9f0bd6341244daf0d59d7b4d", - "0x0000000000000000000000000000009d97a8c8a3a70077827e2478347af83d11", - "0x000000000000000000000000000000000014360d2aa26b853c45cc56f3ee4d6c", - "0x00000000000000000000000000000037daba742d12aec1b27f76d1d8eb3a1604", - "0x000000000000000000000000000000000010c19122bb08b25208f5814a2d9813", - "0x000000000000000000000000000000be2d452540b2e3de92b42c11ac9e70887d", - "0x000000000000000000000000000000000003735685535ef50a290d4f0f8ed48a", - "0x000000000000000000000000000000c3aa132938397ac9298dc4c631930c2bc1", - "0x000000000000000000000000000000000006842deb4d313e699e597b702ee51f", - "0x000000000000000000000000000000de052dfd6c354afef2580b20acf839687b", - "0x000000000000000000000000000000000029a034fd3752a404c9c1d34be06c6d", - "0x000000000000000000000000000000d1760e3a79672913c859049adbc670838c", - "0x00000000000000000000000000000000000e49d5809084137fc7bc71ba11ae4c", - "0x00000000000000000000000000000018da3c85d452ca91d4c8ae233f3d0ca0cb", - "0x00000000000000000000000000000000002c681b077e84d38c1602e9f572a11b", - "0x000000000000000000000000000000c3d40a67c4190b20133a492d8f79fbbc55", - "0x00000000000000000000000000000000002974c1b596b95212c42728a3f49557", - "0x000000000000000000000000000000f79eef4973eea5c82bd426545a37c7ed2d", - "0x00000000000000000000000000000000001ba2cfcf9b6a183c6c6657d58479ee", - "0x0000000000000000000000000000000e0432dd54f4992443978a547a3553f2bc", - "0x0000000000000000000000000000000000257ed05f3910112f34e3a6132c0f1a", - "0x000000000000000000000000000000febd659aed367ed7407b257704072b88ae", - "0x000000000000000000000000000000000019758526889ecf9801abc067968aeb", - "0x000000000000000000000000000000a3f503fe809fcdea4f4c89790ee9476c07", - "0x0000000000000000000000000000000000054ca4d7b7aef2ff8d05cd828cc7e8", - "0x00000000000000000000000000000082e978a687f226b9d9f6c475d76ad7d0f2", - "0x0000000000000000000000000000000000170d4cfd2d18c54304a6d903bf1a0f", - "0x0000000000000000000000000000006fa34ea411efa79fa5ead29b0692bf2b77", - "0x0000000000000000000000000000000000019bf1e5985e2e1a266a8864a7a581", - "0x00000000000000000000000000000024284a91b4778943659263b48bbdb337ea", - "0x00000000000000000000000000000000002fb6187962b45dd22bcb08a54d2f9f", - "0x0000000000000000000000000000000eded336e987654dfa087268cadec1569b", - "0x00000000000000000000000000000000001f1b47740cf8487a80c45c4609935b", - "0x0000000000000000000000000000000eee28b9fc49c81a286626062375e866a8", - "0x000000000000000000000000000000000011e1f7acbb598eb1167aa3ae001439", - "0x000000000000000000000000000000afd2eac7b63630be51019a6bf88b5d2641", - "0x00000000000000000000000000000000002488ee8880b7c23776f33c1f1078eb", - "0x0000000000000000000000000000002275b7c90182400ba595c7685146405aad", - "0x0000000000000000000000000000000000263a1385b1d49c3dbac85c2b943a14", - "0x00000000000000000000000000000099b6b8028401bdf9add9b6a3e9f3f16f1d", - "0x00000000000000000000000000000000002c92c0237e464563a30456b3e0b917", - "0x000000000000000000000000000000f9cf12c30ec2f4e80b51e603a07fa28f2e", - "0x000000000000000000000000000000000025f210d401c32dcfdd334443a6745a", + "0x000000000000000000000000000000ff5bbb821de840dc75415302e866c12765", + "0x0000000000000000000000000000000000067f5c980beecdf7117440a823869c", + "0x00000000000000000000000000000090aa429aaf305122ace1e0a27b94e3ed4e", + "0x000000000000000000000000000000000028ca011224355213d944fbbb130741", + "0x00000000000000000000000000000034a42c54dd6a7a50b984a13fb422e625b1", + "0x000000000000000000000000000000000010b5fb9abe61da63f98f2752b47065", + "0x000000000000000000000000000000fa8d9f0907a53c565c1ba2ba66a5c7b33c", + "0x00000000000000000000000000000000001a262e490e796976138cf749a5ceec", + "0x00000000000000000000000000000075ad9a3c0f8b394772b8abebcbc06cee90", + "0x00000000000000000000000000000000000a422140cad0bbddca8e9534fd8ece", + "0x0000000000000000000000000000009ec0bd708235c4ece4608a194e140d3a51", + "0x00000000000000000000000000000000002d93f3acbef1f2fa962d72944d88c8", + "0x0000000000000000000000000000008ad2b73ccaed536cd01a61db28c988a752", + "0x00000000000000000000000000000000002c274a3e097fd93dd757923f5953a2", + "0x0000000000000000000000000000000806a009e1e23e35b764bd023c6b7b1107", + "0x0000000000000000000000000000000000114aa08086af1c1a480a5bb8c81d7e", + "0x000000000000000000000000000000ea3c78865aa82bf7671761ec907fcd2376", + "0x000000000000000000000000000000000028f54754322b38ac5d5cdc8ad37f6a", + "0x000000000000000000000000000000e7ba887ff58001b4d1e7447d82810c26ca", + "0x000000000000000000000000000000000000f158075638c4b079d9693433b046", + "0x00000000000000000000000000000059e018fa8ec807afc030291f549e713cb8", + "0x00000000000000000000000000000000001e6adcb9fa3319214663536d0b17d3", + "0x000000000000000000000000000000a6771cc12bb10502caf47d1bba993cfaff", + "0x00000000000000000000000000000000002116eea84a66a9bf9613532362ec70", + "0x0000000000000000000000000000005839a8c2c4e9766bc1bb18f79c046be6f3", + "0x00000000000000000000000000000000002c4b1591f622a8c27f241d567390d8", + "0x000000000000000000000000000000f547cba6d2dbd12dc3f8a1859291015a6c", + "0x00000000000000000000000000000000002cdcf706bcef5db9663125c0353535", + "0x000000000000000000000000000000ca8a488cd9d8d5287df55cb19997f20c3e", + "0x000000000000000000000000000000000020d8ea36ab67611f4048dc8bf31456", + "0x000000000000000000000000000000a1c551a28f70af0cd4084be71f9483b6fc", + "0x000000000000000000000000000000000019272a54f448f2483657b5ea18ae2f", + "0x000000000000000000000000000000a0ad7e19dc43911db3307e671126cf0544", + "0x00000000000000000000000000000000002938a45db30a1b0c5cb1052ec938b9", + "0x00000000000000000000000000000075266396925b7fc0abf3fd39bbedfed21e", + "0x00000000000000000000000000000000000037bd03045c5c5a92483be3dd7866", + "0x0000000000000000000000000000002ad127759a8da66ac9e6760e700fa7008b", + "0x000000000000000000000000000000000008bcd4eb5135596c29ade1cfceb11c", + "0x0000000000000000000000000000008ca6f75ca729ce3c2bb6a6a24adb6c4697", + "0x00000000000000000000000000000000000b77d25c1b8a06cdbb3c6a0103cb54", + "0x000000000000000000000000000000d5ef2ccb938f0a93755a3eca92fbb9fa6f", + "0x00000000000000000000000000000000000d22ac2d9c3d4fc672f645d38a017c", + "0x000000000000000000000000000000fd421654e64dfbfea05dc01c334d2427ca", + "0x00000000000000000000000000000000001795d96cd79d7fe8e7282876a72768", + "0x0000000000000000000000000000003bf630bba4a42f3f3fb78a202600cc259e", + "0x000000000000000000000000000000000012c87f63ba30ca463150e9220bf281", + "0x00000000000000000000000000000003e0f898de5dfcc0049b0933abc8695d5c", + "0x000000000000000000000000000000000002ec14c4e2663cf563a812cc207605", + "0x000000000000000000000000000000369c65a86c716967d647ee9b48f7e1ee26", + "0x00000000000000000000000000000000000f244cf31bf8de7bf56ff2c798455e", + "0x000000000000000000000000000000d07a5a3819cd5209a4af69fbfd903051a8", + "0x00000000000000000000000000000000000827cddaed840173510b6d02135867", + "0x0000000000000000000000000000002d88bd0a6a7c35e1d811d62d218f6778bb", + "0x000000000000000000000000000000000019e4acfadd45da7f2e0b79e51d6b9b", + "0x0000000000000000000000000000002344cf0ad2c40fdd81b060071782bec289", + "0x000000000000000000000000000000000019717740651cd7db4dee1d8a3d51e6", "0x000000000000000000000000000000e97fb648fc1ff99f9988a73de181e0de22", "0x000000000000000000000000000000000024cae2d5d2c4daefe858889eeb01b8", "0x000000000000000000000000000000e072297115d09425f5612d626dc82f1002", @@ -759,20 +769,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000df09a35ec29cb8b8e65d374b7ee4b958e4", - "0x00000000000000000000000000000000002a4f5048b3b3a1f217328f560fbb64", - "0x000000000000000000000000000000d05ec9df459e02b89c2805cd568a2f3522", - "0x000000000000000000000000000000000015775347bfde9959a7eeca6a09dded" + "0x000000000000000000000000000000794f339b4095c6201d34f6eea0fd61fdea", + "0x00000000000000000000000000000000000f54fb9da59f4d7420cf3c8356980e", + "0x000000000000000000000000000000da824040aaaf923948c05378dbd9cbe4ff", + "0x00000000000000000000000000000000000a7b02f4a8af2e5b64311b27e4c6fc" ] -hash = "0x2ef0677eced88cf91ef001e856c0e3e649ab915b579ddcede447fa49fcbc0e2c" +hash = "0x0cae9a18e830901d937e8150200d55d6b97b58f12cbe0a8f24c0e50c8bda66ff" [inputs.previous_rollup_data.vk_witness] -leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" +leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" sibling_path = [ - "0x14caa5816578cf92f252792e62335331c3c7b3aba456597e9d2ec7131722bdfe", - "0x0f410eb6e69a2497aabc2f1686a1bdf90876c704621e028ec62c0341f74560ec", + "0x2105487deb54ac9c459b3050270ea0b48ac21bc057a48da073c3fb56dea06740", + "0x1a8ceec79a52f0cadbada4e0362dfd6ef1f2af334809c9bc837825b657cec6a1", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1a8c157a307350dc57f06625e220057348008c02bc50c04154826acb1153bb77", + "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -782,92 +792,92 @@ sibling_path = [ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x00000000000000000000000000000000000000000000000000000000242f4350" -accumulated_mana_used = "0x00000000000000000000000000000000000000000000000000000000000122f8" +accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000014ea278e" +accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000009675" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" - protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" + vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" + protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x0d3828a8fd93fdb49ce09ccc58b3a5903cd3c87783948c2095687dcf7fd44bc7" + root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784cd" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x0e78f1d5dec20ceac046bed6d2695d5086169440bdcd985416da690e4555cd13" +root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x2171cafb642df56e87d822c83a68653ec9005e8aaed7bc4c551e67ae9cbffa40" +root = "0x17e6de2c211925553d72e019641834a07e6a736ae1abc90a00400ce021e5c703" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x02f60259f9c4998eea8dabb7bdda0abaae8ad6c834593650c4043d9fe78b5ce2" -next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" +root = "0x197eb345e67372c12909358c4178af8299b9dd3d6a197a1d0ce6999f26c52ea8" +next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x0e78f1d5dec20ceac046bed6d2695d5086169440bdcd985416da690e4555cd13" +root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x027e0b77bd515faf05c278bbd22692ef6c2daf9262660da2f2285e7f4a276282" +root = "0x1638127f0b085d1ccccff7f140acf3f91e154550ab9883c863a2f3d297e85c0f" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x23045d8524ba8a3266bdc3c79c9343c058d86f2adc267433d1f7b5bda53dfc16" +root = "0x264038ca78601a4472bd12b0052b2e3b3bc1f6382dddb319a5d8431adf6fa760" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] - fields = "0x0000000000000000000000000000000000000000000000000000000000000046" + fields = "0x000000000000000000000000000000000000000000000000000000000000000c" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005c" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] cache = [ - "0x003b23bc07c30d6a3b5e5e6eec1a674033836190f84176b7f518b25557a4b5f6", - "0x00ea8a67bdf4fcb0c81b9b6972f76d1456afc0d9e06a22954c997a555a8e76b6", - "0x00acb3dad6cd68dea76a18536a222ca901ba1fc14a854030cbda4c8a4d515b33" + "0x00000000000000000000000000000000000000000000000000000000000003e8", + "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d", + "0x00000000000000000000000000000000000000000000021e19e0c9af77b5d9c4" ] state = [ - "0x0b3ec790f7d2bec3f20d842e3debe40e01530098c2af94b6ec11e2e6436cb1ff", - "0x0bdb4ba2af4e2efb09328199bb263ada91093841379ac5d8975d583c85a4c921", - "0x2a4b4e49d2a1aa30e09ba321f00b081a2a9f86506a24b7f58142f3a86555342d", - "0x178e6f222c2adc9f6746ee96670ba43c18fe039efef96787345bfd3866e7f1bc" + "0x20f339cb5d0146fb675875e3192aef07bb9aabc88b1b0782d20462311b4ffe1a", + "0x02199d7af84fb789e1d58b4cb0b2662b620d6bf56bdae3891d8bc1ca5b883faa", + "0x17c38189dfec26828207773508780e147f7048b1040f0201d74273ef06aa83d0", + "0x005561318da097c32dff4bbd09e34a9e1aaa8cf6fc3c72b48a59cc133c84bb15" ] - cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" squeeze_mode = false [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] - fields = "0x0000000000000000000000000000000000000000000000000000000000000052" + fields = "0x0000000000000000000000000000000000000000000000000000000000000016" expected_fields = "0x000000000000000000000000000000000000000000000000000000000000005c" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000021e19e0c9b102f93bb0", - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x18d96139c7e5ebed33c1dcef805f02ca611ca80bb132169d411007c8b4d4d654" + "0x00000000000000000000000000000000000000000000021e19e0c9af62cbb236", + "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2", + "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" ] state = [ - "0x0c77bf4c89940f917c1217a13ac86017dcdde1a5ee98c5bb430e651b905683b9", - "0x0ecb9ec3eb7eb81eeb5a691167a965a033bce02d845ac8a2feb8f5776ae8fd8c", - "0x2af2576a0bd8ad1889a14910de4a3d568df46fc8c239488315ba2c00554a7938", - "0x0629b1095bf45777cba95efd372c6aa521851b843df2bff16e5edf5ed499fbd5" + "0x2881762ad9363d07164b4adcd8fba0d34cac7324b5e6039eeb82a0daa1d7e98f", + "0x041e60c8e1d3f54f35a87c0b87f1a8f99d1814620b38ccc65eb74c795f795b35", + "0x17ce0454dabf60a6eb91b31bb316c45f7910ecdf748fce1b6b78af4c47c95d50", + "0x1f380d4eae917b0df150aa708ff1d825eedbebae0923e6bd7efbcc2c5b37cd77" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false @@ -1434,90 +1444,90 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000042", "0x0000000000000000000000000000000000000000000000000000000000000043", "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x000000000000000000000000000000307f5b8d76dd2a6510221d72ef2af872de", - "0x000000000000000000000000000000000021c674ae84acf95641d459aaeebf73", - "0x0000000000000000000000000000002e1d308105f1ae6bed2310a0f6f3554c6d", - "0x00000000000000000000000000000000001645f93a33f9454bd3a48f0435ab7c", - "0x000000000000000000000000000000f9514ed6fb8f36b60052b4a7ee87b58891", - "0x0000000000000000000000000000000000236c0e98f540a52818d53063f80ab3", - "0x000000000000000000000000000000093d4fb792c433f8a3f78651fbd00154bf", - "0x000000000000000000000000000000000015fef1f8ac1fa0afe6d4b86d0703fd", - "0x000000000000000000000000000000f3f1d5db5cd86529eb4be793a1c09c90d0", - "0x00000000000000000000000000000000002b1c0b1b6e6ff40a1db0d56b92e48c", - "0x000000000000000000000000000000c87448ac0aa0ac0289540732c0be55a27c", - "0x00000000000000000000000000000000001d4b1bb612a4e03e99d6a34eb8a19c", - "0x000000000000000000000000000000653b6a66eb5f828a305feebcc32e6c4991", - "0x000000000000000000000000000000000022cb8bb34f30da3b2cafa6bed058d2", - "0x000000000000000000000000000000cf167ec9502aef45bcc3e9532e0c35213d", - "0x0000000000000000000000000000000000089988b259ea79bc7e5279a584fcca", - "0x000000000000000000000000000000559ea843cb44625df56c97d84fd431af08", - "0x000000000000000000000000000000000007419e3e6e97977939958acc8a257a", - "0x000000000000000000000000000000a5db67870c6c3fcc896f2837fe8861abf1", - "0x0000000000000000000000000000000000104e397c72db51d5e8ef949bc4a736", - "0x00000000000000000000000000000018728c390bc83fa2ac2ecd34989b3200c3", - "0x00000000000000000000000000000000001fc6ff9c5f27febaa9bfa3efa16c42", - "0x000000000000000000000000000000ace95fb022b84dd977890e6b4b6e2f02ff", - "0x000000000000000000000000000000000007d5e1c80a25150fcc9d4e5069a8bd", + "0x000000000000000000000000000000521b9d4f83c543b2d84cfdc2bd2a98fb40", + "0x00000000000000000000000000000000001339c78afbaf20ae75727c7b732af4", + "0x00000000000000000000000000000080022768f68ea22b61825c0c21bfb8ac3d", + "0x000000000000000000000000000000000015ff4c9ac04d118866917d85503b7e", + "0x00000000000000000000000000000070713038ce33770306927dd8ca492322b2", + "0x00000000000000000000000000000000002fee639887369cd3a83579202b79dc", + "0x00000000000000000000000000000061bab45392977e273d132d7cb7a44ff202", + "0x0000000000000000000000000000000000155170bb6e84f41b220e351ccccd36", + "0x000000000000000000000000000000d762b23206e8619049ccdc3d9d72db53e8", + "0x000000000000000000000000000000000027b2187681c7d7d762978a8699d1ad", + "0x000000000000000000000000000000fb6231cdcee4bf02adf80ab4f5b4e1b7f7", + "0x0000000000000000000000000000000000158ff5241a1461fb0a35fd985ec474", + "0x000000000000000000000000000000c4953b141659032c469ce6770f016b7980", + "0x000000000000000000000000000000000006920ab0aa6f66843372f54781ca2b", + "0x000000000000000000000000000000c7af0b22593cce863a4a8ca0b240d074ca", + "0x00000000000000000000000000000000000dfdc634e7b62976f6ce0549fe233a", + "0x000000000000000000000000000000c1d033ae709c039af90b2234226cb5c4f8", + "0x00000000000000000000000000000000002dc468919a1be7cbd81296c1733377", + "0x0000000000000000000000000000005d502fdc01a9736a9219cf912d9694a2e9", + "0x000000000000000000000000000000000021aafb24e110636d9df075e9bc6b86", + "0x000000000000000000000000000000a7d84e314ba33098291f60dea80b20d68f", + "0x0000000000000000000000000000000000217076933f7d213145d14d14915da8", + "0x000000000000000000000000000000a16d19f8a7acf7d489e6271afc1b954c20", + "0x00000000000000000000000000000000001c765879c0be34217b869c3b7a9a67", "0x000000000000000000000000000000e7bab6896d9724b5b46b796551dc5feed2", "0x00000000000000000000000000000000001fd93debdcf16cc93f99efd69e938d", "0x0000000000000000000000000000004b94434e1705c9bc2a4f5b2bc2a05c3c03", "0x00000000000000000000000000000000002a29d5563fd08e454dace1605a1aa5", - "0x00000000000000000000000000000001ff2ac57b1c52fd3a5589a5ef3ef608cc", - "0x00000000000000000000000000000000000ae1f6d097efb73837c888206b5627", - "0x0000000000000000000000000000006a94cb27951e584fc7f6a77c685ad6b3d6", - "0x000000000000000000000000000000000019033c84dd0600c909bb8890907b6c", - "0x0000000000000000000000000000002f797ff83a0322e549a331c3e371e42317", - "0x000000000000000000000000000000000001682d1c02a03f8a86ecf633d68035", - "0x000000000000000000000000000000264c49167f0708052d371dbd0b9db133f9", - "0x00000000000000000000000000000000000def14918ebd1ec70252b1aa4f2f30", - "0x0000000000000000000000000000005a0ea3aa1dcb16c1e378a12776139175e6", - "0x00000000000000000000000000000000002230ef6d2bbfa1e43387c54053acda", - "0x0000000000000000000000000000002eba4a74542fcfc0d0c9f20f4266c29be2", - "0x0000000000000000000000000000000000122782fec208fa2da7a3806b3f0411", - "0x000000000000000000000000000000e47cd90b2766343c427897b438440f85f0", - "0x000000000000000000000000000000000001843b9079a49fdcd73c16b776afce", - "0x00000000000000000000000000000053362ad18d8713df3273e67f27a98bc375", - "0x00000000000000000000000000000000001a78a3a8232eb885f480c958fe96b3", - "0x0000000000000000000000000000007d034f697037899c24c6eff17ec8ec99b3", - "0x0000000000000000000000000000000000237adf05233c7587b7816cc71e1206", - "0x00000000000000000000000000000083d2a090d67772f3c78797cee894b1563f", - "0x00000000000000000000000000000000001b6075b87892de831d14dba4b42ca1", - "0x0000000000000000000000000000009e67d900ce38bc0a8ba4ba574627e95535", - "0x000000000000000000000000000000000023a12ad8dc157995bee182a1984bba", - "0x000000000000000000000000000000f8611d968082bab97c4caff11d8504e7b2", - "0x000000000000000000000000000000000023747bf4d19033795b66878bc77504", - "0x0000000000000000000000000000007012d641797376834f136a3cc9239b1922", - "0x00000000000000000000000000000000000bc4036aff2fd78afa72b53d26ea9a", - "0x0000000000000000000000000000009f79a73ba8c460801141cfef6a699f52bd", - "0x000000000000000000000000000000000011c13766ad192df4ddada5b412b0e0", - "0x00000000000000000000000000000057079418ae7686eb442cc4a9e4fa08a908", - "0x00000000000000000000000000000000002ae5e170f3e228b1ea2bbcbd277f42", - "0x000000000000000000000000000000da3cef02586fd7acdb2868edec4cde83c7", - "0x000000000000000000000000000000000001e2d8a35f8d8d85af2f433537c377", - "0x000000000000000000000000000000f9e997bb1718df60f3f958a827db0eea9e", - "0x000000000000000000000000000000000021fdeb56e87b959d2e0d48dfc5517b", - "0x000000000000000000000000000000d5110e9037e70d55d6c726a7608703009c", - "0x000000000000000000000000000000000012d7b7a753bffe46b32fbf04299da3", - "0x000000000000000000000000000000d33100f3a27346c959de3636e67373bad0", - "0x00000000000000000000000000000000002ea5a3a3baec5d0f9ace2c6400d566", - "0x0000000000000000000000000000006562dea7d8149e7e1b43fc816fd8eacbe7", - "0x000000000000000000000000000000000019b679db1fbc606804a344b7c338b9", - "0x0000000000000000000000000000002cb02cc09d5c9dc19cc3a089bf6027f0c0", - "0x00000000000000000000000000000000002959370c7abaefcf98ee27bf19313f", - "0x0000000000000000000000000000001592dcd3bb305e32b40619d9135153f03b", - "0x0000000000000000000000000000000000282d2b2c5f2bf993517721fd2d2b1f", - "0x0000000000000000000000000000001acd10314f56403d936c89faaf382c46c0", - "0x000000000000000000000000000000000009b9d53924cf543750b6d278659b6f", - "0x00000000000000000000000000000094f08329658951cbed51f33549fe64ab5f", - "0x0000000000000000000000000000000000164697c899d232d842f48ce348f492", - "0x000000000000000000000000000000afd86924f1e86aa270ad8c6da8343f4a77", - "0x00000000000000000000000000000000000314a4b080634c56931653166fbabf", - "0x000000000000000000000000000000eb1246f4419815e47f1d5ae8d6dba6d962", - "0x00000000000000000000000000000000001f313c2da4433c6c54d4af0d2b2b17", - "0x000000000000000000000000000000236795d1eebaf06bfbdb1493a682637d52", - "0x000000000000000000000000000000000011b0eeaa05e3097cd5da0a34873236", - "0x000000000000000000000000000000dad932f24983ce4571cd0ead65267e8e7b", - "0x000000000000000000000000000000000015240dde6f5f8790cc86a5fc2fb794", + "0x000000000000000000000000000000c605d0398cd0b2427c3c9c461bb8429b53", + "0x0000000000000000000000000000000000196952a7e4218337f71f1105909c3d", + "0x0000000000000000000000000000006cae2999b90655b65fb2612f6692e2adf9", + "0x00000000000000000000000000000000002dacb567e258b182d2aa0f0c2673e9", + "0x000000000000000000000000000000fa23b5130fb864af7b45be9abdfee90f81", + "0x00000000000000000000000000000000001b5f38c9b239993607e4bd64e1ec0e", + "0x000000000000000000000000000000bdd3479bd2de629e84156d2c0af3b2ef68", + "0x00000000000000000000000000000000001da27039bf77a359382fc0c56838d9", + "0x000000000000000000000000000000e7039a59b6348c66427f2c08e1b4a38415", + "0x00000000000000000000000000000000000d34616a91f79d7613bbfb94ed0d38", + "0x000000000000000000000000000000ffa72e0f4b9857447bc99abb6f83d42647", + "0x0000000000000000000000000000000000193a8bcc5d47c5f43e6cc581ac0eca", + "0x000000000000000000000000000000609f79166c04a86fef382541bd1c5ab9ee", + "0x00000000000000000000000000000000000db5fa9f0bd6341244daf0d59d7b4d", + "0x0000000000000000000000000000009d97a8c8a3a70077827e2478347af83d11", + "0x000000000000000000000000000000000014360d2aa26b853c45cc56f3ee4d6c", + "0x00000000000000000000000000000037daba742d12aec1b27f76d1d8eb3a1604", + "0x000000000000000000000000000000000010c19122bb08b25208f5814a2d9813", + "0x000000000000000000000000000000be2d452540b2e3de92b42c11ac9e70887d", + "0x000000000000000000000000000000000003735685535ef50a290d4f0f8ed48a", + "0x000000000000000000000000000000c3aa132938397ac9298dc4c631930c2bc1", + "0x000000000000000000000000000000000006842deb4d313e699e597b702ee51f", + "0x000000000000000000000000000000de052dfd6c354afef2580b20acf839687b", + "0x000000000000000000000000000000000029a034fd3752a404c9c1d34be06c6d", + "0x000000000000000000000000000000d1760e3a79672913c859049adbc670838c", + "0x00000000000000000000000000000000000e49d5809084137fc7bc71ba11ae4c", + "0x00000000000000000000000000000018da3c85d452ca91d4c8ae233f3d0ca0cb", + "0x00000000000000000000000000000000002c681b077e84d38c1602e9f572a11b", + "0x000000000000000000000000000000c3d40a67c4190b20133a492d8f79fbbc55", + "0x00000000000000000000000000000000002974c1b596b95212c42728a3f49557", + "0x000000000000000000000000000000f79eef4973eea5c82bd426545a37c7ed2d", + "0x00000000000000000000000000000000001ba2cfcf9b6a183c6c6657d58479ee", + "0x0000000000000000000000000000000e0432dd54f4992443978a547a3553f2bc", + "0x0000000000000000000000000000000000257ed05f3910112f34e3a6132c0f1a", + "0x000000000000000000000000000000febd659aed367ed7407b257704072b88ae", + "0x000000000000000000000000000000000019758526889ecf9801abc067968aeb", + "0x000000000000000000000000000000a3f503fe809fcdea4f4c89790ee9476c07", + "0x0000000000000000000000000000000000054ca4d7b7aef2ff8d05cd828cc7e8", + "0x00000000000000000000000000000082e978a687f226b9d9f6c475d76ad7d0f2", + "0x0000000000000000000000000000000000170d4cfd2d18c54304a6d903bf1a0f", + "0x0000000000000000000000000000006fa34ea411efa79fa5ead29b0692bf2b77", + "0x0000000000000000000000000000000000019bf1e5985e2e1a266a8864a7a581", + "0x00000000000000000000000000000024284a91b4778943659263b48bbdb337ea", + "0x00000000000000000000000000000000002fb6187962b45dd22bcb08a54d2f9f", + "0x0000000000000000000000000000000eded336e987654dfa087268cadec1569b", + "0x00000000000000000000000000000000001f1b47740cf8487a80c45c4609935b", + "0x0000000000000000000000000000000eee28b9fc49c81a286626062375e866a8", + "0x000000000000000000000000000000000011e1f7acbb598eb1167aa3ae001439", + "0x000000000000000000000000000000afd2eac7b63630be51019a6bf88b5d2641", + "0x00000000000000000000000000000000002488ee8880b7c23776f33c1f1078eb", + "0x0000000000000000000000000000002275b7c90182400ba595c7685146405aad", + "0x0000000000000000000000000000000000263a1385b1d49c3dbac85c2b943a14", + "0x00000000000000000000000000000099b6b8028401bdf9add9b6a3e9f3f16f1d", + "0x00000000000000000000000000000000002c92c0237e464563a30456b3e0b917", + "0x000000000000000000000000000000f9cf12c30ec2f4e80b51e603a07fa28f2e", + "0x000000000000000000000000000000000025f210d401c32dcfdd334443a6745a", "0x000000000000000000000000000000e97fb648fc1ff99f9988a73de181e0de22", "0x000000000000000000000000000000000024cae2d5d2c4daefe858889eeb01b8", "0x000000000000000000000000000000e072297115d09425f5612d626dc82f1002", @@ -1538,20 +1548,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000001567f3f96a0c53ad32d96de09ac1cae126", - "0x000000000000000000000000000000000026baae0f0d8505282894f5ada72223", - "0x00000000000000000000000000000011679c6c956cae3c86d399a00bb3aa46de", - "0x00000000000000000000000000000000001bd9f4cdafea960e099cb8afad8a8a" + "0x000000000000000000000000000000df09a35ec29cb8b8e65d374b7ee4b958e4", + "0x00000000000000000000000000000000002a4f5048b3b3a1f217328f560fbb64", + "0x000000000000000000000000000000d05ec9df459e02b89c2805cd568a2f3522", + "0x000000000000000000000000000000000015775347bfde9959a7eeca6a09dded" ] -hash = "0x14caa5816578cf92f252792e62335331c3c7b3aba456597e9d2ec7131722bdfe" +hash = "0x2ef0677eced88cf91ef001e856c0e3e649ab915b579ddcede447fa49fcbc0e2c" [inputs.previous_rollup_data.vk_witness] -leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" +leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" sibling_path = [ - "0x2ef0677eced88cf91ef001e856c0e3e649ab915b579ddcede447fa49fcbc0e2c", + "0x14caa5816578cf92f252792e62335331c3c7b3aba456597e9d2ec7131722bdfe", "0x0f410eb6e69a2497aabc2f1686a1bdf90876c704621e028ec62c0341f74560ec", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1a8c157a307350dc57f06625e220057348008c02bc50c04154826acb1153bb77", + "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml index 0edcd5a8bce7..fd5770040dfa 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml @@ -4,63 +4,113 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x00201496223ba670899c10fa0b2a2d65993893162620515ed5d2f6fc25dba2d4" -vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" -protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" +proposed_block_header_hashes = [ + "0x007f01080db85061d9a8f4c700757c51a956538d32ba6c0f289b5222b00f9902", + "0x008cd6b70a977ddb5b158d0fbef9040329d8eadf7f5699be23d72060db634191", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" +protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x01f3f9528860628e391a0775aa92501d300cbdf884e49318747dc9c8c4be2670" + root = "0x15b96c203874595fa1e623ce8e239e955f35474630ab7ecefaf9186f6de51778" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x00e90e8835f281e4326e5f50c81dd69a65415ac31e4802a55275ebe02627a7e4" + root = "0x2654086cd6d89561f4e67ddcb44940715de36e827be817fbc8617a2e0c02e0d4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784b5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f25" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784cd" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fd6" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000000000093bd180" + value = "0x000000000000000000000000000000000000000000000000000000000a524180" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000000000401a4e7a" + value = "0x000000000000000000000000000000000000000000000000000000004b3112b2" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -340,19 +390,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x2b7654006d02c5805989e047a53e97e597d755669d482351474ac619e5250220" +z = "0x001841f73fb11082921a49c10432e66ccccdd5607d6da1f5b02c83db3abdfcfd" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0xa7571bf41cb3bbba9185704bd8bc51", - "0xc3ee8f31759634c8598d5fc28ace3d", - "0x4135" + "0x1c60371acabfe17d5bde1152a6d5bf", + "0x182f215cd91016a553edacfe0899a0", + "0x603d" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x0099b696d1aac59ac1d4bb75c8baba02ca72d3b973e9cedca6b53359a997df48", - "0x000000000000000000000000000000e3e7515687b11fc6178923f9b1f5de67a7" + "0x008b4729283581281f60e84226de54260b2f4b54020a984f38dbc105c8ecd367", + "0x000000000000000000000000000000ddc329f725352424fa4d448a72e3c84f5a" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -389,19 +439,19 @@ z = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x02a57e7dcfee562691e9f705a27dffc2411694a45dd299cc0e46c2a98323f606" +z = "0x2340a66742e66b43f5ecad8af2115647f1701c8595468cff31373853ad0cc86c" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0xd7ec2deb3f32934971e36ab8690cee", - "0x306b16f20e668e5070e903183314cb", - "0x339b" + "0xdcde22002fd28444ac3319fe5b97f7", + "0xfb95b391f75023e9656ae83f9c1831", + "0x2238" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x008abf61373dd489794229987b3f1e6549b102719f023a973ab284074469c7cf", - "0x0000000000000000000000000000009c8747b18cf207a60939988ca7a69d327c" + "0x0080fc98f548e26e38084ad23a25b1756ff9a218d289f7ae7404f5d35017fad1", + "0x0000000000000000000000000000000e43b628bf9cc36e41a23048021d58a084" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -3232,144 +3282,154 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000200000", - "0x00000000000000000000000000000000000000000000000000000000000003f4", + "0x0000000000000000000000000000000000000000000000000000000000000424", + "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000000000000000000000000000000000000000040a", + "0x000000000000000000000000000000000000000000000000000000000000040b", + "0x000000000000000000000000000000000000000000000000000000000000040c", + "0x000000000000000000000000000000000000000000000000000000000000040d", + "0x000000000000000000000000000000000000000000000000000000000000040e", + "0x000000000000000000000000000000000000000000000000000000000000040f", + "0x0000000000000000000000000000000000000000000000000000000000000410", + "0x0000000000000000000000000000000000000000000000000000000000000411", + "0x0000000000000000000000000000000000000000000000000000000000000412", + "0x0000000000000000000000000000000000000000000000000000000000000413", + "0x0000000000000000000000000000000000000000000000000000000000000414", + "0x0000000000000000000000000000000000000000000000000000000000000415", + "0x0000000000000000000000000000000000000000000000000000000000000416", + "0x0000000000000000000000000000000000000000000000000000000000000417", + "0x0000000000000000000000000000000000000000000000000000000000000418", + "0x0000000000000000000000000000000000000000000000000000000000000419", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x00000000000000000000000000000000000000000000000000000000000003da", - "0x00000000000000000000000000000000000000000000000000000000000003db", - "0x00000000000000000000000000000000000000000000000000000000000003dc", - "0x00000000000000000000000000000000000000000000000000000000000003dd", - "0x00000000000000000000000000000000000000000000000000000000000003de", - "0x00000000000000000000000000000000000000000000000000000000000003df", - "0x00000000000000000000000000000000000000000000000000000000000003e0", - "0x00000000000000000000000000000000000000000000000000000000000003e1", - "0x00000000000000000000000000000000000000000000000000000000000003e2", - "0x00000000000000000000000000000000000000000000000000000000000003e3", - "0x00000000000000000000000000000000000000000000000000000000000003e4", - "0x00000000000000000000000000000000000000000000000000000000000003e5", - "0x00000000000000000000000000000000000000000000000000000000000003e6", - "0x00000000000000000000000000000000000000000000000000000000000003e7", - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x00000000000000000000000000000000000000000000000000000000000003e9", - "0x00000000000000000000000000000000000000000000000000000000000003ea", - "0x000000000000000000000000000000aa1b7b17c3a04a3742484aa7103c442748", - "0x0000000000000000000000000000000000101210d27fd370a15d89a94a20e7b8", - "0x00000000000000000000000000000037190764b66adda774af491a0713fd1fbf", - "0x000000000000000000000000000000000021711a87f2c3a94ad42336e758668e", - "0x000000000000000000000000000000f61525b7677a16977b0f666329e27ca303", - "0x000000000000000000000000000000000029a70bc6c912c42c6632547233d16c", - "0x000000000000000000000000000000bc92bf69fae1f1757651ca9f782defd9bf", - "0x000000000000000000000000000000000002ab36c0e5c4888b13c8cdf0478c4b", - "0x0000000000000000000000000000004ed9bd59efa237d36f7dd3e9561927e2e4", - "0x000000000000000000000000000000000024a6187801906a0579a7ee0fc215cf", - "0x0000000000000000000000000000004db7454fe93a5443ad8f07f827775a1b5c", - "0x0000000000000000000000000000000000271eb4b59361743732b9d8e2b08176", - "0x000000000000000000000000000000ba22968bf8aedda0643e29bd215b2675b1", - "0x00000000000000000000000000000000000a7d0062d77524ab9ca1957f0f2199", - "0x000000000000000000000000000000684a23e4ff8ca2ff387a2dca3d24988e70", - "0x000000000000000000000000000000000020bc0ef3b9847559cb95a7d48d61cb", - "0x000000000000000000000000000000b48b9ab8256f2434cbc7a61c12d468d78d", - "0x0000000000000000000000000000000000108df94596adb807e5dd410011b56e", - "0x000000000000000000000000000000df450ea190440b36a06f032e8f40d2bee2", - "0x000000000000000000000000000000000014b399fe402b070e641d05b6e59416", - "0x000000000000000000000000000000b416eb079decfe2bd106d91816ca315ca9", - "0x0000000000000000000000000000000000165680282075ed17bf75adf2f6e1ac", - "0x00000000000000000000000000000016783295e8e7d614062b22f2dda8378487", - "0x00000000000000000000000000000000001663163a1eaeaa31923c85acfcfe27", - "0x0000000000000000000000000000001302f251b4dac62841ae1bd13df945d49c", - "0x00000000000000000000000000000000000f622837c4f0df5a76db7277b6cf69", - "0x0000000000000000000000000000008eda01b03bfa9b49c349dd7dba73bd4838", - "0x0000000000000000000000000000000000301757bba30d67e713f1b362c965f9", - "0x0000000000000000000000000000005e6348b0aad5a035d817a1bb1b22314055", - "0x00000000000000000000000000000000002f4611dc1999afab02dd1a2df7ac04", - "0x0000000000000000000000000000006934eaac5dbc8d0a78edd7b2bdacebccb1", - "0x000000000000000000000000000000000030610664a0009a34ee34c614ea6e6e", - "0x000000000000000000000000000000a642801238ed7dd300299312d7cdd14901", - "0x000000000000000000000000000000000011118a315a1512dad16d8994a8bfe1", - "0x000000000000000000000000000000b3acceb8ce08f3dd5888b9a615773543ef", - "0x000000000000000000000000000000000006818c0f327b403e3b45c9a1690db8", - "0x000000000000000000000000000000d5ea6bfbaa1f21cd541483474e86a585f9", - "0x000000000000000000000000000000000024d4e72ebae7934bf2c45a07f38ed1", - "0x0000000000000000000000000000004cb1e04164cb45fb1f1f8f8a5b394da6cd", - "0x000000000000000000000000000000000018eef1bff7eb36acafc586e2bec614", - "0x000000000000000000000000000000deaecd8222763ff4bc9e73ef0fef929611", - "0x00000000000000000000000000000000001b1a8cdab670089e02d6e6d633acb2", - "0x000000000000000000000000000000f66160993b58768dafff66985ebad56d08", - "0x000000000000000000000000000000000012408b14ff4845e5ffdb38b4bb2b04", - "0x000000000000000000000000000000dd989ad4c7560d20c6488c68925bade271", - "0x000000000000000000000000000000000024c2a1878f45247e6669f2ba1a7785", - "0x000000000000000000000000000000815a03109a90401969b44f41c92043cb5d", - "0x000000000000000000000000000000000013ea56751c6be5fa4e3e72534192ad", - "0x000000000000000000000000000000d37dd5e6dfc727d6e6b8747934c6db12d7", - "0x000000000000000000000000000000000008be6d61a33d277fefae81fdf208a9", - "0x0000000000000000000000000000001b2196d5d002049454e63b8cfb63ba7486", - "0x000000000000000000000000000000000011971118c78511fc81b02ac0c457a7", - "0x0000000000000000000000000000003d8e286a42af68de0eb68fa01e62d7a21f", - "0x0000000000000000000000000000000000023066faf67f7382bb0a799ca9735a", - "0x0000000000000000000000000000005c66a80c680f53ab4310a3486f0e97c211", - "0x00000000000000000000000000000000002daca59e902f27b13b8ea067eb4867", - "0x0000000000000000000000000000001bf80582b3f926840b345e5f53037959b0", - "0x0000000000000000000000000000000000092d15f16779b73c636a11ba3812b8", - "0x00000000000000000000000000000068e0d39911b22ff1648afecf24e72a10d0", - "0x00000000000000000000000000000000001dedcc869a77574f7d991317ab49ce", - "0x000000000000000000000000000000f23ddab1686160440b960a2d40a99921b1", - "0x00000000000000000000000000000000002514f172323d775da7ad7f912acd94", - "0x000000000000000000000000000000823093caa141fce83d1bf4cd02ce398bbd", - "0x00000000000000000000000000000000001601e74cc7d1f39aaca0ed6474e043", - "0x00000000000000000000000000000042d9586c50d4590050ad343e0443734282", - "0x0000000000000000000000000000000000088601a2d37d64f1210fd60901a9fc", - "0x0000000000000000000000000000001f30e9c4c996e60e963e317bf7f17e1de3", - "0x000000000000000000000000000000000013eb7c998737555e12b1cb10bbe459", - "0x00000000000000000000000000000065ef8f14a3630d3b4fe210aca34512626b", - "0x000000000000000000000000000000000016598ef956e9913a8021af9a50486f", - "0x000000000000000000000000000000155dceeb2f27649da7220c01d9cdee06bb", - "0x00000000000000000000000000000000002383e426734a97958e16299c34c17a", - "0x000000000000000000000000000000300a5d5eec93dc7d176512b45461218511", - "0x000000000000000000000000000000000026b945a6a5a1e7d8a4002c38785111", - "0x00000000000000000000000000000056b7f719089716fa59d19740acfdd01ce9", - "0x000000000000000000000000000000000018804ccab093985fdcf189a17b7fee", - "0x000000000000000000000000000000afc63d59a2e8acc44cb0d0fe4602e83007", - "0x00000000000000000000000000000000002cc60c71eb1acb3b57c54b7e27c1ee", - "0x000000000000000000000000000000dbd647490fb052ec527ceb50fb701e4bc3", - "0x000000000000000000000000000000000016ed8b330342d7d12f13a64e5ae347", - "0x00000000000000000000000000000062fc3cdd19aaad1b98b246e4d0c1f74193", - "0x0000000000000000000000000000000000155f0a8ed047b1eafc6c300d634d41", - "0x00000000000000000000000000000085021877edcebcacb577005ec1be1d8251", - "0x000000000000000000000000000000000014b62e986125d889414e789b4481e5", - "0x00000000000000000000000000000050190beddf49f49ca143550370ff05a583", - "0x00000000000000000000000000000000002d26b502043c651f1d43ccd1cd3d8e", - "0x000000000000000000000000000000771a627d9293261b513e8334917822952b", - "0x000000000000000000000000000000000003287962ec49d7525f6a0478615b50", - "0x0000000000000000000000000000008119e229e16a072dadfc501e845de8636f", - "0x00000000000000000000000000000000002b71a8d62325e84edffb93822dffe6", - "0x000000000000000000000000000000b70344374476bd9f14c5a4d2a97ab26256", - "0x00000000000000000000000000000000002d9697913326f6140c0941651329ac", - "0x000000000000000000000000000000246089daba55a613a8e0532c54799b527e", - "0x0000000000000000000000000000000000051e22e4eeb2054a4973fa2dd38714", - "0x000000000000000000000000000000dd9fb6025de99f4710520420e9fa24b07e", - "0x000000000000000000000000000000000010c6272a2822c97cbcbb832d198c40", - "0x0000000000000000000000000000008694bae0220cc8de0f5c8d971d2df21f6d", - "0x0000000000000000000000000000000000241d72b3b591ca47827fa5aad3814c", - "0x00000000000000000000000000000008e54f90cfd15792dbb6419adbaf2fb714", - "0x00000000000000000000000000000000001d8508ffd1e727e45eb477de78e8eb", + "0x000000000000000000000000000000000000000000000000000000000000041a", + "0x000000000000000000000000000000000000000000000000000000000000041b", + "0x000000000000000000000000000000000000000000000000000000000000041c", + "0x000000000000000000000000000000000000000000000000000000000000041d", + "0x000000000000000000000000000000000000000000000000000000000000041e", + "0x000000000000000000000000000000000000000000000000000000000000041f", + "0x0000000000000000000000000000000000000000000000000000000000000420", + "0x0000000000000000000000000000000000000000000000000000000000000421", + "0x0000000000000000000000000000000000000000000000000000000000000422", + "0x0000000000000000000000000000000000000000000000000000000000000423", + "0x0000000000000000000000000000006f2c1a5f17e10178fd03876b3927d8d590", + "0x0000000000000000000000000000000000038c6a1882482227deae88837b904c", + "0x0000000000000000000000000000009f8c32eaf66be9b90ef7ec59051222553d", + "0x00000000000000000000000000000000000d160053e69c78a3596d94e78c94b5", + "0x000000000000000000000000000000eab66dcccbfa174ba0bb4b06f9f17f9fdb", + "0x00000000000000000000000000000000001ff9367cbe604913def51c62d28162", + "0x00000000000000000000000000000064a7ea628a1d020099320bdfc3bbadbc6c", + "0x00000000000000000000000000000000000c9c4babd758fb244ab625e1911171", + "0x00000000000000000000000000000057a3289267c296e58d5cd0d9b82fa3ebab", + "0x00000000000000000000000000000000002c6d00f970a6739a2cd5ae7b97fb27", + "0x000000000000000000000000000000a3990aa32999e7b89aca4c960f1afcc769", + "0x0000000000000000000000000000000000145ee11723c05fea68b17466f55b69", + "0x0000000000000000000000000000002480b02b6d18c475b4e311d017623ccad2", + "0x00000000000000000000000000000000001b3ab53eddfcd6f19263e4cbebe70a", + "0x000000000000000000000000000000a750128d42194ced60b694fec0a56cdfb7", + "0x00000000000000000000000000000000000803e75a27708af6b2248a6d809f63", + "0x000000000000000000000000000000cd6a1b310426e829174a696fbdecbf7f3a", + "0x00000000000000000000000000000000000f00d69b12523082cfbaa9836a8ba5", + "0x0000000000000000000000000000001314e9ff4cfd67a18c1150604e4a685ab4", + "0x000000000000000000000000000000000021dc7eaf4968e0df2bf16dcc714e77", + "0x00000000000000000000000000000021fe9475c92e443e605fc459cf5d49deea", + "0x0000000000000000000000000000000000055257a691bbcd3cb073eb7113f751", + "0x000000000000000000000000000000d425f9ca1bdd28463d5c859c3bf2f56e85", + "0x0000000000000000000000000000000000128b6cd6eca6a4263d051b9bdf0dc8", + "0x0000000000000000000000000000009eed1a82f362a2a849e30ca0f07978c836", + "0x000000000000000000000000000000000013a2ac032c0d52256af7c1a95feba6", + "0x000000000000000000000000000000c7f1ab3a9d5e56fa19af7d20fdeb3b9ef3", + "0x0000000000000000000000000000000000303115523841b191d7bfdcc5ac091a", + "0x0000000000000000000000000000006105d709a56662a679d3867e6a4e1b1dae", + "0x00000000000000000000000000000000000a2b1e72deff551e043d17eb301add", + "0x000000000000000000000000000000e8e4b6f1166fbefb571cfc9d1a365364a6", + "0x00000000000000000000000000000000000512a6d47a1e558b9738df7c2100b5", + "0x000000000000000000000000000000273ac8fd5f1d4f68e0a572fc18dbbc70d0", + "0x00000000000000000000000000000000002b28fcd301311a0abaed857561e843", + "0x00000000000000000000000000000032e240d36b086891dfaa8318cbcfd86a40", + "0x000000000000000000000000000000000024a0d0bbbaff12ff90ca32af1c156b", + "0x0000000000000000000000000000009b3ca336d5abd053d1d5b55ba29446bd79", + "0x00000000000000000000000000000000001de19f7805815091fc1bf489db091b", + "0x000000000000000000000000000000ee5b251e834fd6241ee53f6e665a081228", + "0x00000000000000000000000000000000000b86276c537a5b5d937fcdee838038", + "0x0000000000000000000000000000005da475a297452bf3a0453dd6301e9f053b", + "0x00000000000000000000000000000000001a79686e5d3bf13dfde124155b3501", + "0x000000000000000000000000000000a8fb46a3d217dd183040c0a420f54649fe", + "0x000000000000000000000000000000000015108dca36800442db63806f1c9b19", + "0x000000000000000000000000000000af4859dccff5f93286b74860b655c71376", + "0x000000000000000000000000000000000005a5ce520320b866c6d37d4962af24", + "0x0000000000000000000000000000007db1b957341c2a7496ead2d49066a0b331", + "0x00000000000000000000000000000000001854c7b36211f9e9b65d5a800fb604", + "0x000000000000000000000000000000da6d43e2c508510d3ebd0f7e7a91e58a40", + "0x000000000000000000000000000000000004e91f8363e7f2ec8a6ae41aaa0e8a", + "0x000000000000000000000000000000e5ca598eb67bf08a0e88b7b8c7e3ec23ed", + "0x000000000000000000000000000000000023f8870979bebb93dcaae39a9fe880", + "0x0000000000000000000000000000007188b11478d31faf9f3f53c79b0b4eb007", + "0x000000000000000000000000000000000023c01e14e65c5bc0adc136bbd36f9a", + "0x00000000000000000000000000000041402cc166246548658a916b809e297c32", + "0x000000000000000000000000000000000017c729281b78764f3035c03da9c41d", + "0x000000000000000000000000000000f5eabc1b8b41f53712ddbd594e27d7cbdb", + "0x000000000000000000000000000000000011b7af6b4d7f687a65dd1dae5b9e9c", + "0x000000000000000000000000000000e391c21e04488af8a1abdfc3c9e40c8b3e", + "0x0000000000000000000000000000000000183f706f268a264f93c255fd3ea7ec", + "0x0000000000000000000000000000008637553d54b02636b2855901661dd89da2", + "0x00000000000000000000000000000000000cdc7c75092651d411275a56d3a7a0", + "0x0000000000000000000000000000003bed8d5d87019a541af2ea960ce5d73c8b", + "0x000000000000000000000000000000000016b79cf274c4e13cb4b14cfb205ea1", + "0x000000000000000000000000000000f0dc25fd64cdc1840d8b42d03578b67b8b", + "0x0000000000000000000000000000000000143f69cdbc51ee6de5d0a214d007ed", + "0x000000000000000000000000000000e7663bcada731239fd1d8a9bf4ac43b128", + "0x000000000000000000000000000000000019d1f073d0629455a80a12736b922e", + "0x0000000000000000000000000000006e08f35a3702f7c44d4ef0c3235a229443", + "0x0000000000000000000000000000000000260673c9ce86a3dc158a4c82e30aca", + "0x0000000000000000000000000000002efe53bd197aec991d4304d3d7d1a694b7", + "0x000000000000000000000000000000000017ab46824df67b87ebbc5a7c3b17d4", + "0x000000000000000000000000000000db62d0db94f203c8ab06500512bbcd5476", + "0x00000000000000000000000000000000000743695dc78ee45319540d30f9b102", + "0x0000000000000000000000000000005fcadc6ef378ca26afec63e4d13df68135", + "0x000000000000000000000000000000000029c5af5b83ec224bc453f30fa69391", + "0x00000000000000000000000000000026972e0e925c8bb0325896dec74149a72d", + "0x00000000000000000000000000000000000a17c59d59622ab3aad866ac318028", + "0x0000000000000000000000000000004c00fe576a546165a4b1467ff95195727b", + "0x000000000000000000000000000000000024bc3d77af740d09edec2c3a1262d4", + "0x000000000000000000000000000000193d373e484e5877e340115ba577796d6e", + "0x000000000000000000000000000000000027d1fc6b31099eb8a6780c1da6833b", + "0x0000000000000000000000000000006faa0399cb92977e2c9c391e252dafc060", + "0x00000000000000000000000000000000001f68e275c8b0575ef239b54178c65a", + "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", + "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", + "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", + "0x0000000000000000000000000000000000230b997570d1f85ae65a57bb57a7d0", + "0x0000000000000000000000000000000bc60b4ea3525f05223875c1af3ed2b02d", + "0x0000000000000000000000000000000000236868e5e41937ed2cdc41de55f10b", + "0x000000000000000000000000000000249541e175626917b9aaedb0e2915d4177", + "0x00000000000000000000000000000000002fb85434d64a786207f332f20277da", + "0x000000000000000000000000000000aec46500b248445db79f52d6ed7b30158b", + "0x000000000000000000000000000000000002321694c1a17469bdd178eafdfa6e", + "0x00000000000000000000000000000023fd9365c6a81758f239e73dee60348b69", + "0x000000000000000000000000000000000014cbd4ad9a23e8adbaa2eb703f2801", + "0x000000000000000000000000000000a1dd8f964e4f1c6a0c2c1407da434a5d2f", + "0x000000000000000000000000000000000018ee0334d49c017b30c8e7656c679f", + "0x000000000000000000000000000000f1571f393c77481ab166deb9cc943c32f7", + "0x00000000000000000000000000000000002f977fa69325d670afb3b6523af5c6", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000d864666527eca244d69734ba80e73bcdb", - "0x000000000000000000000000000000000011aa91c0c4cd61b4e91da9c1239015", - "0x0000000000000000000000000000000f4a62e96721b3c00128e4dc32d43ddfb8", - "0x000000000000000000000000000000000003156b792d64dc6f7486da727f75f4" + "0x000000000000000000000000000000d6451a224359e4510a9e02c50b8d158c52", + "0x00000000000000000000000000000000001b42817827c52d29eff99a39666a03", + "0x000000000000000000000000000000ef96661fcfffe2e9229066de0840009ccb", + "0x00000000000000000000000000000000000ded6ee6ba8aaebe01db4735dd2227" ] -hash = "0x173c68eef542acd2471dd676f9e497b8812888dac95814a77223a129cb3a2110" +hash = "0x1ced82df3d28148a6a3e5932a3e53a59ff4586330848598468395247ff3d6816" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000c" sibling_path = [ - "0x0fa4b5c933ef8d289e48a82dcff5d3c51bc8399a1c1c224d3a2aa996095cdb49", + "0x22ba62216a3bf8ded6a6dc7a6f8c764d51d644b90d9777fa002d146e7b2fe83c", "0x0a60cb44548a4dff391b54c00c5c4d8a0e5e2c3bd8382d0681bfea37b8b62284", - "0x0a80e4c3fa91f16ab6e479a924b71ed3d9b192794ce5744116b534a38f60e8fa", - "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", + "0x249e51fc196c78b39e44c75f2cd9bb14e5841d3ec9e6c4354257673559a0c3c2", + "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -3377,57 +3437,107 @@ sibling_path = [ [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -vk_tree_root = "0x18c54e1814ecadeffcd11feed9049f02d31148f4457ddcf84e4d580bbc5ccb0f" -protocol_contract_tree_root = "0x2098b90e2b21f02ad7a1fc6afcf944ef3685236caeb015b51a502471c492cdfb" +proposed_block_header_hashes = [ + "0x0056f0be48311f2adc146bd4b44cf33f533fe8f15e35a8442db01df65cd47424", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" +protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x00e90e8835f281e4326e5f50c81dd69a65415ac31e4802a55275ebe02627a7e4" + root = "0x2654086cd6d89561f4e67ddcb44940715de36e827be817fbc8617a2e0c02e0d4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x1f68fd848346dc402fee0ffe33b36502ba5fa266da5e388c27f6597e38700ffa" + root = "0x1ca09ee30647c33c85fabf3888e16716ad663338352387ed22471c3d14f9f62a" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784e5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f55" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000145a" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001694" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d2ad2ca3" + version = "0x00000000000000000000000000000000000000000000000000000000d349f245" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x00000000000000000000000000000000000000000000000000000000680784e5" + timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f55" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000145a" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001694" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x000000000000000000000000000000000000000000000000000000001721ab30" + value = "0x000000000000000000000000000000000000000000000000000000001be37338" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000ae805ea316df95bb6095761b1b231b55b7329c87" + inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3713,19 +3823,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x11c3bc490c1d975322df4fa8a2753e8e825cb51ff0e4ce8f200a61dc5b1e5da1" +z = "0x2267a5ab920dd8ce1c19f3ef6a875c273df6eed2b7fac0e75103da7fc05a8ed4" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0xe5d4e33a5778976ed1771ff3f44de8", - "0x69dd2206f24f9a8e74410bb4221995", - "0x3451" + "0x29e213c2b239c658307376b6edae9b", + "0x10f9e0d4577b124b73416989515d5f", + "0x10a5" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x008c9fc22717396feb181e1a89648ed2a4ebc1b3793f580ccf083ac162d821b8", - "0x0000000000000000000000000000006b7b31b731d76b1337159211ed6039af36" + "0x00a51561616d7f4f6826bd6c6331819c75a7a0210c714e6602173aeec9867ce6", + "0x00000000000000000000000000000098611fa5e18539ac5584cb76aef93f970d" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -6605,144 +6715,154 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000400000", - "0x00000000000000000000000000000000000000000000000000000000000003f4", + "0x0000000000000000000000000000000000000000000000000000000000000424", + "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000000000000000000000000000000000000000040a", + "0x000000000000000000000000000000000000000000000000000000000000040b", + "0x000000000000000000000000000000000000000000000000000000000000040c", + "0x000000000000000000000000000000000000000000000000000000000000040d", + "0x000000000000000000000000000000000000000000000000000000000000040e", + "0x000000000000000000000000000000000000000000000000000000000000040f", + "0x0000000000000000000000000000000000000000000000000000000000000410", + "0x0000000000000000000000000000000000000000000000000000000000000411", + "0x0000000000000000000000000000000000000000000000000000000000000412", + "0x0000000000000000000000000000000000000000000000000000000000000413", + "0x0000000000000000000000000000000000000000000000000000000000000414", + "0x0000000000000000000000000000000000000000000000000000000000000415", + "0x0000000000000000000000000000000000000000000000000000000000000416", + "0x0000000000000000000000000000000000000000000000000000000000000417", + "0x0000000000000000000000000000000000000000000000000000000000000418", + "0x0000000000000000000000000000000000000000000000000000000000000419", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x00000000000000000000000000000000000000000000000000000000000003da", - "0x00000000000000000000000000000000000000000000000000000000000003db", - "0x00000000000000000000000000000000000000000000000000000000000003dc", - "0x00000000000000000000000000000000000000000000000000000000000003dd", - "0x00000000000000000000000000000000000000000000000000000000000003de", - "0x00000000000000000000000000000000000000000000000000000000000003df", - "0x00000000000000000000000000000000000000000000000000000000000003e0", - "0x00000000000000000000000000000000000000000000000000000000000003e1", - "0x00000000000000000000000000000000000000000000000000000000000003e2", - "0x00000000000000000000000000000000000000000000000000000000000003e3", - "0x00000000000000000000000000000000000000000000000000000000000003e4", - "0x00000000000000000000000000000000000000000000000000000000000003e5", - "0x00000000000000000000000000000000000000000000000000000000000003e6", - "0x00000000000000000000000000000000000000000000000000000000000003e7", - "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x00000000000000000000000000000000000000000000000000000000000003e9", - "0x00000000000000000000000000000000000000000000000000000000000003ea", - "0x000000000000000000000000000000c91b09ee4477cad93086589015c19d664d", - "0x000000000000000000000000000000000021255915f66a1fb1c0c45527c0d0b0", - "0x0000000000000000000000000000007f29a552af1d2e40f80e877018051689b2", - "0x00000000000000000000000000000000002a06e2eb9d9e03114039334173bbe6", - "0x00000000000000000000000000000067547e19ec5c471a48e76e3bdfb7b5a823", - "0x00000000000000000000000000000000001fa896438c0f8b4139bb6379e9612a", - "0x0000000000000000000000000000006550158e15b0fe7712727527ea3d0c399b", - "0x000000000000000000000000000000000013d0096d7c4fea967be9b8ee599ef8", - "0x00000000000000000000000000000044123f796c6a94b1c449e8745631eb4d0a", - "0x000000000000000000000000000000000029a4b2664a3afc231fa14965344dda", - "0x000000000000000000000000000000f1c792d80f9a9f902451be8b99273b796a", - "0x0000000000000000000000000000000000208114ac766e8ee1fcefb741617eb4", - "0x000000000000000000000000000000b8ac66b8175c77fbed938fc691f46a291b", - "0x0000000000000000000000000000000000237e86b73a28273c4c7b0572c18f2a", - "0x000000000000000000000000000000a4e297df117a0a695915e0e2dc29d691b9", - "0x00000000000000000000000000000000002350b59c33a549ee165efa5eb86b03", - "0x000000000000000000000000000000e68cdfa136708813d5c551155f77462df5", - "0x000000000000000000000000000000000011d1901f037ad3d16091f13e91cb72", - "0x0000000000000000000000000000006624d40454b46441d73c874b35fb302c88", - "0x00000000000000000000000000000000001f45ba241f056fb577655a0a8325af", - "0x0000000000000000000000000000004f9d11429c2edce01790c07e538f5667cc", - "0x000000000000000000000000000000000006a7ae99867b42c1ec7b865e06c6c4", - "0x0000000000000000000000000000001f2b95639440c1a63877ac345ddc6f31a2", - "0x0000000000000000000000000000000000245f687da57d3b3a0e6ca5130c46b8", - "0x000000000000000000000000000000e6a9379f531ea207de4c38b3eac969d590", - "0x0000000000000000000000000000000000168890ac957e785e5322018a09f155", - "0x000000000000000000000000000000dfc38022eaac25d496a4537759ce2bc920", - "0x00000000000000000000000000000000002bd0c4aa32c8a85d9b5200367521b5", - "0x000000000000000000000000000000758e96a3659a0877b601e21c4269543487", - "0x00000000000000000000000000000000001231cf0520c463ff976a7e02790e09", - "0x000000000000000000000000000000f0759da36dda572ca16a880241cd8dfbe0", - "0x00000000000000000000000000000000001ee5b47453d93f3e8fe6aedd38a111", - "0x000000000000000000000000000000031a0d6c051f70654474717889ab0b40c9", - "0x00000000000000000000000000000000000cb262f60112bed8012e27f9745099", - "0x000000000000000000000000000000d76a3abe4c898fa4180b66e9f702bb4328", - "0x000000000000000000000000000000000007d8fc47186699fb8d2dbbb235e8d5", - "0x000000000000000000000000000000f5cae6ae7f16c1a2dd27284fa8865f2691", - "0x00000000000000000000000000000000001a14f81b7331c73e6a5113af314ee9", - "0x00000000000000000000000000000018c8bfe71feedc009498aeb03e4779f05e", - "0x000000000000000000000000000000000029749134a511152530d6b456e771fc", - "0x0000000000000000000000000000007039fe373dd9498554f0f0b88057f6ee28", - "0x00000000000000000000000000000000002e86ff735bfead8fff1fd217af3b6d", - "0x000000000000000000000000000000eeeed70761f7b7dc833c4e52c065ef889a", - "0x000000000000000000000000000000000014bb2d26b4a88498a132a5d49157bb", - "0x00000000000000000000000000000037f392bebc84b9f68e7481cb636d94930f", - "0x000000000000000000000000000000000012d83bf31021974a9112c057050db4", - "0x000000000000000000000000000000630b174bcfdc99cfffc18c5a3357fc9fd9", - "0x00000000000000000000000000000000002369fa36e6e7b848ae1720a8aded03", - "0x000000000000000000000000000000071dfb07128344beb94865b2545decb893", - "0x00000000000000000000000000000000000cf35f7cda155febb76dabef3f3e46", - "0x0000000000000000000000000000005791274945bfad20980643de4edfb9ece8", - "0x0000000000000000000000000000000000232ea9d7800464c1e8cc8e2bd1e7fa", - "0x0000000000000000000000000000009b01459d542f8bc0ca0c45f7dc010e9d3c", - "0x000000000000000000000000000000000026355b4385dbe5494d06ce1d3aab63", - "0x0000000000000000000000000000005adef58e5dd913443f9236ccde99348012", - "0x000000000000000000000000000000000005c2b48d769c481b64766977be11f5", - "0x0000000000000000000000000000009a9592b8e831c549900823caf6fff2a63b", - "0x00000000000000000000000000000000000ef1f6cb4c305130ffcd2cba7998d5", - "0x000000000000000000000000000000b111ecc0e3b6096d04ab409d1031113d8d", - "0x000000000000000000000000000000000022cb8c3bf6411f00b43b5e144f15db", - "0x000000000000000000000000000000335d82d0e7ad2ab867b3455c5573bc5884", - "0x00000000000000000000000000000000001d9899242d75dd7e50c4d833319255", - "0x000000000000000000000000000000166740b9f2177af9356ae2e97915cd3348", - "0x0000000000000000000000000000000000002001093682571844a66bf3646d95", - "0x000000000000000000000000000000a302265c23a9b1c243e5f25e8608732956", - "0x000000000000000000000000000000000008e05a879e24f9448959f256466f27", - "0x000000000000000000000000000000aa735a464058e8b6b1d1fc4919430e0519", - "0x00000000000000000000000000000000001678d9f1bf9728fbd96b0467dd7bb4", - "0x00000000000000000000000000000011e28678d41b4202fd6b7c8fbb8d3ecacb", - "0x00000000000000000000000000000000001a9429ae351527a73388b5430b9821", - "0x00000000000000000000000000000051c9bf17dfdcc7c5525d039b2c701132db", - "0x00000000000000000000000000000000001b421034d5333685e2fdfa23a43f38", - "0x0000000000000000000000000000005d8d0cc8efa0ed1e5e03fb57dfe90b73fe", - "0x00000000000000000000000000000000002397c69f0bb570b8025cacf29d7bab", - "0x00000000000000000000000000000044a2b1f7a8df29c4a98f722fe4beb7e374", - "0x000000000000000000000000000000000011fcce004e9b51a3c906e106d6cd1b", - "0x000000000000000000000000000000518801da7ba087fcbb0c440943c8086bd8", - "0x000000000000000000000000000000000021b2e6ebb6a8603f94ee106464b003", - "0x00000000000000000000000000000057fdb84a8a159f6db6777b3f08077b5653", - "0x00000000000000000000000000000000000472da363520675cee5aeaad93a0b7", - "0x000000000000000000000000000000f2525afc9880482204e3b4423623980411", - "0x0000000000000000000000000000000000274e7f1480c27d476b86a5f5391c29", - "0x0000000000000000000000000000004a8eddb3b148661c9ac36cce0f1aae8d41", - "0x00000000000000000000000000000000001c73715417505d0b2b64114819a4be", - "0x000000000000000000000000000000950682eb60cb5455d12d47d478edcd8744", - "0x00000000000000000000000000000000002674dcc5c46aace2a7b24c9177bca4", - "0x0000000000000000000000000000009d0400d74c2810099803ce00e4d212e027", - "0x00000000000000000000000000000000002dd78ffbcabe324f8fdd974ba4592e", - "0x000000000000000000000000000000835d6524088c85a6229c253f19f9075a24", - "0x00000000000000000000000000000000000ea53cd2576f3ed59997b9c31ade62", - "0x000000000000000000000000000000b63021ec911d878a8808271f9fc354f6c1", - "0x0000000000000000000000000000000000013899f19981c306831c30f8be091f", - "0x000000000000000000000000000000e9ea0973de12fdbcf9692352b0bb9e126c", - "0x00000000000000000000000000000000000f480ce1fe1a5e6d79c1aea34ff6bd", - "0x000000000000000000000000000000377185add84afd6c2c81cd920469f4eed8", - "0x00000000000000000000000000000000000b30da5e57df9005bb26388bec1e13", - "0x00000000000000000000000000000016d15d01c4e568368a015a4a1bd827a3b9", - "0x0000000000000000000000000000000000181038d51220ac7f524520f4dd4e00", - "0x000000000000000000000000000000f69b5e222476cd81abc41a7e1c7dab2bc2", - "0x00000000000000000000000000000000001fb2cec72c2a711d3a7cd9da9ae57b", + "0x000000000000000000000000000000000000000000000000000000000000041a", + "0x000000000000000000000000000000000000000000000000000000000000041b", + "0x000000000000000000000000000000000000000000000000000000000000041c", + "0x000000000000000000000000000000000000000000000000000000000000041d", + "0x000000000000000000000000000000000000000000000000000000000000041e", + "0x000000000000000000000000000000000000000000000000000000000000041f", + "0x0000000000000000000000000000000000000000000000000000000000000420", + "0x0000000000000000000000000000000000000000000000000000000000000421", + "0x0000000000000000000000000000000000000000000000000000000000000422", + "0x0000000000000000000000000000000000000000000000000000000000000423", + "0x000000000000000000000000000000419e7449b6adf1fd85a2c257e0393cd204", + "0x0000000000000000000000000000000000199570e259755453396fdcf92bed76", + "0x000000000000000000000000000000dfe17d35601509209d3c794ce7590de703", + "0x00000000000000000000000000000000001e4dc2db4651fbcab36a253964d094", + "0x0000000000000000000000000000009fa10a4dc7242aeeeefa528721c64be971", + "0x0000000000000000000000000000000000169ae254b0abd0ec6ed10a748c06b0", + "0x000000000000000000000000000000fa0cc8d50135f79336d2e9943147f1fdcc", + "0x000000000000000000000000000000000020202ba9736558aa72db82a7371261", + "0x0000000000000000000000000000007e4be0963c1aee7065ebcae1a24287bf1e", + "0x00000000000000000000000000000000001b3af4930768449cd6219753816230", + "0x0000000000000000000000000000001fc531939cc1eb6071e1fa3de4ba0da873", + "0x000000000000000000000000000000000009feed0c8ed731c4dcf1c2ab3633f9", + "0x0000000000000000000000000000001596fb9abffd61d5766dc34a1c60a1ce54", + "0x00000000000000000000000000000000002e62cec2dd81d0d25d7a999049523b", + "0x00000000000000000000000000000052376060fe0a0a4340a74ab9820cb5f3dc", + "0x00000000000000000000000000000000002b78ef38a40c841751c0a570cea133", + "0x000000000000000000000000000000baf35b01257782bc47d1004fa51bc145b4", + "0x00000000000000000000000000000000001da608e92e07ad96f1425ae4afa39c", + "0x000000000000000000000000000000757fdf0fa2cec6b71b56e08f25d9b03073", + "0x000000000000000000000000000000000012fc126fe069812e0e46908deae457", + "0x00000000000000000000000000000025a63a2310119e032062edf2748af3935d", + "0x00000000000000000000000000000000002a6b4b83a0c773df436ac08d125a6f", + "0x000000000000000000000000000000fbd36b80ea33b7685b16be6db694499bd5", + "0x000000000000000000000000000000000020ffa122ec5c8303dedc2e14f8bc4f", + "0x000000000000000000000000000000e6bee501455201368d829cd1ce79087f61", + "0x0000000000000000000000000000000000200a6916f2e94e0de862bccb7c66e9", + "0x000000000000000000000000000000ce79b607a7f0f58208394dd5ae4ed88772", + "0x0000000000000000000000000000000000289dbe505abab4d4613cf578f4ee04", + "0x000000000000000000000000000000f345237557f2315bbf1c292e85cb1fcf84", + "0x00000000000000000000000000000000001d8dbd5043a6b4f045dba7e0d93a43", + "0x000000000000000000000000000000ad875e883b75687701b4b45373ae00b679", + "0x00000000000000000000000000000000001489f0a865e17b3c308ce2eced6040", + "0x000000000000000000000000000000dd45e6eed7ea285daaba2ae39c138d788f", + "0x0000000000000000000000000000000000008ddaab4a5bb998c41add978ad528", + "0x0000000000000000000000000000006a2a99308f13dd548edeecc6f8f5fd1d52", + "0x00000000000000000000000000000000000c78f4679dddc6650c1bf822dfbd0d", + "0x000000000000000000000000000000e430f1bf59328f1e2163d9edf2c6c29499", + "0x0000000000000000000000000000000000038d703475a6e55a48b307018d79c8", + "0x00000000000000000000000000000061d31b3687253f7c0a17a0bee920440ed7", + "0x00000000000000000000000000000000000876d7518b158a5826caa989a42f28", + "0x00000000000000000000000000000065e5753e3f96ad88571b2d305e7514d6c2", + "0x000000000000000000000000000000000023e2f0a345aa338df5b1d0e06f7f37", + "0x0000000000000000000000000000003af39bf2395f7544eaf12190cc6829ccf8", + "0x00000000000000000000000000000000000ab85ba63d1e2ffad75cef9be15145", + "0x000000000000000000000000000000bd35b8821f75beffd500853d52d20f1ebb", + "0x0000000000000000000000000000000000140fc1c97352554613cd1fd993a523", + "0x000000000000000000000000000000c2300bdcfc58eb11e22caceb21d164cf92", + "0x00000000000000000000000000000000000c6eb88a70d96c66e624a4ca8668f8", + "0x000000000000000000000000000000f140ed8677a314751991c7bb4b554d62ff", + "0x0000000000000000000000000000000000143df52054703b6bce2e9e9162c55a", + "0x0000000000000000000000000000009ebb9c8cb9f9efafc2f66be4f937babbfa", + "0x000000000000000000000000000000000022f2a9fc5f19f76566c397cd4baf10", + "0x0000000000000000000000000000003f93ec368741fa6240a16cfe7262aad4e8", + "0x0000000000000000000000000000000000083c3852d51611baaaf92207fcb167", + "0x00000000000000000000000000000049534804e747421f647a7a45795a0ba234", + "0x000000000000000000000000000000000007e0aa0df42602fad1ef2d10afbc61", + "0x00000000000000000000000000000085a5c35aeeb20075af017e107f68003c4a", + "0x00000000000000000000000000000000000559648c7be59a7ed631465912a370", + "0x00000000000000000000000000000002514b8f30ecd8691d51e8f05fd685116b", + "0x00000000000000000000000000000000000751ba882f3f85aff0c3708330fdba", + "0x000000000000000000000000000000b43c8d31b3a552fd6ccdc3d8478dcec28e", + "0x000000000000000000000000000000000011717cbd0ce268c10c4d84dec84d4f", + "0x0000000000000000000000000000007278923f22cfde811f1b66a9d7db2e7fa2", + "0x00000000000000000000000000000000001361da9446af9c98d59b49eaa1b357", + "0x000000000000000000000000000000ea30012fb09431a85d92a00263ef987eef", + "0x000000000000000000000000000000000029bca370a46f8f354ac5e49f6ca59f", + "0x000000000000000000000000000000fb9f6ccce672614ed9333a44024e2a0be6", + "0x00000000000000000000000000000000000dfb388286f15e852482e237a50d51", + "0x0000000000000000000000000000005fc56c6b0c13b7db749137119a48f5b3b7", + "0x0000000000000000000000000000000000205834f9ac179adc772061d7bcd8dc", + "0x00000000000000000000000000000075ed56b4cb2557df3fabb2f89eb789c119", + "0x00000000000000000000000000000000002f04a7542161079050a92ea07fd5cc", + "0x000000000000000000000000000000323203d6d39cf766b9823232f8dd624fd9", + "0x00000000000000000000000000000000002df1d38173d8713f1047284cf4f2d6", + "0x00000000000000000000000000000005a53dd9bada258725818e67b9c1103d10", + "0x00000000000000000000000000000000000e8059f2acd119d92a3412731b93a3", + "0x0000000000000000000000000000007ce14852270ecb1c2a86349b1a7b61828c", + "0x0000000000000000000000000000000000156194d8ad86978a8dd6b8b4d3a1e6", + "0x000000000000000000000000000000651e9c17397afdea3f138092bc0fea2972", + "0x00000000000000000000000000000000001bf1c9d51814f099d4544e7675da2a", + "0x000000000000000000000000000000daa21cc9d5e8175c08a69118b766845c76", + "0x00000000000000000000000000000000002e7da3f77177a2d86c0b8450b1bf23", + "0x000000000000000000000000000000ad8581a81ee364d5238cd1f591801c9ded", + "0x000000000000000000000000000000000026049e5b956065ef9d897a0cfb6268", + "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", + "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", + "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", + "0x0000000000000000000000000000000000230b997570d1f85ae65a57bb57a7d0", + "0x0000000000000000000000000000000bc60b4ea3525f05223875c1af3ed2b02d", + "0x0000000000000000000000000000000000236868e5e41937ed2cdc41de55f10b", + "0x000000000000000000000000000000249541e175626917b9aaedb0e2915d4177", + "0x00000000000000000000000000000000002fb85434d64a786207f332f20277da", + "0x000000000000000000000000000000aec46500b248445db79f52d6ed7b30158b", + "0x000000000000000000000000000000000002321694c1a17469bdd178eafdfa6e", + "0x00000000000000000000000000000023fd9365c6a81758f239e73dee60348b69", + "0x000000000000000000000000000000000014cbd4ad9a23e8adbaa2eb703f2801", + "0x000000000000000000000000000000a1dd8f964e4f1c6a0c2c1407da434a5d2f", + "0x000000000000000000000000000000000018ee0334d49c017b30c8e7656c679f", + "0x000000000000000000000000000000f1571f393c77481ab166deb9cc943c32f7", + "0x00000000000000000000000000000000002f977fa69325d670afb3b6523af5c6", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000005a7a656146458b2aa2daea0c7503235726", - "0x00000000000000000000000000000000002ca964e842b63733ebc21c63d14545", - "0x00000000000000000000000000000096a8f72cd3a0e0bfdc0596f85aa3f1f02d", - "0x000000000000000000000000000000000004228f8e981bba79c16e40c2e2dd49" + "0x000000000000000000000000000000fd205e3cbb08bf3732f42f8f7394513ac4", + "0x000000000000000000000000000000000010325670ecb08d1c1ad20f04d5749c", + "0x000000000000000000000000000000f2d889b901e3e7247fdf4893478d31c904", + "0x0000000000000000000000000000000000170cf314533d4667f535487be8b352" ] -hash = "0x1ce265e7e102a08674a09b24fc17204ecaa5b5b828cfd4a910a9f2cd9b049587" +hash = "0x12190b990be64e0a871c4995d6d4091f4fe34e7c392416e0949f7fa849dec5d5" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" sibling_path = [ - "0x22913f84ca022bd27b6bc5f3cc74b963a529b9c890af5938b29d357ae5b5cb46", - "0x21e70fe2469354bfc7514de8bfc82b272cc362046fb9a108e0819db2b1c9457e", - "0x2489113f912b343d6df5fac3449c1833efd317c0abc64a8ed9d59df4130d7fc6", - "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", + "0x0efa1bf9873f28b2b90fd97b3aa86f81792b62ff852383f1f161ff2185513cfc", + "0x1f8a29ac619adc9528879eb5f86632217299fbbf54784da57b8259f454a2e59e", + "0x0e31294ddae4f4798f2bba4b55ed737d196e1624f73265772ffe5ccca88f2a5e", + "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr b/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr index f50aab7ff93a..7276af6d6b1f 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr @@ -64,4 +64,13 @@ impl EthAddress { pub fn assert_is_zero(self) { assert(self.to_field() == 0); } + + pub fn to_be_bytes(self) -> [u8; 20] { + let field_bytes: [u8; 32] = self.inner.to_be_bytes(); + let mut bytes = [0; 20]; + for i in 0..20 { + bytes[i] = field_bytes[i + 12]; + } + bytes + } } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index 4411ba79ed91..646a2873301a 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -293,6 +293,17 @@ pub global BLOCK_HEADER_LENGTH_BYTES: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYT - 12 + 32 * TOTAL_FEES_LENGTH + 32 * TOTAL_MANA_USED_LENGTH; +pub global PROPOSED_BLOCK_HEADER_LENGTH: u32 = 1 /* last_archive_root */ + + CONTENT_COMMITMENT_LENGTH + + 1 /* slot_number */ + + 1 /* timestamp */ + + 1 /* coinbase */ + + 1 /* fee_recipient */ + + GAS_FEES_LENGTH + + TOTAL_MANA_USED_LENGTH; +pub global PROPOSED_BLOCK_HEADER_LENGTH_BYTES: u32 = (PROPOSED_BLOCK_HEADER_LENGTH - 2) * 32 + + 8 /* timestamp */ + + 20 /* coinbase */; pub global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: u32 = CALL_CONTEXT_LENGTH + 4 + MAX_BLOCK_NUMBER_LENGTH @@ -438,15 +449,23 @@ pub global BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH: u32 = 2 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH + 2 * GLOBAL_VARIABLES_LENGTH + 1 /* out_hash */ + + AZTEC_MAX_EPOCH_DURATION /* proposedBlockHeaderHashes */ + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH + 1 /* vk_tree_root */ + 1 /* protocol_contract_tree_root */ + 1 /* prover_id */ + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; // + 6 for end_timestamp, end_block_number, out_hash, vk_tree_root, protocol_contract_tree_root, prover_id -pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = 2 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH - + 6 - + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH +pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH /* previous_archive */ + + APPEND_ONLY_TREE_SNAPSHOT_LENGTH /* end_archive */ + + 1 /* end_timestamp */ + + 1 /* end_block_number */ + + 1 /* out_hash */ + + 1 /* vk_tree_root */ + + 1 /* protocol_contract_tree_root */ + + 1 /* prover_id */ + + AZTEC_MAX_EPOCH_DURATION /* proposedBlockHeaderHashes */ + + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH /* fees */ + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; pub global GET_NOTES_ORACLE_RETURN_LENGTH: u32 = 674; pub global NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP: u32 = 32 * MAX_NOTE_HASHES_PER_TX; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/lib.nr b/noir-projects/noir-protocol-circuits/crates/types/src/lib.nr index c0e54fdb74a7..680f0cf67ba5 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/lib.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/lib.nr @@ -22,6 +22,7 @@ pub mod type_packing; pub mod shared_mutable; pub mod content_commitment; pub mod block_header; +pub mod proposed_block_header; pub(crate) mod tests; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/proposed_block_header.nr b/noir-projects/noir-protocol-circuits/crates/types/src/proposed_block_header.nr new file mode 100644 index 000000000000..07838ceb4321 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/types/src/proposed_block_header.nr @@ -0,0 +1,155 @@ +use crate::{ + abis::gas_fees::GasFees, + address::{AztecAddress, EthAddress}, + constants::{PROPOSED_BLOCK_HEADER_LENGTH, PROPOSED_BLOCK_HEADER_LENGTH_BYTES}, + content_commitment::ContentCommitment, + hash::sha256_to_field, + traits::{Deserialize, Empty, FromField, Hash, Serialize, ToField}, + utils::reader::Reader, +}; + +pub struct ProposedBlockHeader { + pub last_archive_root: Field, + pub content_commitment: ContentCommitment, + + // Partial global_variables: + pub slot_number: Field, + pub timestamp: u64, + pub coinbase: EthAddress, + pub fee_recipient: AztecAddress, + pub gas_fees: GasFees, + + pub total_mana_used: Field, +} + +impl Eq for ProposedBlockHeader { + fn eq(self, other: Self) -> bool { + self.last_archive_root.eq(other.last_archive_root) + & self.content_commitment.eq(other.content_commitment) + & (self.slot_number == 0) + & (self.timestamp == 0) + & (self.coinbase.is_zero()) + & (self.fee_recipient.is_zero()) + & (self.gas_fees.is_empty()) + & self.total_mana_used.eq(other.total_mana_used) + } +} + +impl Serialize for ProposedBlockHeader { + fn serialize(self) -> [Field; PROPOSED_BLOCK_HEADER_LENGTH] { + let mut serialized: BoundedVec = BoundedVec::new(); + + serialized.push(self.last_archive_root); + serialized.extend_from_array(self.content_commitment.serialize()); + serialized.push(self.slot_number); + serialized.push(self.timestamp as Field); + serialized.push(self.coinbase.to_field()); + serialized.push(self.fee_recipient.to_field()); + serialized.extend_from_array(self.gas_fees.serialize()); + serialized.push(self.total_mana_used); + + serialized.storage() + } +} + +impl Deserialize for ProposedBlockHeader { + fn deserialize(serialized: [Field; PROPOSED_BLOCK_HEADER_LENGTH]) -> Self { + let mut reader = Reader::new(serialized); + + ProposedBlockHeader { + last_archive_root: reader.read(), + content_commitment: reader.read_struct(ContentCommitment::deserialize), + slot_number: reader.read(), + timestamp: reader.read() as u64, + coinbase: EthAddress::from_field(reader.read()), + fee_recipient: AztecAddress::from_field(reader.read()), + gas_fees: reader.read_struct(GasFees::deserialize), + total_mana_used: reader.read(), + } + } +} + +impl Empty for ProposedBlockHeader { + fn empty() -> Self { + Self { + last_archive_root: 0, + content_commitment: ContentCommitment::empty(), + slot_number: 0, + timestamp: 0, + coinbase: EthAddress::zero(), + fee_recipient: AztecAddress::zero(), + gas_fees: GasFees::empty(), + total_mana_used: 0, + } + } +} + +impl ProposedBlockHeader { + pub fn to_be_bytes(self) -> [u8; PROPOSED_BLOCK_HEADER_LENGTH_BYTES] { + let mut bytes = [0; PROPOSED_BLOCK_HEADER_LENGTH_BYTES]; + + let last_archive_root_bytes: [u8; 32] = self.last_archive_root.to_be_bytes(); + let num_txs_bytes: [u8; 32] = self.content_commitment.num_txs.to_be_bytes(); + let blobs_hash_bytes: [u8; 32] = self.content_commitment.blobs_hash.to_be_bytes(); + let in_hash_bytes: [u8; 32] = self.content_commitment.in_hash.to_be_bytes(); + let out_hash_bytes: [u8; 32] = self.content_commitment.out_hash.to_be_bytes(); + let slot_number_bytes: [u8; 32] = self.slot_number.to_be_bytes(); + let coinbase_bytes: [u8; 20] = self.coinbase.to_be_bytes(); + let fee_recipient_bytes: [u8; 32] = self.fee_recipient.to_field().to_be_bytes(); + let gas_fees_per_da_gas_bytes: [u8; 32] = self.gas_fees.fee_per_da_gas.to_be_bytes(); + let gas_fees_per_l2_gas_bytes: [u8; 32] = self.gas_fees.fee_per_l2_gas.to_be_bytes(); + let total_mana_used_bytes: [u8; 32] = self.total_mana_used.to_be_bytes(); + + for i in 0..32 { + bytes[i] = last_archive_root_bytes[i]; + bytes[i + 0x20] = num_txs_bytes[i]; + bytes[i + 0x40] = blobs_hash_bytes[i]; + bytes[i + 0x60] = in_hash_bytes[i]; + bytes[i + 0x80] = out_hash_bytes[i]; + bytes[i + 0xa0] = slot_number_bytes[i]; + } + + let mut timestamp = self.timestamp; + for i in 0..8 { + bytes[0xc8 - 1 - i] = timestamp as u8; + timestamp = timestamp >> 8; + } + + for i in 0..20 { + bytes[i + 0xc8] = coinbase_bytes[i]; + } + + for i in 0..32 { + bytes[i + 0xdc] = fee_recipient_bytes[i]; + bytes[i + 0xfc] = gas_fees_per_da_gas_bytes[i]; + bytes[i + 0x11c] = gas_fees_per_l2_gas_bytes[i]; + bytes[i + 0x13c] = total_mana_used_bytes[i]; + } + + bytes + } +} + +impl Hash for ProposedBlockHeader { + fn hash(self) -> Field { + sha256_to_field(self.to_be_bytes()) + } +} + +#[test] +fn serialization_of_empty() { + let header = ProposedBlockHeader::empty(); + let serialized = header.serialize(); + let deserialized = ProposedBlockHeader::deserialize(serialized); + assert(header.eq(deserialized)); +} + +#[test] +fn empty_hash_is_zero() { + let header = ProposedBlockHeader::empty(); + let hash = header.hash(); + + // Value from proposed_block_header.test.ts "computes empty hash" test + let test_data_empty_hash = 0x002e384af86a480f952aa16443fd29646a9063865e62d7c403fc7ed697bb7712; + assert_eq(hash, test_data_empty_hash); +} diff --git a/yarn-project/archiver/src/archiver/archiver.test.ts b/yarn-project/archiver/src/archiver/archiver.test.ts index 0447bb87555e..4b055973da0e 100644 --- a/yarn-project/archiver/src/archiver/archiver.test.ts +++ b/yarn-project/archiver/src/archiver/archiver.test.ts @@ -25,6 +25,8 @@ import type { ArchiverInstrumentation } from './instrumentation.js'; import { KVArchiverDataStore } from './kv_archiver_store/kv_archiver_store.js'; interface MockRollupContractRead { + /** Returns the rollup version. */ + getVersion: () => Promise; /** Given an L2 block number, returns the archive. */ archiveAt: (args: readonly [bigint]) => Promise<`0x${string}`>; /** Given an L2 block number, returns provenBlockNumber, provenArchive, pendingBlockNumber, pendingArchive, archiveForLocalPendingBlockNumber, provenEpochNumber. */ @@ -97,6 +99,7 @@ describe('Archiver', () => { logger = createLogger('archiver:test'); now = +new Date(); publicClient = mock({ + getChainId: () => Promise.resolve(1), // Return a block with a reasonable timestamp getBlock: ((args: any) => ({ timestamp: args.blockNumber * BigInt(DefaultL1ContractsConfig.ethereumSlotDuration) + BigInt(now), @@ -139,6 +142,7 @@ describe('Archiver', () => { mockRollupRead.archiveAt.mockImplementation((args: readonly [bigint]) => Promise.resolve(blocks[Number(args[0] - 1n)].archive.root.toString()), ); + mockRollupRead.getVersion.mockImplementation(() => Promise.resolve(1n)); mockRollupEvents = mock(); mockRollupEvents.L2BlockProposed.mockImplementation((filter: any, { fromBlock, toBlock }) => Promise.resolve(l2BlockProposedLogs.filter(log => log.blockNumber! >= fromBlock && log.blockNumber! <= toBlock)), @@ -606,13 +610,23 @@ describe('Archiver', () => { * @returns A fake tx with calldata that corresponds to calling process in the Rollup contract. */ async function makeRollupTx(l2Block: L2Block) { - const header = toHex(l2Block.header.toBuffer()); + const header = toHex(l2Block.header.toPropose().toBuffer()); const blobInput = Blob.getEthBlobEvaluationInputs(await Blob.getBlobs(l2Block.body.toBlobFields())); const archive = toHex(l2Block.archive.root.toBuffer()); const rollupInput = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', - args: [{ header, archive, oracleInput: { feeAssetPriceModifier: 0n }, txHashes: [] }, [], blobInput], + args: [ + { + header, + archive, + oracleInput: { feeAssetPriceModifier: 0n }, + txHashes: [], + }, + [], + blobInput, + toHex(l2Block.header.state.toBuffer()), + ], }); const forwarderInput = encodeFunctionData({ diff --git a/yarn-project/archiver/src/archiver/archiver.ts b/yarn-project/archiver/src/archiver/archiver.ts index a5dbc5380aec..ea16bfbdbe18 100644 --- a/yarn-project/archiver/src/archiver/archiver.ts +++ b/yarn-project/archiver/src/archiver/archiver.ts @@ -57,7 +57,11 @@ import { type GetContractReturnType, createPublicClient, fallback, getContract, import type { ArchiverDataStore, ArchiverL1SynchPoint } from './archiver_store.js'; import type { ArchiverConfig } from './config.js'; -import { retrieveBlocksFromRollup, retrieveL1ToL2Messages } from './data_retrieval.js'; +import { + retrieveBlocksFromRollup, + retrieveL1ToL2Messages, + retrievedBlockToPublishedL2Block, +} from './data_retrieval.js'; import { NoBlobBodiesFoundError } from './errors.js'; import { ArchiverInstrumentation } from './instrumentation.js'; import type { DataRetrieval } from './structs/data_retrieval.js'; @@ -551,7 +555,9 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable { `Retrieved ${retrievedBlocks.length} new L2 blocks between L1 blocks ${searchStartBlock} and ${searchEndBlock} with last processed L1 block ${lastProcessedL1BlockNumber}.`, ); - for (const block of retrievedBlocks) { + const publishedBlocks = retrievedBlocks.map(b => retrievedBlockToPublishedL2Block(b)); + + for (const block of publishedBlocks) { this.log.debug(`Ingesting new L2 block ${block.block.number} with ${block.block.body.txEffects.length} txs`, { blockHash: block.block.hash(), l1BlockNumber: block.l1.blockNumber, @@ -560,13 +566,13 @@ export class Archiver extends EventEmitter implements ArchiveSource, Traceable { }); } - const [processDuration] = await elapsed(() => this.store.addBlocks(retrievedBlocks)); + const [processDuration] = await elapsed(() => this.store.addBlocks(publishedBlocks)); this.instrumentation.processNewBlocks( - processDuration / retrievedBlocks.length, - retrievedBlocks.map(b => b.block), + processDuration / publishedBlocks.length, + publishedBlocks.map(b => b.block), ); - for (const block of retrievedBlocks) { + for (const block of publishedBlocks) { this.log.info(`Downloaded L2 block ${block.block.number}`, { blockHash: block.block.hash(), blockNumber: block.block.number, diff --git a/yarn-project/archiver/src/archiver/data_retrieval.ts b/yarn-project/archiver/src/archiver/data_retrieval.ts index 950af8d3ef46..fe11c3987597 100644 --- a/yarn-project/archiver/src/archiver/data_retrieval.ts +++ b/yarn-project/archiver/src/archiver/data_retrieval.ts @@ -12,7 +12,7 @@ import { Body, L2Block } from '@aztec/stdlib/block'; import { InboxLeaf } from '@aztec/stdlib/messaging'; import { Proof } from '@aztec/stdlib/proofs'; import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees'; -import { BlockHeader } from '@aztec/stdlib/tx'; +import { BlockHeader, GlobalVariables, ProposedBlockHeader, StateReference } from '@aztec/stdlib/tx'; import { type GetContractEventsReturnType, @@ -27,6 +27,52 @@ import { NoBlobBodiesFoundError } from './errors.js'; import type { DataRetrieval } from './structs/data_retrieval.js'; import type { L1PublishedData, PublishedL2Block } from './structs/published.js'; +export type RetrievedL2Block = { + l2BlockNumber: bigint; + archive: AppendOnlyTreeSnapshot; + header: ProposedBlockHeader; + body: Body; + l1: L1PublishedData; + chainId: Fr; + version: Fr; + signatures: Signature[]; + // TODO: Remove stateReference from calldata and fetch it from the updated world state. + stateReference: StateReference; +}; + +export function retrievedBlockToPublishedL2Block(retrievedBlock: RetrievedL2Block): PublishedL2Block { + const { l2BlockNumber, l1, body, archive, stateReference, chainId, version, signatures } = retrievedBlock; + const proposedHeader = retrievedBlock.header; + + const globalVariables = GlobalVariables.from({ + chainId, + version, + blockNumber: new Fr(l2BlockNumber), + slotNumber: proposedHeader.slotNumber, + timestamp: new Fr(proposedHeader.timestamp), + coinbase: proposedHeader.coinbase, + feeRecipient: proposedHeader.feeRecipient, + gasFees: proposedHeader.gasFees, + }); + + const header = BlockHeader.from({ + lastArchive: new AppendOnlyTreeSnapshot(proposedHeader.lastArchiveRoot, Number(l2BlockNumber)), + contentCommitment: proposedHeader.contentCommitment, + state: stateReference, + globalVariables, + totalFees: body.txEffects.reduce((accum, txEffect) => accum.add(txEffect.transactionFee), Fr.ZERO), + totalManaUsed: proposedHeader.totalManaUsed, + }); + + const block = new L2Block(archive, header, body); + + return { + block, + l1, + signatures, + }; +} + /** * Fetches new L2 blocks. * @param publicClient - The viem public client to use for transaction retrieval. @@ -43,8 +89,8 @@ export async function retrieveBlocksFromRollup( searchStartBlock: bigint, searchEndBlock: bigint, logger: Logger = createLogger('archiver'), -): Promise { - const retrievedBlocks: PublishedL2Block[] = []; +): Promise { + const retrievedBlocks: RetrievedL2Block[] = []; do { if (searchStartBlock > searchEndBlock) { break; @@ -90,14 +136,14 @@ export async function retrieveBlocksFromRollup( * @param logs - L2BlockProposed logs. * @returns - An array blocks. */ -export async function processL2BlockProposedLogs( +async function processL2BlockProposedLogs( rollup: GetContractReturnType, publicClient: ViemPublicClient, blobSinkClient: BlobSinkClientInterface, logs: GetContractEventsReturnType, logger: Logger, -): Promise { - const retrievedBlocks: PublishedL2Block[] = []; +): Promise { + const retrievedBlocks: RetrievedL2Block[] = []; await asyncPool(10, logs, async log => { const l2BlockNumber = log.args.blockNumber!; const archive = log.args.archive!; @@ -122,7 +168,11 @@ export async function processL2BlockProposedLogs( timestamp: await getL1BlockTime(publicClient, log.blockNumber), }; - retrievedBlocks.push({ ...block, l1 }); + const chainId = new Fr(await publicClient.getChainId()); + + const version = new Fr(await rollup.read.getVersion({ blockNumber: log.blockNumber })); + + retrievedBlocks.push({ ...block, l1, chainId, version }); logger.trace(`Retrieved L2 block ${l2BlockNumber} from L1 tx ${log.transactionHash}`, { l1BlockNumber: log.blockNumber, l2BlockNumber, @@ -202,7 +252,7 @@ function extractRollupProposeCalldata(forwarderData: Hex, rollupAddress: Hex): H * TODO: Add retries and error management. * @param publicClient - The viem public client to use for transaction retrieval. * @param txHash - Hash of the tx that published it. - * @param l2BlockNum - L2 block number. + * @param l2BlockNumber - L2 block number. * @returns L2 block from the calldata, deserialized */ async function getBlockFromRollupTx( @@ -210,10 +260,10 @@ async function getBlockFromRollupTx( blobSinkClient: BlobSinkClientInterface, txHash: `0x${string}`, blobHashes: Buffer[], // TODO(md): buffer32? - l2BlockNum: bigint, + l2BlockNumber: bigint, rollupAddress: Hex, logger: Logger, -): Promise> { +): Promise> { const { input: forwarderData, blockHash } = await publicClient.getTransaction({ hash: txHash }); const rollupData = extractRollupProposeCalldata(forwarderData, rollupAddress); @@ -226,7 +276,7 @@ async function getBlockFromRollupTx( throw new Error(`Unexpected rollup method called ${rollupFunctionName}`); } - const [decodedArgs, signatures] = rollupArgs! as readonly [ + const [decodedArgs, signatures, _blobInput, stateReferenceHex] = rollupArgs! as readonly [ { header: Hex; archive: Hex; @@ -238,12 +288,13 @@ async function getBlockFromRollupTx( }, ViemSignature[], Hex, + Hex, ]; - const header = BlockHeader.fromBuffer(Buffer.from(hexToBytes(decodedArgs.header))); + const header = ProposedBlockHeader.fromBuffer(Buffer.from(hexToBytes(decodedArgs.header))); const blobBodies = await blobSinkClient.getBlobSidecar(blockHash, blobHashes); if (blobBodies.length === 0) { - throw new NoBlobBodiesFoundError(Number(l2BlockNum)); + throw new NoBlobBodiesFoundError(Number(l2BlockNumber)); } let blockFields: Fr[]; @@ -259,23 +310,25 @@ async function getBlockFromRollupTx( } // The blob source gives us blockFields, and we must construct the body from them: - const blockBody = Body.fromBlobFields(blockFields); - - const blockNumberFromHeader = header.globalVariables.blockNumber.toBigInt(); - - if (blockNumberFromHeader !== l2BlockNum) { - throw new Error(`Block number mismatch: expected ${l2BlockNum} but got ${blockNumberFromHeader}`); - } + const body = Body.fromBlobFields(blockFields); const archive = AppendOnlyTreeSnapshot.fromBuffer( Buffer.concat([ Buffer.from(hexToBytes(decodedArgs.archive)), // L2Block.archive.root - numToUInt32BE(Number(l2BlockNum + 1n)), // L2Block.archive.nextAvailableLeafIndex + numToUInt32BE(Number(l2BlockNumber + 1n)), // L2Block.archive.nextAvailableLeafIndex ]), ); - const block = new L2Block(archive, header, blockBody); - return { block, signatures: signatures.map(Signature.fromViemSignature) }; + const stateReference = StateReference.fromBuffer(Buffer.from(hexToBytes(stateReferenceHex))); + + return { + l2BlockNumber, + archive, + header, + body, + stateReference, + signatures: signatures.map(Signature.fromViemSignature), + }; } /** diff --git a/yarn-project/constants/src/constants.gen.ts b/yarn-project/constants/src/constants.gen.ts index aee27a60b3da..787d65a98a32 100644 --- a/yarn-project/constants/src/constants.gen.ts +++ b/yarn-project/constants/src/constants.gen.ts @@ -171,6 +171,8 @@ export const TOTAL_FEES_LENGTH = 1; export const TOTAL_MANA_USED_LENGTH = 1; export const BLOCK_HEADER_LENGTH = 25; export const BLOCK_HEADER_LENGTH_BYTES = 648; +export const PROPOSED_BLOCK_HEADER_LENGTH = 12; +export const PROPOSED_BLOCK_HEADER_LENGTH_BYTES = 348; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 724; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 908; export const PRIVATE_CONTEXT_INPUTS_LENGTH = 40; @@ -194,8 +196,8 @@ export const PRIVATE_TO_ROLLUP_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 782; export const AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1026; export const CONSTANT_ROLLUP_DATA_LENGTH = 13; export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; -export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 984; -export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 970; +export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 1032; +export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 1018; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts index b6e3fe26c9f5..39d61718b05e 100644 --- a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts @@ -302,60 +302,28 @@ describe('L1Publisher integration', () => { // The json formatting in forge is a bit brittle, so we convert Fr to a number in the few values below. // This should not be a problem for testing as long as the values are not larger than u32. archive: `0x${block.archive.root.toBuffer().toString('hex').padStart(64, '0')}`, + blobInputs: Blob.getEthBlobEvaluationInputs(blobs), + blockNumber: block.number, body: `0x${block.body.toBuffer().toString('hex')}`, decodedHeader: { + lastArchiveRoot: `0x${block.header.lastArchive.root.toBuffer().toString('hex').padStart(64, '0')}`, contentCommitment: { blobsHash: `0x${block.header.contentCommitment.blobsHash.toString('hex').padStart(64, '0')}`, inHash: `0x${block.header.contentCommitment.inHash.toString('hex').padStart(64, '0')}`, outHash: `0x${block.header.contentCommitment.outHash.toString('hex').padStart(64, '0')}`, numTxs: Number(block.header.contentCommitment.numTxs), }, - globalVariables: { - blockNumber: block.number, - slotNumber: `0x${block.header.globalVariables.slotNumber.toBuffer().toString('hex').padStart(64, '0')}`, - chainId: Number(block.header.globalVariables.chainId.toBigInt()), - timestamp: Number(block.header.globalVariables.timestamp.toBigInt()), - version: Number(block.header.globalVariables.version.toBigInt()), - coinbase: `0x${block.header.globalVariables.coinbase.toBuffer().toString('hex').padStart(40, '0')}`, - feeRecipient: `0x${block.header.globalVariables.feeRecipient.toBuffer().toString('hex').padStart(64, '0')}`, - gasFees: { - feePerDaGas: block.header.globalVariables.gasFees.feePerDaGas.toNumber(), - feePerL2Gas: block.header.globalVariables.gasFees.feePerL2Gas.toNumber(), - }, + slotNumber: `0x${block.header.globalVariables.slotNumber.toBuffer().toString('hex').padStart(64, '0')}`, + timestamp: Number(block.header.globalVariables.timestamp.toBigInt()), + coinbase: `0x${block.header.globalVariables.coinbase.toBuffer().toString('hex').padStart(40, '0')}`, + feeRecipient: `0x${block.header.globalVariables.feeRecipient.toBuffer().toString('hex').padStart(64, '0')}`, + gasFees: { + feePerDaGas: block.header.globalVariables.gasFees.feePerDaGas.toNumber(), + feePerL2Gas: block.header.globalVariables.gasFees.feePerL2Gas.toNumber(), }, - totalFees: `0x${block.header.totalFees.toBuffer().toString('hex').padStart(64, '0')}`, totalManaUsed: `0x${block.header.totalManaUsed.toBuffer().toString('hex').padStart(64, '0')}`, - lastArchive: { - nextAvailableLeafIndex: block.header.lastArchive.nextAvailableLeafIndex, - root: `0x${block.header.lastArchive.root.toBuffer().toString('hex').padStart(64, '0')}`, - }, - stateReference: { - l1ToL2MessageTree: { - nextAvailableLeafIndex: block.header.state.l1ToL2MessageTree.nextAvailableLeafIndex, - root: `0x${block.header.state.l1ToL2MessageTree.root.toBuffer().toString('hex').padStart(64, '0')}`, - }, - partialStateReference: { - noteHashTree: { - nextAvailableLeafIndex: block.header.state.partial.noteHashTree.nextAvailableLeafIndex, - root: `0x${block.header.state.partial.noteHashTree.root.toBuffer().toString('hex').padStart(64, '0')}`, - }, - nullifierTree: { - nextAvailableLeafIndex: block.header.state.partial.nullifierTree.nextAvailableLeafIndex, - root: `0x${block.header.state.partial.nullifierTree.root.toBuffer().toString('hex').padStart(64, '0')}`, - }, - publicDataTree: { - nextAvailableLeafIndex: block.header.state.partial.publicDataTree.nextAvailableLeafIndex, - root: `0x${block.header.state.partial.publicDataTree.root - .toBuffer() - .toString('hex') - .padStart(64, '0')}`, - }, - }, - }, }, - header: `0x${block.header.toBuffer().toString('hex')}`, - publicInputsHash: `0x${block.getPublicInputsHash().toBuffer().toString('hex').padStart(64, '0')}`, - blobInputs: Blob.getEthBlobEvaluationInputs(blobs), + header: `0x${block.header.toPropose().toBuffer().toString('hex')}`, numTxs: block.body.txEffects.length, }, }; @@ -488,7 +456,7 @@ describe('L1Publisher integration', () => { functionName: 'propose', args: [ { - header: `0x${block.header.toBuffer().toString('hex')}`, + header: `0x${block.header.toPropose().toBuffer().toString('hex')}`, archive: `0x${block.archive.root.toBuffer().toString('hex')}`, oracleInput: { feeAssetPriceModifier: 0n, @@ -497,6 +465,7 @@ describe('L1Publisher integration', () => { }, [], Blob.getEthBlobEvaluationInputs(blobs), + `0x${block.header.state.toBuffer().toString('hex')}`, ], }); const expectedData = encodeFunctionData({ diff --git a/yarn-project/end-to-end/src/e2e_p2p/gossip_network.test.ts b/yarn-project/end-to-end/src/e2e_p2p/gossip_network.test.ts index b4436711e9df..5a1093af517a 100644 --- a/yarn-project/end-to-end/src/e2e_p2p/gossip_network.test.ts +++ b/yarn-project/end-to-end/src/e2e_p2p/gossip_network.test.ts @@ -1,6 +1,6 @@ import type { Archiver } from '@aztec/archiver'; import type { AztecNodeService } from '@aztec/aztec-node'; -import { sleep } from '@aztec/aztec.js'; +import { Fr, sleep } from '@aztec/aztec.js'; import type { SequencerClient } from '@aztec/sequencer-client'; import { BlockAttestation, ConsensusPayload } from '@aztec/stdlib/p2p'; @@ -125,7 +125,9 @@ describe('e2e_p2p_network', () => { const dataStore = ((nodes[0] as AztecNodeService).getBlockSource() as Archiver).dataStore; const [block] = await dataStore.getBlocks(blockNumber, blockNumber); const payload = ConsensusPayload.fromBlock(block.block); - const attestations = block.signatures.filter(s => !s.isEmpty).map(sig => new BlockAttestation(payload, sig)); + const attestations = block.signatures + .filter(s => !s.isEmpty) + .map(sig => new BlockAttestation(new Fr(blockNumber), payload, sig)); const signers = attestations.map(att => att.getSender().toString()); t.logger.info(`Attestation signers`, { signers }); diff --git a/yarn-project/end-to-end/src/e2e_p2p/reex.test.ts b/yarn-project/end-to-end/src/e2e_p2p/reex.test.ts index bf84a619b68c..91337a05b1eb 100644 --- a/yarn-project/end-to-end/src/e2e_p2p/reex.test.ts +++ b/yarn-project/end-to-end/src/e2e_p2p/reex.test.ts @@ -130,6 +130,7 @@ describe('e2e_p2p_reex', () => { // Abusing javascript to access the nodes signing key const signer = (node as any).sequencer.sequencer.validatorClient.validationService.keyStore; const newProposal = new BlockProposal( + proposal.blockNumber, proposal.payload, await signer.signMessage(getHashedSignaturePayload(proposal.payload, SignatureDomainSeparator.blockProposal)), ); diff --git a/yarn-project/foundation/src/serialize/buffer_reader.test.ts b/yarn-project/foundation/src/serialize/buffer_reader.test.ts index bbcb71ee0ba6..d9ea925d2fa3 100644 --- a/yarn-project/foundation/src/serialize/buffer_reader.test.ts +++ b/yarn-project/foundation/src/serialize/buffer_reader.test.ts @@ -3,7 +3,8 @@ import { jest } from '@jest/globals'; import { randomBytes } from '../crypto/index.js'; import { Fq, Fr } from '../fields/fields.js'; import { BufferReader } from './buffer_reader.js'; -import { serializeArrayOfBufferableToVector, serializeToBuffer } from './serialize.js'; +import { bigintToUInt64BE } from './free_funcs.js'; +import { serializeArrayOfBufferableToVector, serializeBigInt, serializeToBuffer } from './serialize.js'; const ARRAY = Array.from(Array(32)).map((_, idx) => (idx % 2 === 0 ? 0 : 1)); const BUFFER = Buffer.from(ARRAY); @@ -42,6 +43,26 @@ describe('buffer reader', () => { }); }); + describe('readUInt64', () => { + it('should read UInt64 from buffer', () => { + // mix in some non-UInt64 values + const content = [1n, 2n ** 64n, 2n ** 64n - 1n, BigInt(Number.MAX_SAFE_INTEGER), 3n]; + const buffer = Buffer.concat([ + bigintToUInt64BE(content[0]), + serializeBigInt(content[1]), + bigintToUInt64BE(content[2]), + serializeBigInt(content[3]), + bigintToUInt64BE(content[4]), + ]); + const myReader = new BufferReader(buffer); + expect(myReader.readUInt64()).toEqual(content[0]); + expect(myReader.readUInt256()).toEqual(content[1]); + expect(myReader.readUInt64()).toEqual(content[2]); + expect(myReader.readUInt256()).toEqual(content[3]); + expect(myReader.readUInt64()).toEqual(content[4]); + }); + }); + describe('readUInt256', () => { it('should read UInt256 from buffer', () => { // mix in some non-UInt256 values diff --git a/yarn-project/foundation/src/serialize/buffer_reader.ts b/yarn-project/foundation/src/serialize/buffer_reader.ts index ca41fd74f7a7..b6966eb63438 100644 --- a/yarn-project/foundation/src/serialize/buffer_reader.ts +++ b/yarn-project/foundation/src/serialize/buffer_reader.ts @@ -70,6 +70,23 @@ export class BufferReader { return result as Tuple; } + /** + * Reads a 256-bit unsigned integer from the buffer at the current index position. + * Updates the index position by 32 bytes after reading the number. + * + * Assumes the number is stored in big-endian format. + * + * @returns The read 256 bit value as a bigint. + */ + public readUInt64(): bigint { + this.#rangeCheck(8); + + const result = this.buffer.readBigUInt64BE(this.index); + + this.index += 8; + return result; + } + /** * Reads a 256-bit unsigned integer from the buffer at the current index position. * Updates the index position by 32 bytes after reading the number. @@ -82,8 +99,8 @@ export class BufferReader { this.#rangeCheck(32); let result = BigInt(0); - for (let i = 0; i < 32; i++) { - result = (result << BigInt(8)) | BigInt(this.buffer[this.index + i]); + for (let i = 0; i < 4; i++) { + result = (result << BigInt(64)) | this.buffer.readBigUInt64BE(this.index + i * 8); } this.index += 32; diff --git a/yarn-project/foundation/src/serialize/free_funcs.ts b/yarn-project/foundation/src/serialize/free_funcs.ts index 6feeb67b587b..ffda9f721198 100644 --- a/yarn-project/foundation/src/serialize/free_funcs.ts +++ b/yarn-project/foundation/src/serialize/free_funcs.ts @@ -56,6 +56,19 @@ export function numToUInt32BE(n: number, bufferSize = 4) { return buf; } +/** + * Convert a bigint to a big-endian unsigned 64-bit integer Buffer. + * + * @param n - The bigint to be converted to a big-endian unsigned 64-bit integer Buffer. + * @param bufferSize - Optional, the size of the output Buffer (default is 8). + * @returns A Buffer containing the big-endian unsigned 64-bit integer representation of the input number. + */ +export function bigintToUInt64BE(n: bigint, bufferSize = 8) { + const buf = Buffer.alloc(bufferSize); + buf.writeBigUInt64BE(n, bufferSize - 8); + return buf; +} + /** * Serialize a number into a big-endian signed 32-bit integer Buffer with the specified buffer size. * This function converts the input number into its binary representation and stores it in a Buffer diff --git a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts index 29f283b6ae86..7c322e484a6b 100644 --- a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts +++ b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts @@ -385,6 +385,7 @@ export function mapBlockRootOrBlockMergePublicInputsToNoir( start_global_variables: mapGlobalVariablesToNoir(blockRootOrBlockMergePublicInputs.startGlobalVariables), end_global_variables: mapGlobalVariablesToNoir(blockRootOrBlockMergePublicInputs.endGlobalVariables), out_hash: mapFieldToNoir(blockRootOrBlockMergePublicInputs.outHash), + proposed_block_header_hashes: mapTuple(blockRootOrBlockMergePublicInputs.proposedBlockHeaderHashes, mapFieldToNoir), fees: mapTuple(blockRootOrBlockMergePublicInputs.fees, mapFeeRecipientToNoir), vk_tree_root: mapFieldToNoir(blockRootOrBlockMergePublicInputs.vkTreeRoot), protocol_contract_tree_root: mapFieldToNoir(blockRootOrBlockMergePublicInputs.protocolContractTreeRoot), @@ -432,6 +433,7 @@ export function mapRootRollupPublicInputsFromNoir( mapFieldFromNoir(rootRollupPublicInputs.end_timestamp), mapFieldFromNoir(rootRollupPublicInputs.end_block_number), mapFieldFromNoir(rootRollupPublicInputs.out_hash), + mapTupleFromNoir(rootRollupPublicInputs.proposed_block_header_hashes, AZTEC_MAX_EPOCH_DURATION, mapFieldFromNoir), mapTupleFromNoir(rootRollupPublicInputs.fees, AZTEC_MAX_EPOCH_DURATION, mapFeeRecipientFromNoir), mapFieldFromNoir(rootRollupPublicInputs.vk_tree_root), mapFieldFromNoir(rootRollupPublicInputs.protocol_contract_tree_root), @@ -595,6 +597,11 @@ export function mapBlockRootOrBlockMergePublicInputsFromNoir( mapGlobalVariablesFromNoir(blockRootOrBlockMergePublicInputs.start_global_variables), mapGlobalVariablesFromNoir(blockRootOrBlockMergePublicInputs.end_global_variables), mapFieldFromNoir(blockRootOrBlockMergePublicInputs.out_hash), + mapTupleFromNoir( + blockRootOrBlockMergePublicInputs.proposed_block_header_hashes, + AZTEC_MAX_EPOCH_DURATION, + mapFieldFromNoir, + ), mapTupleFromNoir(blockRootOrBlockMergePublicInputs.fees, AZTEC_MAX_EPOCH_DURATION, mapFeeRecipientFromNoir), mapFieldFromNoir(blockRootOrBlockMergePublicInputs.vk_tree_root), mapFieldFromNoir(blockRootOrBlockMergePublicInputs.protocol_contract_tree_root), diff --git a/yarn-project/p2p/src/client/p2p_client.ts b/yarn-project/p2p/src/client/p2p_client.ts index 7687b9fb1366..e7a985b05cfa 100644 --- a/yarn-project/p2p/src/client/p2p_client.ts +++ b/yarn-project/p2p/src/client/p2p_client.ts @@ -654,7 +654,9 @@ export class P2PClient private async addAttestationsToPool(blocks: PublishedL2Block[]): Promise { const attestations = blocks.flatMap(block => { const payload = ConsensusPayload.fromBlock(block.block); - return block.signatures.filter(sig => !sig.isEmpty).map(signature => new BlockAttestation(payload, signature)); + return block.signatures + .filter(sig => !sig.isEmpty) + .map(signature => new BlockAttestation(block.block.header.globalVariables.blockNumber, payload, signature)); }); await this.attestationPool?.addAttestations(attestations); const slots = blocks.map(b => b.block.header.getSlot()).sort((a, b) => Number(a - b)); diff --git a/yarn-project/p2p/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts b/yarn-project/p2p/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts index a7296eed81bf..0373319a0e11 100644 --- a/yarn-project/p2p/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +++ b/yarn-project/p2p/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts @@ -118,13 +118,13 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo await ap.addAttestations(attestations); for (const attestation of attestations) { - const slot = attestation.payload.header.globalVariables.slotNumber; + const slot = attestation.payload.header.slotNumber; const archive = attestation.archive.toString(); const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(slot.toBigInt(), archive); expect(retreivedAttestations.length).toBe(1); expect(retreivedAttestations[0].toBuffer()).toEqual(attestation.toBuffer()); - expect(retreivedAttestations[0].payload.header.globalVariables.slotNumber).toEqual(slot); + expect(retreivedAttestations[0].payload.header.slotNumber).toEqual(slot); } }); @@ -136,13 +136,13 @@ export function describeAttestationPool(getAttestationPool: () => AttestationPoo await ap.addAttestations(attestations); for (const attestation of attestations) { - const slot = attestation.payload.header.globalVariables.slotNumber; + const slot = attestation.payload.header.slotNumber; const proposalId = attestation.archive.toString(); const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(slot.toBigInt(), proposalId); expect(retreivedAttestations.length).toBe(1); expect(retreivedAttestations[0].toBuffer()).toEqual(attestation.toBuffer()); - expect(retreivedAttestations[0].payload.header.globalVariables.slotNumber).toEqual(slot); + expect(retreivedAttestations[0].payload.header.slotNumber).toEqual(slot); } }); diff --git a/yarn-project/p2p/src/mem_pools/attestation_pool/kv_attestation_pool.ts b/yarn-project/p2p/src/mem_pools/attestation_pool/kv_attestation_pool.ts index b9297206f3d4..2bfc4796d3ee 100644 --- a/yarn-project/p2p/src/mem_pools/attestation_pool/kv_attestation_pool.ts +++ b/yarn-project/p2p/src/mem_pools/attestation_pool/kv_attestation_pool.ts @@ -46,7 +46,7 @@ export class KvAttestationPool implements AttestationPool { public async addAttestations(attestations: BlockAttestation[]): Promise { await this.store.transactionAsync(async () => { for (const attestation of attestations) { - const slotNumber = attestation.payload.header.globalVariables.slotNumber; + const slotNumber = attestation.payload.header.slotNumber; const proposalId = attestation.archive; const address = attestation.getSender().toString(); @@ -158,7 +158,7 @@ export class KvAttestationPool implements AttestationPool { public async deleteAttestations(attestations: BlockAttestation[]): Promise { await this.store.transactionAsync(async () => { for (const attestation of attestations) { - const slotNumber = attestation.payload.header.globalVariables.slotNumber; + const slotNumber = attestation.payload.header.slotNumber; const proposalId = attestation.archive; const address = attestation.getSender().toString(); diff --git a/yarn-project/p2p/src/mem_pools/attestation_pool/memory_attestation_pool.ts b/yarn-project/p2p/src/mem_pools/attestation_pool/memory_attestation_pool.ts index 426476cc7587..06eac8dc6aa6 100644 --- a/yarn-project/p2p/src/mem_pools/attestation_pool/memory_attestation_pool.ts +++ b/yarn-project/p2p/src/mem_pools/attestation_pool/memory_attestation_pool.ts @@ -37,7 +37,7 @@ export class InMemoryAttestationPool implements AttestationPool { public addAttestations(attestations: BlockAttestation[]): Promise { for (const attestation of attestations) { // Perf: order and group by slot before insertion - const slotNumber = attestation.payload.header.globalVariables.slotNumber; + const slotNumber = attestation.payload.header.slotNumber; const proposalId = attestation.archive.toString(); const address = attestation.getSender(); @@ -120,7 +120,7 @@ export class InMemoryAttestationPool implements AttestationPool { public deleteAttestations(attestations: BlockAttestation[]): Promise { for (const attestation of attestations) { - const slotNumber = attestation.payload.header.globalVariables.slotNumber; + const slotNumber = attestation.payload.header.slotNumber; const slotAttestationMap = this.attestations.get(slotNumber.toBigInt()); if (slotAttestationMap) { const proposalId = attestation.archive.toString(); diff --git a/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts b/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts index 333ed833b701..5abe69aa865b 100644 --- a/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts +++ b/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts @@ -35,10 +35,10 @@ export const mockAttestation = ( ): BlockAttestation => { // Use arbitrary numbers for all other than slot const header = makeHeader(1, 2, slot); - const payload = new ConsensusPayload(header, archive, txs); + const payload = new ConsensusPayload(header.toPropose(), archive, txs); const hash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation); const signature = signer.sign(hash); - return new BlockAttestation(payload, signature); + return new BlockAttestation(header.globalVariables.blockNumber, payload, signature); }; diff --git a/yarn-project/p2p/src/msg_validators/attestation_validator/attestation_validator.ts b/yarn-project/p2p/src/msg_validators/attestation_validator/attestation_validator.ts index f8b3b3acd597..eb503747be85 100644 --- a/yarn-project/p2p/src/msg_validators/attestation_validator/attestation_validator.ts +++ b/yarn-project/p2p/src/msg_validators/attestation_validator/attestation_validator.ts @@ -11,7 +11,7 @@ export class AttestationValidator implements P2PValidator { async validate(message: BlockAttestation): Promise { const { currentSlot, nextSlot } = await this.epochCache.getProposerInCurrentOrNextSlot(); - const slotNumberBigInt = message.payload.header.globalVariables.slotNumber.toBigInt(); + const slotNumberBigInt = message.payload.header.slotNumber.toBigInt(); if (slotNumberBigInt !== currentSlot && slotNumberBigInt !== nextSlot) { return PeerErrorSeverity.HighToleranceError; } diff --git a/yarn-project/p2p/src/msg_validators/block_proposal_validator/block_proposal_validator.ts b/yarn-project/p2p/src/msg_validators/block_proposal_validator/block_proposal_validator.ts index 35c9100ea81d..f542026f60c2 100644 --- a/yarn-project/p2p/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +++ b/yarn-project/p2p/src/msg_validators/block_proposal_validator/block_proposal_validator.ts @@ -13,7 +13,7 @@ export class BlockProposalValidator implements P2PValidator { await this.epochCache.getProposerInCurrentOrNextSlot(); // Check that the attestation is for the current or next slot - const slotNumberBigInt = block.payload.header.globalVariables.slotNumber.toBigInt(); + const slotNumberBigInt = block.payload.header.slotNumber.toBigInt(); if (slotNumberBigInt !== currentSlot && slotNumberBigInt !== nextSlot) { return PeerErrorSeverity.HighToleranceError; } diff --git a/yarn-project/p2p/src/services/libp2p/libp2p_service.ts b/yarn-project/p2p/src/services/libp2p/libp2p_service.ts index 69728cfdae61..b9fbac031721 100644 --- a/yarn-project/p2p/src/services/libp2p/libp2p_service.ts +++ b/yarn-project/p2p/src/services/libp2p/libp2p_service.ts @@ -568,7 +568,7 @@ export class LibP2PService extends const attestation = BlockAttestation.fromBuffer(Buffer.from(msg.data)); const result = await this.validateAttestation(source, attestation); this.logger.trace(`validatePropagatedAttestation: ${result}`, { - [Attributes.SLOT_NUMBER]: attestation.payload.header.globalVariables.slotNumber.toString(), + [Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber.toString(), [Attributes.P2P_ID]: source.toString(), }); return { result, obj: attestation }; @@ -599,7 +599,7 @@ export class LibP2PService extends const block = BlockProposal.fromBuffer(Buffer.from(msg.data)); const result = await this.validateBlockProposal(source, block); this.logger.trace(`validatePropagatedBlock: ${result}`, { - [Attributes.SLOT_NUMBER]: block.payload.header.globalVariables.slotNumber.toString(), + [Attributes.SLOT_NUMBER]: block.payload.header.slotNumber.toString(), [Attributes.P2P_ID]: source.toString(), }); return { result, obj: block }; @@ -652,8 +652,8 @@ export class LibP2PService extends * @param attestation - The attestation to broadcast. */ @trackSpan('Libp2pService.broadcastAttestation', async attestation => ({ - [Attributes.BLOCK_NUMBER]: attestation.payload.header.globalVariables.blockNumber.toNumber(), - [Attributes.SLOT_NUMBER]: attestation.payload.header.globalVariables.slotNumber.toNumber(), + [Attributes.BLOCK_NUMBER]: attestation.blockNumber.toNumber(), + [Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber.toNumber(), [Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(), [Attributes.P2P_ID]: await attestation.p2pMessageIdentifier().then(i => i.toString()), })) @@ -881,8 +881,8 @@ export class LibP2PService extends * @returns True if the attestation is valid, false otherwise. */ @trackSpan('Libp2pService.validateAttestation', async (_, attestation) => ({ - [Attributes.BLOCK_NUMBER]: attestation.payload.header.globalVariables.blockNumber.toNumber(), - [Attributes.SLOT_NUMBER]: attestation.payload.header.globalVariables.slotNumber.toNumber(), + [Attributes.BLOCK_NUMBER]: attestation.blockNumber.toNumber(), + [Attributes.SLOT_NUMBER]: attestation.payload.header.slotNumber.toNumber(), [Attributes.BLOCK_ARCHIVE]: attestation.archive.toString(), [Attributes.P2P_ID]: await attestation.p2pMessageIdentifier().then(i => i.toString()), })) @@ -903,7 +903,7 @@ export class LibP2PService extends * @returns True if the block proposal is valid, false otherwise. */ @trackSpan('Libp2pService.validateBlockProposal', (_peerId, block) => ({ - [Attributes.SLOT_NUMBER]: block.payload.header.globalVariables.slotNumber.toString(), + [Attributes.SLOT_NUMBER]: block.payload.header.slotNumber.toString(), })) public async validateBlockProposal(peerId: PeerId, block: BlockProposal): Promise { const severity = await this.blockProposalValidator.validate(block); diff --git a/yarn-project/prover-node/src/prover-node-publisher.test.ts b/yarn-project/prover-node/src/prover-node-publisher.test.ts index 6d4991127d71..95f4394ef75c 100644 --- a/yarn-project/prover-node/src/prover-node-publisher.test.ts +++ b/yarn-project/prover-node/src/prover-node-publisher.test.ts @@ -136,6 +136,7 @@ describe('prover-node-publisher', () => { rollup.getBlock.mockImplementation((blockNumber: bigint) => Promise.resolve({ archive: blocks[Number(blockNumber) - 1].endArchive.root.toString(), + headerHash: '0x', // unused, slotNumber: 0n, // unused, }), ); diff --git a/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts b/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts index 7963a9cec301..668d4383a944 100644 --- a/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts +++ b/yarn-project/sequencer-client/src/global_variable_builder/global_builder.ts @@ -21,9 +21,12 @@ import { createPublicClient, fallback, http } from 'viem'; export class GlobalVariableBuilder implements GlobalVariableBuilderInterface { private log = createLogger('sequencer:global_variable_builder'); - private rollupContract: RollupContract; - private publicClient: ViemPublicClient; - private ethereumSlotDuration: number; + private readonly rollupContract: RollupContract; + private readonly publicClient: ViemPublicClient; + private readonly ethereumSlotDuration: number; + + private chainId?: Fr; + private version?: Fr; constructor(config: L1ReaderConfig & Pick) { const { l1RpcUrls, l1ChainId: chainId, l1Contracts } = config; @@ -58,6 +61,16 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface { return new GasFees(Fr.ZERO, new Fr(await this.rollupContract.getManaBaseFeeAt(timestamp, true))); } + public async getGlobalConstantVariables(): Promise> { + if (!this.chainId) { + this.chainId = new Fr(this.publicClient.chain.id); + } + if (!this.version) { + this.version = new Fr(await this.rollupContract.getVersion()); + } + return { chainId: this.chainId, version: this.version }; + } + /** * Simple builder of global variables that use the minimum time possible. * @param blockNumber - The block number to build global variables for. @@ -72,8 +85,7 @@ export class GlobalVariableBuilder implements GlobalVariableBuilderInterface { feeRecipient: AztecAddress, slotNumber?: bigint, ): Promise { - const version = new Fr(await this.rollupContract.getVersion()); - const chainId = new Fr(this.publicClient.chain.id); + const { chainId, version } = await this.getGlobalConstantVariables(); if (slotNumber === undefined) { const ts = BigInt((await this.publicClient.getBlock()).timestamp + BigInt(this.ethereumSlotDuration)); diff --git a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts index 869326a10a6a..c94dc17bca03 100644 --- a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts +++ b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts @@ -22,7 +22,7 @@ import { L2Block } from '@aztec/stdlib/block'; import express, { json } from 'express'; import type { Server } from 'http'; import { type MockProxy, mock } from 'jest-mock-extended'; -import { type GetTransactionReceiptReturnType, type TransactionReceipt, encodeFunctionData } from 'viem'; +import { type GetTransactionReceiptReturnType, type TransactionReceipt, encodeFunctionData, toHex } from 'viem'; import type { PublisherConfig, TxSenderConfig } from './config.js'; import { SequencerPublisher, VoteType } from './sequencer-publisher.js'; @@ -139,7 +139,7 @@ describe('SequencerPublisher', () => { l2Block = await L2Block.random(42, undefined, undefined, undefined, undefined, Number(currentL2Slot)); - header = l2Block.header.toBuffer(); + header = l2Block.header.toPropose().toBuffer(); archive = l2Block.archive.root.toBuffer(); blockHash = (await l2Block.header.hash()).toBuffer(); }); @@ -215,9 +215,9 @@ describe('SequencerPublisher', () => { const args = [ { - header: `0x${header.toString('hex')}`, - archive: `0x${archive.toString('hex')}`, - blockHash: `0x${blockHash.toString('hex')}`, + header: toHex(header), + archive: toHex(archive), + blockHash: toHex(blockHash), oracleInput: { feeAssetPriceModifier: 0n, }, @@ -225,6 +225,7 @@ describe('SequencerPublisher', () => { }, [], blobInput, + toHex(l2Block.header.state.toBuffer()), ] as const; expect(forwarder.forward).toHaveBeenCalledWith( [ diff --git a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts index 4c0a61e82b45..92e63b453f12 100644 --- a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts @@ -18,7 +18,7 @@ import { formatViemError, } from '@aztec/ethereum'; import type { L1TxUtilsWithBlobs } from '@aztec/ethereum/l1-tx-utils-with-blobs'; -import { toHex } from '@aztec/foundation/bigint-buffer'; +import { toHex as toPaddedHex } from '@aztec/foundation/bigint-buffer'; import { EthAddress } from '@aztec/foundation/eth-address'; import type { Signature } from '@aztec/foundation/eth-signature'; import { createLogger } from '@aztec/foundation/log'; @@ -26,11 +26,11 @@ import { Timer } from '@aztec/foundation/timer'; import { ForwarderAbi, RollupAbi } from '@aztec/l1-artifacts'; import { ConsensusPayload, SignatureDomainSeparator, getHashedSignaturePayload } from '@aztec/stdlib/p2p'; import type { L1PublishBlockStats } from '@aztec/stdlib/stats'; -import { type BlockHeader, TxHash } from '@aztec/stdlib/tx'; +import { type ProposedBlockHeader, StateReference, TxHash } from '@aztec/stdlib/tx'; import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client'; import pick from 'lodash.pick'; -import { type TransactionReceipt, encodeFunctionData } from 'viem'; +import { type TransactionReceipt, encodeFunctionData, toHex } from 'viem'; import type { PublisherConfig, TxSenderConfig } from './config.js'; import { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js'; @@ -47,6 +47,8 @@ type L1ProcessArgs = { txHashes: TxHash[]; /** Attestations */ attestations?: Signature[]; + /** State reference */ + stateReference: StateReference; }; export enum VoteType { @@ -285,7 +287,7 @@ export class SequencerPublisher { * */ public async validateBlockForSubmission( - header: BlockHeader, + header: ProposedBlockHeader, attestationData: { digest: Buffer; signatures: Signature[] } = { digest: Buffer.alloc(32), signatures: [], @@ -297,11 +299,11 @@ export class SequencerPublisher { const flags = { ignoreDA: true, ignoreSignatures: formattedSignatures.length == 0 }; const args = [ - `0x${header.toBuffer().toString('hex')}`, + toHex(header.toBuffer()), formattedSignatures, - `0x${attestationData.digest.toString('hex')}`, + toHex(attestationData.digest), ts, - `0x${header.contentCommitment.blobsHash.toString('hex')}`, + toHex(header.contentCommitment.blobsHash), flags, ] as const; @@ -407,25 +409,27 @@ export class SequencerPublisher { txHashes?: TxHash[], opts: { txTimeoutAt?: Date } = {}, ): Promise { - const consensusPayload = new ConsensusPayload(block.header, block.archive.root, txHashes ?? []); + const proposedBlockHeader = block.header.toPropose(); + const consensusPayload = new ConsensusPayload(proposedBlockHeader, block.archive.root, txHashes ?? []); const digest = getHashedSignaturePayload(consensusPayload, SignatureDomainSeparator.blockAttestation); const blobs = await Blob.getBlobs(block.body.toBlobFields()); const proposeTxArgs = { - header: block.header.toBuffer(), + header: proposedBlockHeader.toBuffer(), archive: block.archive.root.toBuffer(), body: block.body.toBuffer(), blobs, attestations, txHashes: txHashes ?? [], + stateReference: block.header.state, }; // @note This will make sure that we are passing the checks for our header ASSUMING that the data is also made available // This means that we can avoid the simulation issues in later checks. // By simulation issue, I mean the fact that the block.timestamp is equal to the last block, not the next, which // make time consistency checks break. - const ts = await this.validateBlockForSubmission(block.header, { + const ts = await this.validateBlockForSubmission(proposedBlockHeader, { digest: digest.toBuffer(), signatures: attestations ?? [], }); @@ -485,8 +489,8 @@ export class SequencerPublisher { const txHashes = encodedData.txHashes ? encodedData.txHashes.map(txHash => txHash.toString()) : []; const args = [ { - header: `0x${encodedData.header.toString('hex')}`, - archive: `0x${encodedData.archive.toString('hex')}`, + header: toHex(encodedData.header), + archive: toHex(encodedData.archive), oracleInput: { // We are currently not modifying these. See #9963 feeAssetPriceModifier: 0n, @@ -495,6 +499,7 @@ export class SequencerPublisher { }, attestations, blobInput, + toHex(encodedData.stateReference.toBuffer()), ] as const; const rollupData = encodeFunctionData({ @@ -528,8 +533,8 @@ export class SequencerPublisher { // @note we override checkBlob to false since blobs are not part simulate() stateDiff: [ { - slot: toHex(RollupContract.checkBlobStorageSlot, true), - value: toHex(0n, true), + slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true), + value: toPaddedHex(0n, true), }, ], }, diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts index b2051dc0622e..dc89e9f8dbc9 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts @@ -85,13 +85,21 @@ describe('sequencer', () => { const getSignatures = () => [mockedSig]; const getAttestations = () => { - const attestation = new BlockAttestation(new ConsensusPayload(block.header, archive, []), mockedSig); + const attestation = new BlockAttestation( + block.header.globalVariables.blockNumber, + new ConsensusPayload(block.header.toPropose(), archive, []), + mockedSig, + ); (attestation as any).sender = committee[0]; return [attestation]; }; const createBlockProposal = () => { - return new BlockProposal(new ConsensusPayload(block.header, archive, [TxHash.random()]), mockedSig); + return new BlockProposal( + block.header.globalVariables.blockNumber, + new ConsensusPayload(block.header.toPropose(), archive, [TxHash.random()]), + mockedSig, + ); }; const processTxs = async (txs: Tx[]) => { diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.ts index edb78076bfce..963b30b73255 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.ts @@ -24,15 +24,8 @@ import { import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging'; import { pickFromSchema } from '@aztec/stdlib/schemas'; import type { L2BlockBuiltStats } from '@aztec/stdlib/stats'; -import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees'; -import { - BlockHeader, - ContentCommitment, - type GlobalVariables, - StateReference, - Tx, - type TxHash, -} from '@aztec/stdlib/tx'; +import { MerkleTreeId } from '@aztec/stdlib/trees'; +import { ContentCommitment, GlobalVariables, ProposedBlockHeader, Tx, type TxHash } from '@aztec/stdlib/tx'; import { Attributes, L1Metrics, @@ -117,7 +110,7 @@ export class Sequencer { ]); // Register the block builder with the validator client for re-execution - this.validatorClient?.registerBlockBuilder(this.buildBlock.bind(this)); + this.validatorClient?.registerBlockBuilder(this.buildBlockFromProposal.bind(this)); // Register the slasher on the publisher to fetch slashing payloads this.publisher.registerSlashPayloadGetter(this.slasherClient.getSlashPayload.bind(this.slasherClient)); @@ -308,14 +301,13 @@ export class Sequencer { }); // If I created a "partial" header here that should make our job much easier. - const proposalHeader = new BlockHeader( - new AppendOnlyTreeSnapshot(chainTipArchive, 1), - ContentCommitment.empty(), - StateReference.empty(), - newGlobalVariables, - Fr.ZERO, - Fr.ZERO, - ); + const proposalHeader = ProposedBlockHeader.from({ + ...newGlobalVariables, + timestamp: newGlobalVariables.timestamp.toBigInt(), + lastArchiveRoot: chainTipArchive, + contentCommitment: ContentCommitment.empty(), + totalManaUsed: Fr.ZERO, + }); let finishedFlushing = false; const pendingTxCount = await this.p2pClient.getPendingTxCount(); @@ -324,7 +316,7 @@ export class Sequencer { // and also we may need to fetch more if we don't have enough valid txs. const pendingTxs = this.p2pClient.iteratePendingTxs(); - await this.buildBlockAndEnqueuePublish(pendingTxs, proposalHeader).catch(err => { + await this.buildBlockAndEnqueuePublish(pendingTxs, proposalHeader, newGlobalVariables).catch(err => { this.log.error(`Error building/enqueuing block`, err, { blockNumber: newBlockNumber, slot }); }); finishedFlushing = true; @@ -423,11 +415,8 @@ export class Sequencer { /** * Build a block * - * Shared between the sequencer and the validator for re-execution - * * @param pendingTxs - The pending transactions to construct the block from * @param newGlobalVariables - The global variables for the new block - * @param historicalHeader - The historical header of the parent * @param opts - Whether to just validate the block as a validator, as opposed to building it as a proposal */ protected async buildBlock( @@ -568,6 +557,31 @@ export class Sequencer { } } + /** + * Build a block from a proposal. Used by the validator to re-execute transactions. + * + * @param blockNumber - The block number of the proposal. + * @param header - The header of the proposal. + * @param pendingTxs - The pending transactions to construct the block from. + * @param opts - Whether to just validate the block as a validator, as opposed to building it as a proposal. + */ + async buildBlockFromProposal( + blockNumber: Fr, + header: ProposedBlockHeader, + pendingTxs: Iterable | AsyncIterable, + opts: { validateOnly?: boolean } = {}, + ) { + const { chainId, version } = await this.globalsBuilder.getGlobalConstantVariables(); + const globalVariables = GlobalVariables.from({ + ...header, + blockNumber, + timestamp: new Fr(header.timestamp), + chainId, + version, + }); + return await this.buildBlock(pendingTxs, globalVariables, opts); + } + /** * @notice Build and propose a block to the chain * @@ -577,18 +591,18 @@ export class Sequencer { * @param pendingTxs - Iterable of pending transactions to construct the block from * @param proposalHeader - The partial header constructed for the proposal */ - @trackSpan('Sequencer.buildBlockAndEnqueuePublish', (_validTxs, proposalHeader) => ({ - [Attributes.BLOCK_NUMBER]: proposalHeader.globalVariables.blockNumber.toNumber(), + @trackSpan('Sequencer.buildBlockAndEnqueuePublish', (_validTxs, _proposalHeader, newGlobalVariables) => ({ + [Attributes.BLOCK_NUMBER]: newGlobalVariables.blockNumber.toNumber(), })) private async buildBlockAndEnqueuePublish( pendingTxs: Iterable | AsyncIterable, - proposalHeader: BlockHeader, + proposalHeader: ProposedBlockHeader, + newGlobalVariables: GlobalVariables, ): Promise { await this.publisher.validateBlockForSubmission(proposalHeader); - const newGlobalVariables = proposalHeader.globalVariables; const blockNumber = newGlobalVariables.blockNumber.toNumber(); - const slot = newGlobalVariables.slotNumber.toBigInt(); + const slot = proposalHeader.slotNumber.toBigInt(); // this.metrics.recordNewBlock(blockNumber, validTxs.length); const workTimer = new Timer(); @@ -601,7 +615,7 @@ export class Sequencer { // TODO(@PhilWindle) We should probably periodically check for things like another // block being published before ours instead of just waiting on our block - await this.publisher.validateBlockForSubmission(block.header); + await this.publisher.validateBlockForSubmission(block.header.toPropose()); const blockStats: L2BlockBuiltStats = { eventName: 'l2-block-built', @@ -668,7 +682,12 @@ export class Sequencer { this.setState(SequencerState.COLLECTING_ATTESTATIONS, slotNumber); this.log.debug('Creating block proposal for validators'); - const proposal = await this.validatorClient.createBlockProposal(block.header, block.archive.root, txHashes); + const proposal = await this.validatorClient.createBlockProposal( + block.header.globalVariables.blockNumber, + block.header.toPropose(), + block.archive.root, + txHashes, + ); if (!proposal) { const msg = `Failed to create block proposal`; throw new Error(msg); diff --git a/yarn-project/stdlib/src/block/l2_block.ts b/yarn-project/stdlib/src/block/l2_block.ts index d5ffa3c3c34a..8ff63639025d 100644 --- a/yarn-project/stdlib/src/block/l2_block.ts +++ b/yarn-project/stdlib/src/block/l2_block.ts @@ -1,4 +1,3 @@ -import { sha256, sha256ToField } from '@aztec/foundation/crypto'; import { Fr } from '@aztec/foundation/fields'; import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; @@ -117,65 +116,6 @@ export class L2Block { return this.header.hash(); } - /** - * Computes the public inputs hash for the L2 block. - * The same output as the hash of RootRollupPublicInputs. - * TODO(Miranda): Check where/if this is used (v diff now with epochs and blobs) - * @returns The public input hash for the L2 block as a field element. - */ - // TODO(#4844) - getPublicInputsHash(): Fr { - const preimage = [ - this.header.globalVariables, - AppendOnlyTreeSnapshot.zero(), // this.startNoteHashTreeSnapshot / commitments, - AppendOnlyTreeSnapshot.zero(), // this.startNullifierTreeSnapshot, - AppendOnlyTreeSnapshot.zero(), // this.startPublicDataTreeSnapshot, - AppendOnlyTreeSnapshot.zero(), // this.startL1ToL2MessageTreeSnapshot, - this.header.lastArchive, - this.header.state.partial.noteHashTree, - this.header.state.partial.nullifierTree, - this.header.state.partial.publicDataTree, - this.header.state.l1ToL2MessageTree, - this.archive, - ]; - - return sha256ToField(preimage); - } - - /** - * Computes the start state hash (should equal contract data before block). - * @returns The start state hash for the L2 block. - */ - // TODO(#4844) - getStartStateHash() { - const inputValue = serializeToBuffer( - new Fr(Number(this.header.globalVariables.blockNumber.toBigInt()) - 1), - AppendOnlyTreeSnapshot.zero(), // this.startNoteHashTreeSnapshot, - AppendOnlyTreeSnapshot.zero(), // this.startNullifierTreeSnapshot, - AppendOnlyTreeSnapshot.zero(), // this.startPublicDataTreeSnapshot, - AppendOnlyTreeSnapshot.zero(), // this.startL1ToL2MessageTreeSnapshot, - this.header.lastArchive, - ); - return sha256(inputValue); - } - - /** - * Computes the end state hash (should equal contract data after block). - * @returns The end state hash for the L2 block. - */ - // TODO(#4844) - getEndStateHash() { - const inputValue = serializeToBuffer( - this.header.globalVariables.blockNumber, - this.header.state.partial.noteHashTree, - this.header.state.partial.nullifierTree, - this.header.state.partial.publicDataTree, - this.header.state.l1ToL2MessageTree, - this.archive, - ); - return sha256(inputValue); - } - /** * Returns stats used for logging. * @returns Stats on tx count, number, and log size and count. diff --git a/yarn-project/stdlib/src/p2p/block_attestation.ts b/yarn-project/stdlib/src/p2p/block_attestation.ts index f1b4ca50ab5e..74072381b589 100644 --- a/yarn-project/stdlib/src/p2p/block_attestation.ts +++ b/yarn-project/stdlib/src/p2p/block_attestation.ts @@ -2,7 +2,7 @@ import { Buffer32 } from '@aztec/foundation/buffer'; import { keccak256, recoverAddress } from '@aztec/foundation/crypto'; import type { EthAddress } from '@aztec/foundation/eth-address'; import { Signature } from '@aztec/foundation/eth-signature'; -import type { Fr } from '@aztec/foundation/fields'; +import { Fr } from '@aztec/foundation/fields'; import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { z } from 'zod'; @@ -31,6 +31,9 @@ export class BlockAttestation extends Gossipable { private sender: EthAddress | undefined; constructor( + /** The block number of the attestation. */ + public readonly blockNumber: Fr, + /** The payload of the message, and what the signature is over */ public readonly payload: ConsensusPayload, @@ -43,10 +46,11 @@ export class BlockAttestation extends Gossipable { static get schema(): ZodFor { return z .object({ + blockNumber: Fr.schema, payload: ConsensusPayload.schema, signature: Signature.schema, }) - .transform(obj => new BlockAttestation(obj.payload, obj.signature)); + .transform(obj => new BlockAttestation(obj.blockNumber, obj.payload, obj.signature)); } override p2pMessageIdentifier(): Promise { @@ -58,11 +62,7 @@ export class BlockAttestation extends Gossipable { } get slotNumber(): Fr { - return this.payload.header.globalVariables.slotNumber; - } - - get blockNumber(): Fr { - return this.payload.header.globalVariables.blockNumber; + return this.payload.header.slotNumber; } /**Get sender @@ -86,19 +86,23 @@ export class BlockAttestation extends Gossipable { } toBuffer(): Buffer { - return serializeToBuffer([this.payload, this.signature]); + return serializeToBuffer([this.blockNumber, this.payload, this.signature]); } static fromBuffer(buf: Buffer | BufferReader): BlockAttestation { const reader = BufferReader.asReader(buf); - return new BlockAttestation(reader.readObject(ConsensusPayload), reader.readObject(Signature)); + return new BlockAttestation( + reader.readObject(Fr), + reader.readObject(ConsensusPayload), + reader.readObject(Signature), + ); } static empty(): BlockAttestation { - return new BlockAttestation(ConsensusPayload.empty(), Signature.empty()); + return new BlockAttestation(Fr.ZERO, ConsensusPayload.empty(), Signature.empty()); } getSize(): number { - return this.payload.getSize() + this.signature.getSize(); + return this.blockNumber.size + this.payload.getSize() + this.signature.getSize(); } } diff --git a/yarn-project/stdlib/src/p2p/block_proposal.ts b/yarn-project/stdlib/src/p2p/block_proposal.ts index 0bee1a3f40c3..99f227ee1425 100644 --- a/yarn-project/stdlib/src/p2p/block_proposal.ts +++ b/yarn-project/stdlib/src/p2p/block_proposal.ts @@ -2,7 +2,7 @@ import { Buffer32 } from '@aztec/foundation/buffer'; import { keccak256, recoverAddress } from '@aztec/foundation/crypto'; import type { EthAddress } from '@aztec/foundation/eth-address'; import { Signature } from '@aztec/foundation/eth-signature'; -import type { Fr } from '@aztec/foundation/fields'; +import { Fr } from '@aztec/foundation/fields'; import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { ConsensusPayload } from './consensus_payload.js'; @@ -32,6 +32,9 @@ export class BlockProposal extends Gossipable { private sender: EthAddress | undefined; constructor( + /** The number of the block */ + public readonly blockNumber: Fr, + /** The payload of the message, and what the signature is over */ public readonly payload: ConsensusPayload, @@ -50,21 +53,18 @@ export class BlockProposal extends Gossipable { } get slotNumber(): Fr { - return this.payload.header.globalVariables.slotNumber; - } - - get blockNumber(): Fr { - return this.payload.header.globalVariables.blockNumber; + return this.payload.header.slotNumber; } static async createProposalFromSigner( + blockNumber: Fr, payload: ConsensusPayload, payloadSigner: (payload: Buffer32) => Promise, ) { const hashed = getHashedSignaturePayload(payload, SignatureDomainSeparator.blockProposal); const sig = await payloadSigner(hashed); - return new BlockProposal(payload, sig); + return new BlockProposal(blockNumber, payload, sig); } /**Get Sender @@ -85,15 +85,15 @@ export class BlockProposal extends Gossipable { } toBuffer(): Buffer { - return serializeToBuffer([this.payload, this.signature]); + return serializeToBuffer([this.blockNumber, this.payload, this.signature]); } static fromBuffer(buf: Buffer | BufferReader): BlockProposal { const reader = BufferReader.asReader(buf); - return new BlockProposal(reader.readObject(ConsensusPayload), reader.readObject(Signature)); + return new BlockProposal(reader.readObject(Fr), reader.readObject(ConsensusPayload), reader.readObject(Signature)); } getSize(): number { - return this.payload.getSize() + this.signature.getSize(); + return this.blockNumber.size + this.payload.getSize() + this.signature.getSize(); } } diff --git a/yarn-project/stdlib/src/p2p/consensus_payload.ts b/yarn-project/stdlib/src/p2p/consensus_payload.ts index ea1f11bb57fb..f2cb6558c353 100644 --- a/yarn-project/stdlib/src/p2p/consensus_payload.ts +++ b/yarn-project/stdlib/src/p2p/consensus_payload.ts @@ -8,7 +8,7 @@ import { encodeAbiParameters, parseAbiParameters } from 'viem'; import { z } from 'zod'; import type { L2Block } from '../block/l2_block.js'; -import { BlockHeader } from '../tx/block_header.js'; +import { ProposedBlockHeader } from '../tx/index.js'; import { TxHash } from '../tx/tx_hash.js'; import type { Signable, SignatureDomainSeparator } from './signature_utils.js'; @@ -16,8 +16,8 @@ export class ConsensusPayload implements Signable { private size: number | undefined; constructor( - /** The block header the attestation is made over */ - public readonly header: BlockHeader, + /** The proposed block header the attestation is made over */ + public readonly header: ProposedBlockHeader, // TODO(https://github.com/AztecProtocol/aztec-packages/pull/7727#discussion_r1713670830): temporary public readonly archive: Fr, /** The sequence of transactions in the block */ @@ -27,7 +27,7 @@ export class ConsensusPayload implements Signable { static get schema() { return z .object({ - header: BlockHeader.schema, + header: ProposedBlockHeader.schema, archive: schemas.Fr, txHashes: z.array(TxHash.schema), }) @@ -39,11 +39,12 @@ export class ConsensusPayload implements Signable { } getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer { - const abi = parseAbiParameters('uint8, (bytes32, (uint256), bytes, bytes32[])'); + const abi = parseAbiParameters('uint8, (bytes32, (uint256), bytes32, bytes32[])'); + const headerHash = this.header.hash().toString(); const txArray = this.txHashes.map(tx => tx.toString()); const encodedData = encodeAbiParameters(abi, [ domainSeparator, - [this.archive.toString(), [0n] /* @todo See #9963 */, this.header.toString(), txArray], + [this.archive.toString(), [0n] /* @todo See #9963 */, headerHash, txArray], ] as const); return hexToBuffer(encodedData); @@ -58,7 +59,7 @@ export class ConsensusPayload implements Signable { static fromBuffer(buf: Buffer | BufferReader): ConsensusPayload { const reader = BufferReader.asReader(buf); return new ConsensusPayload( - reader.readObject(BlockHeader), + reader.readObject(ProposedBlockHeader), reader.readObject(Fr), reader.readArray(reader.readNumber(), TxHash), ); @@ -70,14 +71,14 @@ export class ConsensusPayload implements Signable { static fromBlock(block: L2Block): ConsensusPayload { return new ConsensusPayload( - block.header, + block.header.toPropose(), block.archive.root, block.body.txEffects.map(tx => tx.txHash), ); } static empty(): ConsensusPayload { - return new ConsensusPayload(BlockHeader.empty(), Fr.ZERO, []); + return new ConsensusPayload(ProposedBlockHeader.empty(), Fr.ZERO, []); } /** diff --git a/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts b/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts index 48c17e262506..0847f94778db 100644 --- a/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts +++ b/yarn-project/stdlib/src/rollup/block_root_or_block_merge_public_inputs.ts @@ -36,6 +36,10 @@ export class BlockRootOrBlockMergePublicInputs { * Note: Truncated to 31 bytes to fit in Fr. */ public outHash: Fr, + /** + * The hashes of the proposed block headers of the constituent blocks. + */ + public proposedBlockHeaderHashes: Tuple, /** * The summed `transaction_fee`s and recipients of the constituent blocks. */ @@ -71,6 +75,7 @@ export class BlockRootOrBlockMergePublicInputs { reader.readObject(GlobalVariables), reader.readObject(GlobalVariables), Fr.fromBuffer(reader), + reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr), reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient), Fr.fromBuffer(reader), Fr.fromBuffer(reader), @@ -90,6 +95,7 @@ export class BlockRootOrBlockMergePublicInputs { this.startGlobalVariables, this.endGlobalVariables, this.outHash, + this.proposedBlockHeaderHashes, this.fees, this.vkTreeRoot, this.protocolContractTreeRoot, diff --git a/yarn-project/stdlib/src/rollup/root_rollup.ts b/yarn-project/stdlib/src/rollup/root_rollup.ts index 817cdf7772d4..54c1d7ddf772 100644 --- a/yarn-project/stdlib/src/rollup/root_rollup.ts +++ b/yarn-project/stdlib/src/rollup/root_rollup.ts @@ -107,6 +107,7 @@ export class RootRollupPublicInputs { public endTimestamp: Fr, public endBlockNumber: Fr, public outHash: Fr, + public proposedBlockHeaderHashes: Tuple, public fees: Tuple, public vkTreeRoot: Fr, public protocolContractTreeRoot: Fr, @@ -121,6 +122,7 @@ export class RootRollupPublicInputs { fields.endTimestamp, fields.endBlockNumber, fields.outHash, + fields.proposedBlockHeaderHashes, fields.fees, fields.vkTreeRoot, fields.protocolContractTreeRoot, @@ -154,6 +156,7 @@ export class RootRollupPublicInputs { Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr), reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient), Fr.fromBuffer(reader), Fr.fromBuffer(reader), @@ -188,6 +191,7 @@ export class RootRollupPublicInputs { Fr.random(), Fr.random(), Fr.random(), + makeTuple(AZTEC_MAX_EPOCH_DURATION, Fr.random), makeTuple(AZTEC_MAX_EPOCH_DURATION, FeeRecipient.random), Fr.random(), Fr.random(), diff --git a/yarn-project/stdlib/src/tests/factories.ts b/yarn-project/stdlib/src/tests/factories.ts index 07820a8b8046..a84e7de14a21 100644 --- a/yarn-project/stdlib/src/tests/factories.ts +++ b/yarn-project/stdlib/src/tests/factories.ts @@ -716,6 +716,7 @@ export function makeBlockRootOrBlockMergeRollupPublicInputs( globalVariables ?? makeGlobalVariables(seed + 0x400), globalVariables ?? makeGlobalVariables(seed + 0x500), fr(seed + 0x600), + makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x650), makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x700), fr(seed + 0x800), fr(seed + 0x801), @@ -884,6 +885,7 @@ export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs { fr(seed + 0x300), fr(seed + 0x400), fr(seed + 0x500), + makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x650), makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x600), fr(seed + 0x700), fr(seed + 0x701), diff --git a/yarn-project/stdlib/src/tests/mocks.ts b/yarn-project/stdlib/src/tests/mocks.ts index 9e947cefaa63..7245fa92a085 100644 --- a/yarn-project/stdlib/src/tests/mocks.ts +++ b/yarn-project/stdlib/src/tests/mocks.ts @@ -233,7 +233,7 @@ const makeAndSignConsensusPayload = ( } = options ?? {}; const payload = ConsensusPayload.fromFields({ - header, + header: header.toPropose(), archive, txHashes, }); @@ -241,16 +241,22 @@ const makeAndSignConsensusPayload = ( const hash = getHashedSignaturePayloadEthSignedMessage(payload, domainSeparator); const signature = signer.sign(hash); - return { payload, signature }; + return { blockNumber: header.globalVariables.blockNumber, payload, signature }; }; export const makeBlockProposal = (options?: MakeConsensusPayloadOptions): BlockProposal => { - const { payload, signature } = makeAndSignConsensusPayload(SignatureDomainSeparator.blockProposal, options); - return new BlockProposal(payload, signature); + const { blockNumber, payload, signature } = makeAndSignConsensusPayload( + SignatureDomainSeparator.blockProposal, + options, + ); + return new BlockProposal(blockNumber, payload, signature); }; // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8028) export const makeBlockAttestation = (options?: MakeConsensusPayloadOptions): BlockAttestation => { - const { payload, signature } = makeAndSignConsensusPayload(SignatureDomainSeparator.blockAttestation, options); - return new BlockAttestation(payload, signature); + const { blockNumber, payload, signature } = makeAndSignConsensusPayload( + SignatureDomainSeparator.blockAttestation, + options, + ); + return new BlockAttestation(blockNumber, payload, signature); }; diff --git a/yarn-project/stdlib/src/tx/__snapshots__/proposed_block_header.test.ts.snap b/yarn-project/stdlib/src/tx/__snapshots__/proposed_block_header.test.ts.snap new file mode 100644 index 000000000000..a61b752a2ac7 --- /dev/null +++ b/yarn-project/stdlib/src/tx/__snapshots__/proposed_block_header.test.ts.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ProposedBlockHeader computes empty hash 1`] = `Fr<0x002e384af86a480f952aa16443fd29646a9063865e62d7c403fc7ed697bb7712>`; + +exports[`ProposedBlockHeader computes hash 1`] = `Fr<0x00f99d951c77fcee0f9806913dfbcc004ba7db1181ff74c5727b22b341b016ea>`; diff --git a/yarn-project/stdlib/src/tx/block_header.ts b/yarn-project/stdlib/src/tx/block_header.ts index 8e78637f1e36..a6c8975a666a 100644 --- a/yarn-project/stdlib/src/tx/block_header.ts +++ b/yarn-project/stdlib/src/tx/block_header.ts @@ -12,6 +12,7 @@ import { z } from 'zod'; import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js'; import { ContentCommitment } from './content_commitment.js'; import { GlobalVariables } from './global_variables.js'; +import { ProposedBlockHeader } from './proposed_block_header.js'; import { StateReference } from './state_reference.js'; /** A header of an L2 block. */ @@ -156,6 +157,19 @@ export class BlockHeader { return poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HASH); } + toPropose(): ProposedBlockHeader { + return new ProposedBlockHeader( + this.lastArchive.root, + this.contentCommitment, + this.globalVariables.slotNumber, + this.globalVariables.timestamp.toBigInt(), + this.globalVariables.coinbase, + this.globalVariables.feeRecipient, + this.globalVariables.gasFees, + this.totalManaUsed, + ); + } + toInspect() { return { lastArchive: this.lastArchive.root.toString(), diff --git a/yarn-project/stdlib/src/tx/index.ts b/yarn-project/stdlib/src/tx/index.ts index 1aacac28472e..7270e103276a 100644 --- a/yarn-project/stdlib/src/tx/index.ts +++ b/yarn-project/stdlib/src/tx/index.ts @@ -11,6 +11,7 @@ export * from './tx_constant_data.js'; export * from './tx_context.js'; export * from './tx_request.js'; export * from './private_execution_result.js'; +export * from './proposed_block_header.js'; export * from './public_call_request_with_calldata.js'; export * from './tx_hash.js'; export * from './tx_receipt.js'; diff --git a/yarn-project/stdlib/src/tx/proposed_block_header.test.ts b/yarn-project/stdlib/src/tx/proposed_block_header.test.ts new file mode 100644 index 000000000000..9fb3efbc4694 --- /dev/null +++ b/yarn-project/stdlib/src/tx/proposed_block_header.test.ts @@ -0,0 +1,41 @@ +import { PROPOSED_BLOCK_HEADER_LENGTH_BYTES } from '@aztec/constants'; +import { setupCustomSnapshotSerializers } from '@aztec/foundation/testing'; +import { updateInlineTestData } from '@aztec/foundation/testing/files'; + +import { makeHeader } from '../tests/factories.js'; +import { ProposedBlockHeader } from './proposed_block_header.js'; + +describe('ProposedBlockHeader', () => { + let header: ProposedBlockHeader; + + beforeAll(() => { + const seed = 9870243; + setupCustomSnapshotSerializers(expect); + header = makeHeader(seed, undefined).toPropose(); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = header.toBuffer(); + expect(buffer.length).toBe(PROPOSED_BLOCK_HEADER_LENGTH_BYTES); + const res = ProposedBlockHeader.fromBuffer(buffer); + expect(res).toEqual(header); + }); + + it('computes hash', () => { + const hash = header.hash(); + expect(hash).toMatchSnapshot(); + }); + + it('computes empty hash', () => { + const header = ProposedBlockHeader.empty(); + const hash = header.hash(); + expect(hash).toMatchSnapshot(); + + // Run with AZTEC_GENERATE_TEST_DATA=1 to update noir test data + updateInlineTestData( + 'noir-projects/noir-protocol-circuits/crates/types/src/proposed_block_header.nr', + 'test_data_empty_hash', + hash.toString(), + ); + }); +}); diff --git a/yarn-project/stdlib/src/tx/proposed_block_header.ts b/yarn-project/stdlib/src/tx/proposed_block_header.ts new file mode 100644 index 000000000000..6d7e85ecf9f8 --- /dev/null +++ b/yarn-project/stdlib/src/tx/proposed_block_header.ts @@ -0,0 +1,168 @@ +import { sha256ToField } from '@aztec/foundation/crypto'; +import { EthAddress } from '@aztec/foundation/eth-address'; +import { Fr } from '@aztec/foundation/fields'; +import type { ZodFor } from '@aztec/foundation/schemas'; +import { BufferReader, bigintToUInt64BE, serializeToBuffer } from '@aztec/foundation/serialize'; +import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; +import type { FieldsOf } from '@aztec/foundation/types'; + +import { inspect } from 'util'; +import { z } from 'zod'; + +import { AztecAddress } from '../aztec-address/index.js'; +import { GasFees } from '../gas/index.js'; +import { schemas } from '../schemas/index.js'; +import type { UInt64 } from '../types/shared.js'; +import { ContentCommitment } from './content_commitment.js'; + +/** The proposed values of an L2 block. */ +export class ProposedBlockHeader { + constructor( + /** Root of the archive tree before this block is added. */ + public lastArchiveRoot: Fr, + /** Content commitment of the L2 block. */ + public contentCommitment: ContentCommitment, + /** Slot number of the L2 block */ + public slotNumber: Fr, + /** Timestamp of the L2 block. */ + public timestamp: UInt64, + /** Recipient of block reward. */ + public coinbase: EthAddress, + /** Address to receive fees. */ + public feeRecipient: AztecAddress, + /** Global gas prices for this block. */ + public gasFees: GasFees, + /** Total mana used in the block, computed by the root rollup circuit */ + public totalManaUsed: Fr, + ) {} + + static get schema(): ZodFor { + return z + .object({ + lastArchiveRoot: schemas.Fr, + contentCommitment: ContentCommitment.schema, + slotNumber: schemas.Fr, + timestamp: schemas.BigInt, + coinbase: schemas.EthAddress, + feeRecipient: schemas.AztecAddress, + gasFees: GasFees.schema, + totalManaUsed: schemas.Fr, + }) + .transform(ProposedBlockHeader.from); + } + + static getFields(fields: FieldsOf) { + return [ + fields.lastArchiveRoot, + fields.contentCommitment, + fields.slotNumber, + fields.timestamp, + fields.coinbase, + fields.feeRecipient, + fields.gasFees, + fields.totalManaUsed, + ] as const; + } + + static from(fields: FieldsOf) { + return new ProposedBlockHeader(...ProposedBlockHeader.getFields(fields)); + } + + static fromBuffer(buffer: Buffer | BufferReader): ProposedBlockHeader { + const reader = BufferReader.asReader(buffer); + + return new ProposedBlockHeader( + reader.readObject(Fr), + reader.readObject(ContentCommitment), + Fr.fromBuffer(reader), + reader.readUInt64(), + reader.readObject(EthAddress), + reader.readObject(AztecAddress), + reader.readObject(GasFees), + reader.readObject(Fr), + ); + } + + toBuffer() { + // Note: The order here must match the order in the HeaderLib solidity library. + return serializeToBuffer([ + this.lastArchiveRoot, + this.contentCommitment, + this.slotNumber, + bigintToUInt64BE(this.timestamp), + this.coinbase, + this.feeRecipient, + this.gasFees, + this.totalManaUsed, + ]); + } + + hash(): Fr { + return sha256ToField([this.toBuffer()]); + } + + static empty(fields: Partial> = {}): ProposedBlockHeader { + return ProposedBlockHeader.from({ + lastArchiveRoot: Fr.ZERO, + contentCommitment: ContentCommitment.empty(), + slotNumber: Fr.ZERO, + timestamp: 0n, + coinbase: EthAddress.ZERO, + feeRecipient: AztecAddress.ZERO, + gasFees: GasFees.empty(), + totalManaUsed: Fr.ZERO, + ...fields, + }); + } + + isEmpty(): boolean { + return ( + this.lastArchiveRoot.isZero() && + this.contentCommitment.isEmpty() && + this.slotNumber.isZero() && + this.timestamp === 0n && + this.coinbase.isZero() && + this.feeRecipient.isZero() && + this.gasFees.isEmpty() && + this.totalManaUsed.isZero() + ); + } + + /** + * Serializes this instance into a string. + * @returns Encoded string. + */ + public toString() { + return bufferToHex(this.toBuffer()); + } + + static fromString(str: string): ProposedBlockHeader { + return ProposedBlockHeader.fromBuffer(hexToBuffer(str)); + } + + toInspect() { + return { + lastArchive: this.lastArchiveRoot.toString(), + contentCommitment: this.contentCommitment.toInspect(), + slotNumber: this.slotNumber.toBigInt(), + timestamp: this.timestamp, + coinbase: this.coinbase.toString(), + feeRecipient: this.feeRecipient.toString(), + gasFees: this.gasFees.toInspect(), + totalManaUsed: this.totalManaUsed.toBigInt(), + }; + } + + [inspect.custom]() { + return `Header { + lastArchiveRoot: ${this.lastArchiveRoot.toString()}, + contentCommitment: ${inspect(this.contentCommitment)}, + slotNumber: ${this.slotNumber.toBigInt()}, + timestamp: ${this.timestamp}, + coinbase: ${this.coinbase.toString()}, + feeRecipient: ${this.feeRecipient.toString()}, + gasFees: ${this.gasFees.toInspect()}, + totalManaUsed: ${this.totalManaUsed.toBigInt()}, +}`; + } +} diff --git a/yarn-project/stdlib/src/types/shared.ts b/yarn-project/stdlib/src/types/shared.ts index ae40dd959530..c29fb64995c7 100644 --- a/yarn-project/stdlib/src/types/shared.ts +++ b/yarn-project/stdlib/src/types/shared.ts @@ -25,6 +25,11 @@ export class Vector { */ export type UInt32 = number; +/** + * A type alias for a 64-bit unsigned integer. + */ +export type UInt64 = bigint; + /** * CircuitType replaces ComposerType for now. When using Plonk, CircuitType is equivalent to the information of the proving system that will be used * to construct a proof. In the future Aztec zk stack, more information must be specified (e.g., the curve over which circuits are constructed; diff --git a/yarn-project/validator-client/src/duties/validation_service.test.ts b/yarn-project/validator-client/src/duties/validation_service.test.ts index 1b19684949d4..d557251a51af 100644 --- a/yarn-project/validator-client/src/duties/validation_service.test.ts +++ b/yarn-project/validator-client/src/duties/validation_service.test.ts @@ -19,9 +19,10 @@ describe('ValidationService', () => { it('creates a proposal', async () => { const { + blockNumber, payload: { header, archive, txHashes }, } = makeBlockProposal(); - const proposal = await service.createBlockProposal(header, archive, txHashes); + const proposal = await service.createBlockProposal(blockNumber, header, archive, txHashes); expect(proposal.getSender()).toEqual(store.getAddress()); }); diff --git a/yarn-project/validator-client/src/duties/validation_service.ts b/yarn-project/validator-client/src/duties/validation_service.ts index 5f61267cd44b..f60f8bc03236 100644 --- a/yarn-project/validator-client/src/duties/validation_service.ts +++ b/yarn-project/validator-client/src/duties/validation_service.ts @@ -2,7 +2,7 @@ import { Buffer32 } from '@aztec/foundation/buffer'; import { keccak256 } from '@aztec/foundation/crypto'; import type { Fr } from '@aztec/foundation/fields'; import { BlockAttestation, BlockProposal, ConsensusPayload, SignatureDomainSeparator } from '@aztec/stdlib/p2p'; -import type { BlockHeader, TxHash } from '@aztec/stdlib/tx'; +import type { ProposedBlockHeader, TxHash } from '@aztec/stdlib/tx'; import type { ValidatorKeyStore } from '../key_store/interface.js'; @@ -12,16 +12,26 @@ export class ValidationService { /** * Create a block proposal with the given header, archive, and transactions * + * @param blockNumber - The block number this proposal is for * @param header - The block header * @param archive - The archive of the current block * @param txs - TxHash[] ordered list of transactions * * @returns A block proposal signing the above information (not the current implementation!!!) */ - createBlockProposal(header: BlockHeader, archive: Fr, txs: TxHash[]): Promise { + createBlockProposal( + blockNumber: Fr, + header: ProposedBlockHeader, + archive: Fr, + txs: TxHash[], + ): Promise { const payloadSigner = (payload: Buffer32) => this.keyStore.signMessage(payload); - return BlockProposal.createProposalFromSigner(new ConsensusPayload(header, archive, txs), payloadSigner); + return BlockProposal.createProposalFromSigner( + blockNumber, + new ConsensusPayload(header, archive, txs), + payloadSigner, + ); } /** @@ -40,6 +50,6 @@ export class ValidationService { keccak256(proposal.payload.getPayloadToSign(SignatureDomainSeparator.blockAttestation)), ); const sig = await this.keyStore.signMessage(buf); - return new BlockAttestation(proposal.payload, sig); + return new BlockAttestation(proposal.blockNumber, proposal.payload, sig); } } diff --git a/yarn-project/validator-client/src/validator.test.ts b/yarn-project/validator-client/src/validator.test.ts index 0e0836cceae5..075f5489ac0a 100644 --- a/yarn-project/validator-client/src/validator.test.ts +++ b/yarn-project/validator-client/src/validator.test.ts @@ -68,7 +68,12 @@ describe('ValidationService', () => { const archive = Fr.random(); const txs = [1, 2, 3, 4, 5].map(() => TxHash.random()); - const blockProposal = await validatorClient.createBlockProposal(header, archive, txs); + const blockProposal = await validatorClient.createBlockProposal( + header.globalVariables.blockNumber, + header.toPropose(), + archive, + txs, + ); expect(blockProposal).toBeDefined(); @@ -186,10 +191,7 @@ describe('ValidationService', () => { makeBlockAttestation({ signer: attestor2, archive, txHashes }), ]; p2pClient.getAttestationsForSlot.mockImplementation((slot, proposalId) => { - if ( - slot === proposal.payload.header.globalVariables.slotNumber.toBigInt() && - proposalId === proposal.archive.toString() - ) { + if (slot === proposal.payload.header.slotNumber.toBigInt() && proposalId === proposal.archive.toString()) { return Promise.resolve(expectedAttestations); } return Promise.resolve([]); diff --git a/yarn-project/validator-client/src/validator.ts b/yarn-project/validator-client/src/validator.ts index da5930cb8087..c8fe33ae1796 100644 --- a/yarn-project/validator-client/src/validator.ts +++ b/yarn-project/validator-client/src/validator.ts @@ -1,7 +1,7 @@ import type { EpochCache } from '@aztec/epoch-cache'; import { Buffer32 } from '@aztec/foundation/buffer'; import type { EthAddress } from '@aztec/foundation/eth-address'; -import type { Fr } from '@aztec/foundation/fields'; +import { Fr } from '@aztec/foundation/fields'; import { createLogger } from '@aztec/foundation/log'; import { RunningPromise } from '@aztec/foundation/running-promise'; import { sleep } from '@aztec/foundation/sleep'; @@ -10,7 +10,7 @@ import type { P2P } from '@aztec/p2p'; import { BlockProposalValidator } from '@aztec/p2p/msg_validators'; import type { L2Block } from '@aztec/stdlib/block'; import type { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p'; -import type { BlockHeader, GlobalVariables, Tx, TxHash } from '@aztec/stdlib/tx'; +import type { ProposedBlockHeader, Tx, TxHash } from '@aztec/stdlib/tx'; import { type TelemetryClient, WithTracer, getTelemetryClient } from '@aztec/telemetry-client'; import type { ValidatorClientConfig } from './config.js'; @@ -34,8 +34,9 @@ import { ValidatorMetrics } from './metrics.js'; * We reuse the sequencer's block building functionality for re-execution */ type BlockBuilderCallback = ( + blockNumber: Fr, + header: ProposedBlockHeader, txs: Iterable | AsyncIterableIterator, - globalVariables: GlobalVariables, opts?: { validateOnly?: boolean }, ) => Promise<{ block: L2Block; @@ -51,7 +52,12 @@ export interface Validator { registerBlockBuilder(blockBuilder: BlockBuilderCallback): void; // Block validation responsibilities - createBlockProposal(header: BlockHeader, archive: Fr, txs: TxHash[]): Promise; + createBlockProposal( + blockNumber: Fr, + header: ProposedBlockHeader, + archive: Fr, + txs: TxHash[], + ): Promise; attestToProposal(proposal: BlockProposal): void; broadcastBlockProposal(proposal: BlockProposal): void; @@ -180,7 +186,7 @@ export class ValidatorClient extends WithTracer implements Validator { const slotNumber = proposal.slotNumber.toNumber(); const proposalInfo = { slotNumber, - blockNumber: proposal.payload.header.globalVariables.blockNumber.toNumber(), + blockNumber: proposal.blockNumber.toNumber(), archive: proposal.payload.archive.toString(), txCount: proposal.payload.txHashes.length, txHashes: proposal.payload.txHashes.map(txHash => txHash.toString()), @@ -259,7 +265,7 @@ export class ValidatorClient extends WithTracer implements Validator { // Use the sequencer's block building logic to re-execute the transactions const stopTimer = this.metrics.reExecutionTimer(); - const { block, numFailedTxs } = await this.blockBuilder(txs, header.globalVariables, { + const { block, numFailedTxs } = await this.blockBuilder(proposal.blockNumber, header, txs, { validateOnly: true, }); stopTimer(); @@ -309,13 +315,18 @@ export class ValidatorClient extends WithTracer implements Validator { } } - async createBlockProposal(header: BlockHeader, archive: Fr, txs: TxHash[]): Promise { - if (this.previousProposal?.slotNumber.equals(header.globalVariables.slotNumber)) { + async createBlockProposal( + blockNumber: Fr, + header: ProposedBlockHeader, + archive: Fr, + txs: TxHash[], + ): Promise { + if (this.previousProposal?.slotNumber.equals(header.slotNumber)) { this.log.verbose(`Already made a proposal for the same slot, skipping proposal`); return Promise.resolve(undefined); } - const newProposal = await this.validationService.createBlockProposal(header, archive, txs); + const newProposal = await this.validationService.createBlockProposal(blockNumber, header, archive, txs); this.previousProposal = newProposal; return newProposal; } @@ -327,7 +338,7 @@ export class ValidatorClient extends WithTracer implements Validator { // TODO(https://github.com/AztecProtocol/aztec-packages/issues/7962) async collectAttestations(proposal: BlockProposal, required: number, deadline: Date): Promise { // Wait and poll the p2pClient's attestation pool for this block until we have enough attestations - const slot = proposal.payload.header.globalVariables.slotNumber.toBigInt(); + const slot = proposal.payload.header.slotNumber.toBigInt(); this.log.debug(`Collecting ${required} attestations for slot ${slot} with deadline ${deadline.toISOString()}`); if (+deadline < this.dateProvider.now()) { From 7e1d7a8b2ac65f089aaac17aabac8dfb0f05dc81 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Sun, 20 Apr 2025 11:34:42 +0000 Subject: [PATCH 02/10] Lint. --- .../end-to-end/src/e2e_p2p/gossip_network_no_cheat.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/yarn-project/end-to-end/src/e2e_p2p/gossip_network_no_cheat.test.ts b/yarn-project/end-to-end/src/e2e_p2p/gossip_network_no_cheat.test.ts index 365468b91286..ef18973f2536 100644 --- a/yarn-project/end-to-end/src/e2e_p2p/gossip_network_no_cheat.test.ts +++ b/yarn-project/end-to-end/src/e2e_p2p/gossip_network_no_cheat.test.ts @@ -1,6 +1,6 @@ import type { Archiver } from '@aztec/archiver'; import type { AztecNodeService } from '@aztec/aztec-node'; -import { EthAddress, sleep } from '@aztec/aztec.js'; +import { EthAddress, Fr, sleep } from '@aztec/aztec.js'; import { addL1Validator } from '@aztec/cli/l1'; import { EthCheatCodesWithState } from '@aztec/ethereum/test'; import { RollupAbi } from '@aztec/l1-artifacts/RollupAbi'; @@ -204,7 +204,9 @@ describe('e2e_p2p_network', () => { const dataStore = ((nodes[0] as AztecNodeService).getBlockSource() as Archiver).dataStore; const [block] = await dataStore.getBlocks(blockNumber, blockNumber); const payload = ConsensusPayload.fromBlock(block.block); - const attestations = block.signatures.filter(s => !s.isEmpty).map(sig => new BlockAttestation(payload, sig)); + const attestations = block.signatures + .filter(s => !s.isEmpty) + .map(sig => new BlockAttestation(new Fr(block.block.number), payload, sig)); const signers = attestations.map(att => att.getSender().toString()); t.logger.info(`Attestation signers`, { signers }); From ece49b0bdf0a9b054701182ad093378c40f3f63b Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Tue, 22 Apr 2025 14:44:58 +0000 Subject: [PATCH 03/10] Fix. --- l1-contracts/src/core/libraries/rollup/EpochProofLib.sol | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol b/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol index 9ee628b84cc1..9746b747a7bb 100644 --- a/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol +++ b/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol @@ -180,7 +180,9 @@ library EpochProofLib { publicInputs[6] = _args.outHash; } - for (uint256 i = 0; i < Constants.AZTEC_MAX_EPOCH_DURATION; i++) { + uint256 numBlocks = _end - _start + 1; + + for (uint256 i = 0; i < numBlocks; i++) { publicInputs[7 + i] = rollupStore.blocks[_start + i].headerHash; } @@ -208,7 +210,7 @@ library EpochProofLib { { BlobVarsTemp memory tmp = BlobVarsTemp({blobOffset: 0, offset: offset, i: 0}); // blob_public_inputs - for (; tmp.i < _end - _start + 1; tmp.i++) { + for (; tmp.i < numBlocks; tmp.i++) { uint8 blobsInBlock = uint8(_blobPublicInputs[tmp.blobOffset++]); for (uint256 j = 0; j < Constants.BLOBS_PER_BLOCK; j++) { if (j < blobsInBlock) { From 6acfe443ccc787d2e0a8da60a5df7c4d6736a19f Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Wed, 23 Apr 2025 09:24:34 +0000 Subject: [PATCH 04/10] Update fixtures. --- .../crates/private-kernel-init/Prover.toml | 106 ++-- .../crates/private-kernel-inner/Prover.toml | 246 ++++----- .../crates/private-kernel-reset/Prover.toml | 56 +- .../private-kernel-tail-to-public/Prover.toml | 44 +- .../crates/private-kernel-tail/Prover.toml | 152 +++--- .../crates/rollup-base-private/Prover.toml | 266 +++++----- .../crates/rollup-base-public/Prover.toml | 284 +++++----- .../crates/rollup-block-merge/Prover.toml | 460 ++++++++--------- .../crates/rollup-block-root/Prover.toml | 487 +++++++++--------- .../crates/rollup-merge/Prover.toml | 460 ++++++++--------- .../crates/rollup-root/Prover.toml | 476 ++++++++--------- 11 files changed, 1489 insertions(+), 1548 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml index d03077c4fd1d..8769253a28cb 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml @@ -1,17 +1,17 @@ -vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" -protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" +vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" +protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" is_private_only = false first_nullifier_hint = "0x0000000000000000000000000000000000000000000000000000000000000000" [tx_request] -args_hash = "0x139d87547ab096780a692298348f033fc4b8ff3e89589c22de0741a2eacc8e32" +args_hash = "0x24d0d3e684a0147f8627c77d86834975223a6c80415c3518d97a6334268f33b0" [tx_request.origin] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [tx_request.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" [tx_request.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -23,7 +23,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [tx_request.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fa3" [tx_request.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -203,51 +203,51 @@ updated_class_id_shared_mutable_values = [ ] [private_call.verification_key_hints.public_keys.npk_m.inner] -x = "0x14929bccc0eb1380698cc3bcf567c7461e2bf8c1e285325ab138d2250f5022bf" -y = "0x12c8161404d412e1202acaaccc32ba1a25eebd9e74f8db3e28a047a007a000e3" +x = "0x1b81e2ec1ccbd1109b542158a522b9cd230f1f83ade1f0a6703c49c4073f99cf" +y = "0x01f2646cfac703349960da403e31d44bacc969a00025f66d55316053c948f3c2" is_infinite = false [private_call.verification_key_hints.public_keys.ivpk_m.inner] -x = "0x03cb52c120601c66a5748ce547d055f3dca9ebd1b874bb0e9d74d58f9331be89" -y = "0x2b0d2a7f1726b9f1ab14c2d5746581920d5368a4aa0d59dd3455c1325581276d" +x = "0x053b73236dae37c6c10e0397fc2c6ed7024d085dd33ce3ec663aabbe68732aa2" +y = "0x2abbf49f01442367d57dd825c992440d50f8f561748de2400dde624915c7ea9d" is_infinite = false [private_call.verification_key_hints.public_keys.ovpk_m.inner] -x = "0x005788dcd3986305cee81f083befd11557a20d9e6277040f7703c285929ba88c" -y = "0x29946c813ed86140cc5864323f9357de745a31930828f63d62ccc40d1a4daf0f" +x = "0x12297cff65c1276472c518cc58aeafc8cfea154bb4f66a0cf9b3c5b418738f05" +y = "0x256573b5e82004439d69a7dc692f4fa3c30164f90412c26d4cea9d43ff7291cd" is_infinite = false [private_call.verification_key_hints.public_keys.tpk_m.inner] -x = "0x195bdadea0aac65ac7d0085b897a505c7b27009a9c0abf20c04fc3ed909165fc" -y = "0x0e81a9071ab67cbb3e927f9b781c98f0057a1b43666038d3cc7a33c060c0c7a5" +x = "0x233dcc9549fd966f5b870f3fa7c5521971a19bfcffc570822b149d9ea87e6ffa" +y = "0x2bba21a1981b9494f54ace74e2e5a7c02f6949d68cb1f36b5949cc28b76c16d3" is_infinite = false [private_call.verification_key_hints.salted_initialization_hash] - inner = "0x2beec4908f158d7dd2997223ef10ee354a517625239964b0e1fe785d748bfb3d" + inner = "0x19509cccb0fbeb9452b5a691590be1056026002b616ef3752f99cefdcf2653cf" [private_call.verification_key_hints.protocol_contract_membership_witness] - leaf_index = "3" + leaf_index = "0" sibling_path = [ - "0x02ca7b29cc4ad8cac6ab8f8e15755367f09df6aae605eb78d515d3c9854eb506", - "0x07416677001aa3c5a17d8fc7fb01c903a94519c347d5a19e0df984f26d52c282", - "0x10d10d96dc8e1092a32f13d5f9721a770b224096ac4c85587538131ba65cf3b1" + "0x2e0fc1abe432d773f7c53112a7d880467fa93ee84efc54c098d9c726389b6e3f", + "0x1b562f4ab9dba5030838629a325925e7d4268e68c1ba7eb786b8960d350f36bf", + "0x18e035ee82b4d7d8cc3a916b538bab627f098b044ec60ff382182b6f860a31d5" ] [private_call.verification_key_hints.protocol_contract_leaf] - address = "0x21b1e47351031fbfc98331a4bdf6a7bb88f4f46e0302476b4bca684f8228ae61" - next_address = "0x2cf7fc7ccdf59722c59c05ff6f5aa94130e325ac06867ed3f9a4d73fc5d998d7" + address = "0x0000000000000000000000000000000000000000000000000000000000000000" + next_address = "0x0983655c6c7e92563641c1f4839fffd29e6221b1728234d429f2e0fea2324694" [private_call.verification_key_hints.updated_class_id_witness] - leaf_index = "132" + leaf_index = "127" sibling_path = [ - "0x26fb98fda5edd8bb14225c525238f1d838c0a8c675533155980093a383ad125e", - "0x10e8080c0a12d7d2484da03074b38978771b4d40c59aba99cd8125b1f3e03b7f", - "0x23d831b2872f5414ed12d64759caf03d5303271719967d44f863d1afac50f0b7", - "0x2547d5a6061ddc993e8dd11601b740171271ea2e57235208b3928294c8ee1080", - "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", - "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x01a037ca0215a9f63ee096136b01f47a58124e5f5e405fd6fbd1271b558358e0", + "0x09e3da3e956dfe29726b91804dfe33a9ea13d885e33ebba0676571b00923d888", + "0x0bc00a8c6b35f259b533b1460a1abfb8be5b9a4a5b0c30f56411d51711a3ebd9", + "0x24e3e16b94fc9c2ad28a522faa34be3f9bb4b5a527108972e7dddb4c3496cd45", + "0x0972027ae8be0734a5f0d265e8932820f6c5948c988b977879b8777b28190993", + "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", + "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", + "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", + "0x1494ff1389723a2d0a4e3959606552262d1921c0afa276796ca9fe8bda314025", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -283,13 +283,13 @@ is_infinite = false ] [private_call.verification_key_hints.updated_class_id_leaf] - slot = "0x1c91ef54de47b4d53cab759cfeea5729e96435e0817119ab72174b83c0f61148" - value = "0x05208323f49682fc3367ed42a0212854a797b5372b0cc6bc5493b00e96ff256d" - next_slot = "0x1f121c47ca07308912a1229b2e40a4ada4fff8fa451a5dfd076806491991618d" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000088" + slot = "0x2a3fd0a820f44d505cb508ed1cc6c6e5e0e520fb35ca3232c33d9361a9b94737" + value = "0x00000000000000000000000000000000000000000000021e19e0c9bab2400000" + next_slot = "0x301fafdd27fedd426400f4f91759c3919b79b80cd8f29c480dd73a6f462db085" + next_index = "0x000000000000000000000000000000000000000000000000000000000000008a" [app_public_inputs] -args_hash = "0x139d87547ab096780a692298348f033fc4b8ff3e89589c22de0741a2eacc8e32" +args_hash = "0x24d0d3e684a0147f8627c77d86834975223a6c80415c3518d97a6334268f33b0" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000001" end_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000004" @@ -307,13 +307,13 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" inner = "0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000" [app_public_inputs.call_context.contract_address] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [app_public_inputs.call_context.function_selector] inner = "0x0000000000000000000000000000000000000000000000000000000027e740b2" [[app_public_inputs.note_hash_read_requests]] - value = "0x0ea383dca7c0d16bd98e98a858c92f8e0869801a50f07725869204e2701b062a" + value = "0x01bf2119464eb87e672c6b71c491d776dc3c95deee1145034b00eef97d8db9ea" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [[app_public_inputs.note_hash_read_requests]] @@ -855,13 +855,13 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.public_call_requests.inner] is_static_call = true - calldata_hash = "0x061d4e77cfa15a0903d5dd5c81bcd524ba0c2a38cb1ae6c358671978964a32a6" + calldata_hash = "0x1ee1c78946cf8f95a7fa37fe4963be6c8439e1449bc3697e9be4152399632eed" [app_public_inputs.public_call_requests.inner.msg_sender] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [app_public_inputs.public_call_requests.inner.contract_address] - inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" + inner = "0x148c27fde8d878a389a0b60592899d13257a2f688e63e8bc87145c1968b64cf0" [[app_public_inputs.public_call_requests]] counter = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -1504,16 +1504,16 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" + total_fees = "0x000000000000000000000000000000000000000000000000000000014118ccce" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [app_public_inputs.historical_header.last_archive] - root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" + root = "0x2e761c36888898f03ac5d0bea81b547a3ad030b840ab5083f01cfb561a6bc5b5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [app_public_inputs.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" + blobs_hash = "0x00e32ebd3dddb6563e02baf544c5891383a01659faed580d956ccdac626a0560" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -1522,37 +1522,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [app_public_inputs.historical_header.state.partial.note_hash_tree] -root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" +root = "0x0d0e0f95c428a5561badc63953a210cf91019de21090892d60a2e281a5098e14" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [app_public_inputs.historical_header.state.partial.nullifier_tree] -root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" +root = "0x2d356708f63fa2fb228199ac7aae22624838b2d1b6c5791c18f874ddc2f1829d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [app_public_inputs.historical_header.state.partial.public_data_tree] -root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" +root = "0x2758a371a29f7f08046f0a6e35eb37e7edbbef5c0fd82053f970ce663a79f1f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [app_public_inputs.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c32b" [app_public_inputs.historical_header.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [app_public_inputs.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d7e6" [app_public_inputs.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" [app_public_inputs.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -1564,7 +1564,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [app_public_inputs.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fa3" [app_public_inputs.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml index 920f58c1a24f..f8717ff2d44a 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml @@ -3,8 +3,8 @@ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000000" vk_path = [ "0x2f7990492fb38523aa684577903d0bd007b968530c8e40387fcd1574e02a63cc", "0x162832a9703d2788b5221ff51bcb8bfe5b55cbe2bbb917fc13faeea857e77096", - "0x0fb6e22d807026d64881dd75926af825595d6b6bbd0c75415e2bfaf93e0c53a2", - "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", + "0x0c3072a0660f951b5a4fdddf5c2d9132547f01bef6df9b662f3620c19f50997e", + "0x17121585aa6800bb9d9b7250898bbbd170b2458884f8738cd2fdbaa3442b0f62", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -160,23 +160,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = true -claimed_first_nullifier = "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece" +claimed_first_nullifier = "0x08e573df0ad9948b1916632d9ea47e27736b3ac16b5bcc1a445cc2b072efb90a" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" - protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" + vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" + protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" + total_fees = "0x000000000000000000000000000000000000000000000000000000014118ccce" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" + root = "0x2e761c36888898f03ac5d0bea81b547a3ad030b840ab5083f01cfb561a6bc5b5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" + blobs_hash = "0x00e32ebd3dddb6563e02baf544c5891383a01659faed580d956ccdac626a0560" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -185,37 +185,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" +root = "0x0d0e0f95c428a5561badc63953a210cf91019de21090892d60a2e281a5098e14" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" +root = "0x2d356708f63fa2fb228199ac7aae22624838b2d1b6c5791c18f874ddc2f1829d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" +root = "0x2758a371a29f7f08046f0a6e35eb37e7edbbef5c0fd82053f970ce663a79f1f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c32b" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d7e6" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -227,7 +227,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fa3" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -239,11 +239,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000e16" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] -value = "0x0ea383dca7c0d16bd98e98a858c92f8e0869801a50f07725869204e2701b062a" +value = "0x01bf2119464eb87e672c6b71c491d776dc3c95deee1145034b00eef97d8db9ea" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.contract_address] -inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" +inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] @@ -2739,7 +2739,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece" +value = "0x08e573df0ad9948b1916632d9ea47e27736b3ac16b5bcc1a445cc2b072efb90a" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4787,7 +4787,7 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000000" inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.private_call_stack]] -args_hash = "0x1640ca23ce502be7bc839c00d22cf213785a1d35d51364d0cc6aea82ce38b25f" +args_hash = "0x1aedd99fe249a382fe334d994ca467d08551d796f77228dc694c0c75500582fd" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000c" @@ -4796,10 +4796,10 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 is_static_call = false [previous_kernel_public_inputs.end.private_call_stack.call_context.msg_sender] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [previous_kernel_public_inputs.end.private_call_stack.call_context.contract_address] - inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" + inner = "0x148c27fde8d878a389a0b60592899d13257a2f688e63e8bc87145c1968b64cf0" [previous_kernel_public_inputs.end.private_call_stack.call_context.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000754fb767" @@ -4941,7 +4941,7 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [private_call.vk] key = [ @@ -5131,31 +5131,31 @@ y = "0x2039907fe37f08d10739255141bb066c506a12f7d1e8dfec21abc58494705b6f" is_infinite = false [private_call.verification_key_hints.salted_initialization_hash] - inner = "0x1e054a08c6b14eb4ec62d0f4962be7b8b6beea884ebd41d433a5b11d5d2d9b91" + inner = "0x2594b4b06a99b5aca9b2f5ac164610ee173398fdb2a6a735ac19ccef3dfc322f" [private_call.verification_key_hints.protocol_contract_membership_witness] - leaf_index = "1" + leaf_index = "6" sibling_path = [ - "0x2fbcf0519c1fadbbc68489007df34fb2219366aad95f432d61fd0207ea20a0d4", - "0x17bf4c3eaf96016559689b18cc6bf78ef180f902fcd49bc260360d1cbf7331b0", - "0x2b7e459a5b9ad8b0dc63d6ccdb5735dbce4847ad93f72e4d5c5b1b3ce3874373" + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x2055c39d9f3024a3d5656f72e22f8a152453f382a6fb72ec36f5bc1b25b292d7", + "0x2e9bd5e961668b5a78d357974cc33ecaba55403953d791b055c28f7c8b568d96" ] [private_call.verification_key_hints.protocol_contract_leaf] - address = "0x2946f5341bbc4252fde9cb5a18e6a165c224847fc2c01b23872660edc731c597" - next_address = "0x0000000000000000000000000000000000000000000000000000000000000000" + address = "0x10a66924f82d7418bb3a094d1fcde5ef6effb4878edd314f2a80cb5187d48d08" + next_address = "0x1da53067828d3928bbcd378b5ebfc80d169b56caaca51438b17beb3a3e687757" [private_call.verification_key_hints.updated_class_id_witness] - leaf_index = "117" + leaf_index = "139" sibling_path = [ - "0x09430e1cfe5d6ad5081557ca30123c8929a823feffa96e9d0a947ad3863ab6b0", - "0x11b9c69ff16278bc3fb24e182e439e5dcba5ddc337e92971219c0835a85d2fc1", - "0x29208ecc66c5a3f559855bd44866e51a9e1b053fe1b60786941ab50664c75667", - "0x1d785b5957a28dd21f9e86422a5925e3d26f9818881f7e98f03ba9b0673c8077", - "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", - "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", - "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", - "0x182127ee0c015dde7b068973d43d3909bc7435ada18f0bc22efdeaf9618c938a", + "0x235e7e217bb7b0a35941dad55739804583e8923a7eba32ffafefd7fbc6b58e85", + "0x1c8edda2f491a7c04928ae5b8497abf8cb82fb09532c2b49f4b310103413f124", + "0x03dd988d02f0aed633da1580e4ca817df259d7ee65893910e14b212659a34995", + "0x219e842b9015ee9ba830a14cc0f44ee8cc2b21afc1f810d2e5c9e57c1c434e87", + "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", + "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", + "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", + "0x177a41d59f8146c8c155a95664211e3c63c183fb75d084614f20b20914f6b706", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -5191,13 +5191,13 @@ is_infinite = false ] [private_call.verification_key_hints.updated_class_id_leaf] - slot = "0x046006f5fbfe9fb68f7c1d8b5acdf9e8ab7602b09cd4d074c027de3662e44586" - value = "0x00000000000000000000000000000000000000000000021e19e0c9bab2400000" - next_slot = "0x056877419ad7af24f1555fa5b2464a233314a662fff6ce8a553794a51f55e14a" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000076" + slot = "0x0546b03e5358a619370fe558c8b69a155a028bb596fa2d447f67645d890e6865" + value = "0x0000000000000000000000000000000000000000000000000000000000002710" + next_slot = "0x07cc2f2a903aab91a162a2ad44957fff1e159af241bb42f3262110fedeb144c2" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000089" [app_public_inputs] -args_hash = "0x1640ca23ce502be7bc839c00d22cf213785a1d35d51364d0cc6aea82ce38b25f" +args_hash = "0x1aedd99fe249a382fe334d994ca467d08551d796f77228dc694c0c75500582fd" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000c" @@ -5212,16 +5212,16 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" is_static_call = false [app_public_inputs.call_context.msg_sender] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [app_public_inputs.call_context.contract_address] - inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" + inner = "0x148c27fde8d878a389a0b60592899d13257a2f688e63e8bc87145c1968b64cf0" [app_public_inputs.call_context.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000754fb767" [[app_public_inputs.note_hash_read_requests]] - value = "0x12a2c79d4397a913fe115b6d9cb47535f8f2445ff499251e5e1c7558c724db17" + value = "0x26ea8df2d446cf51d4ff8b6be42ab43f7c29096e3801d889a67a6cadbd8c7cc8" counter = "0x0000000000000000000000000000000000000000000000000000000000000005" [[app_public_inputs.note_hash_read_requests]] @@ -5285,7 +5285,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifier_read_requests]] - value = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" + value = "0x148c27fde8d878a389a0b60592899d13257a2f688e63e8bc87145c1968b64cf0" counter = "0x0000000000000000000000000000000000000000000000000000000000000004" [[app_public_inputs.nullifier_read_requests]] @@ -5352,11 +5352,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" sk_app_generator = "0x0000000000000000000000000000000000000000000000000000000000000030" [app_public_inputs.key_validation_requests_and_generators.request] - sk_app = "0x20c43de40ad1e856427a2cd25fb42ea6235c53ce7d6b237eccf9ff94858a1a28" + sk_app = "0x2c4bdccc8b5e716a5f727bffdf0bb4a12c6a0eb013c360db9c65713c7f7ca22a" [app_public_inputs.key_validation_requests_and_generators.request.pk_m] - x = "0x14929bccc0eb1380698cc3bcf567c7461e2bf8c1e285325ab138d2250f5022bf" - y = "0x12c8161404d412e1202acaaccc32ba1a25eebd9e74f8db3e28a047a007a000e3" + x = "0x1b81e2ec1ccbd1109b542158a522b9cd230f1f83ade1f0a6703c49c4073f99cf" + y = "0x01f2646cfac703349960da403e31d44bacc969a00025f66d55316053c948f3c2" is_infinite = false [[app_public_inputs.key_validation_requests_and_generators]] @@ -5525,11 +5525,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" is_infinite = false [[app_public_inputs.note_hashes]] - value = "0x289c48dbfefdcb68671cee5424de1f20cbd0be9cd8bab4803c8b38f33073a780" + value = "0x1181e0729341b98e18e279622dce09ee0030340180252b25f736e89d9c8e7860" counter = "0x0000000000000000000000000000000000000000000000000000000000000007" [[app_public_inputs.note_hashes]] - value = "0x0018e07ed7c517cde94adf56f29f3caaeada2615e8c8dc16848a13f6702e791a" + value = "0x23337e0eb3d712d90448af3325729f8f3202513cf2135312438540c396b30cd1" counter = "0x0000000000000000000000000000000000000000000000000000000000000009" [[app_public_inputs.note_hashes]] @@ -5589,7 +5589,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifiers]] - value = "0x1752e2268780888a971306cd83187cacfca3789b54311897fc16c28e26bbe420" + value = "0x2f5c7b335e6958cfd3c156590d7fa72f92766ed6bacef0c1db1ee29ff288ebd0" counter = "0x0000000000000000000000000000000000000000000000000000000000000006" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -5996,24 +5996,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x048d46e3fa90c363ea5665d35f25a29122bf2d6f18f948fe5ed9af8a1bf3ff62", - "0x2bdd68daa386f98df39612ed98cdd2fe297eabacafab88c061d589788046ea26", - "0x00006f6ccb8b4e74446082bf3d11738658bbf3fa34d47f14c4c4a13bf86794d3", - "0x0020f058a0534d05d96968dd728d0cb365d8d5965a175fdf7581d9c7e8e77b5a", - "0x00162a2ade7c948cb0af4f97cf0415edf77552eae5d160477c624a8413f606e0", - "0x00d99886126f6ff05c81c48072deacd32101cd2a9bb8a87e45ab769755d312fd", - "0x00e380cd9edfff77e977444bb25177c9d75bdfe467e20cdebc3ad371d266a5f2", - "0x00cdcf3e25265ec1377d10c18fda1b2dea4c45396d6af236aa7521cca2059dc1", - "0x006914727a686cdf46f11e09c2b3c6abf8fe8c2beaec5dd42bf1a8db2795c3f7", - "0x005ea0d20f31d261caa035fa64d2b7a7f7da10187016179d202606a0371853f4", - "0x002be4525d0c7401981d827aa802105302b1bd039de814cf7b84320cb4a83c04", - "0x00ce5881e355c5856ec5a1006e14ca6982bc05854312e30f4b65eca269daa770", - "0x00e99644a2b6ecd701e5d3ff26d34acac51ceedcaea1363cac01904494b87e07", - "0x00ea3d29daf251ad75b98b9a643bb25d7eb2ba6cd8d38a0142ef237d7f453140", - "0x005b1018fed544b94a5c72bf5a0622111148f8800dbe845cda60e6bc81b90bf1", - "0x009ba873d531a93bd256f2784df12cf805eed582459fc55a9815386429a86cd9", - "0x00318500e57624369a4f1fd09e8370aa59e721d6e2a5d0a291a302f9584b8eee", - "0x00c9694dd50f6a59b42a12173548d15cefe282b15037f759413a5f2503f33838" + "0x1cf55c99541781edae0c0b9ac133df56de0ee5c5fded15cdc2393883cedc8cbe", + "0x2d5074830e9fb3efe2556b95ba6ef7b901ae3c9210548a283cf10157402ced99", + "0x0000ab20f105630c03a11cc3aab551eeb3d10d80ebaaeb641e44471b89b53159", + "0x0037a2c319eb360d04f4ecb32b139d6a70a2f5d761df1963b346d78a58c4ff9d", + "0x0041141e70469608e8a8d9064b2691c6119ef4493dc5355f4b8dc214615cdf16", + "0x00b860c8536a7fc0c0e8ebe0d0b76c596d55b5bea3ad6b2d6c486e4e6ae6a0f9", + "0x0006e62cf856145a2f99b304d7ddbf749d6c1fff02d2c09a08b98eba03b71d46", + "0x006dd13676ca6b000090f6bfc4398c1bfecb9bd9d068930a9f520b2fb3e50ae2", + "0x008d06fa23e22ee97bd999346ba1d39e62790a6779a81be14afc1701a5999ed4", + "0x00ddee151b78cc26288bd2e46e187ad345f3252305854a7dbb77cb32502e5d3c", + "0x00d4fba8630dbf79042f002d2f68aaf0bbdf42ab985006724a0de52e8b9bb8de", + "0x00396ab8691416ad5f2c79e33912d6bbafef583d466bf57db19c2325726b596a", + "0x00f8ff57a33ac1650ed9f1bae8e7389d6fa8a7f6f545485eaedb379c969a03e6", + "0x000fd32adcd25c83b0643f31ccab5a9c2dcbac389d6b3ceaed0195139fdaeeac", + "0x002acae74020e259ee4c4edc0c22e09c9b21b1bd2e75b7b5a8feaec82620d395", + "0x005641d32d33632eb7edea6223fe948d2796d342dd08ce5b32e84383cc78d30f", + "0x00045229a3f884415a8499959f5ae7e29197b6a4a01d1adf5848dfafbce571b1", + "0x0030f02757505c8eba19a58a02565b6961736263746f38beae58b8246b276cc1" ] [[app_public_inputs.private_logs]] @@ -6022,24 +6022,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x19f6d8f00f0488d6e14bbcdcebc687bb081b622d76e1a533432932eb8ce6fc4d", - "0x0ca8a9af628946a49758ee14e7e3de6270b9725be6739cf0e81cf26a1d611522", - "0x000007b72a3575b18003fcb0ad2588a6ea7b05016917f43832d0d3e3eaf63802", - "0x00b9c532a777b18730b53be76ad1d869c47ee5133f5c1ea8155a3bc2a561ccf6", - "0x0078fdbbf99c655e3c7645757d1612b1288f94335500b045b4ac0dfeec8cd156", - "0x00a18fe56fb38d369efaaa5d75119709c64b1a2675f2d34ec9cce151e0c32c6b", - "0x001291a4e1511abaa7b82abcab90228b4cb986a0aaeec173e141621feab6f475", - "0x0080aea6c107610e2694c9d5cf44aaed86a21d11adc6d92f38030e827b1c3a58", - "0x00c547b22874d0b514d08d2882dc88c2ad86c3825c6a9aed804d2a16170e8348", - "0x00a2d17a8e2382129f98b7340867fc1d30dc0cdba8850ddf25d1acb19a8e4ed4", - "0x00bd9e4b7a8893dfca7777df62e49c614c3470cbcae98238903b15c5b199ca33", - "0x0078fa59a69260a5de7785b4eca42437c8860f3268f2b8e2c98f2e3762901912", - "0x005585d2301901b697b3fdaa7cbd7c33fd504df0ffdbc6541815fb12400b4632", - "0x0090c0c7c2cbc58a982ddcd82129f74dc18c813df638a0153bdae4dc00485336", - "0x004e90e816954ccd35172be795f48efee75545be02a1110da4b30fc6991d8939", - "0x000a4a4691bfc05b252b9aab962caa5b91afb03eb7e6a94cd3fba1db92127b1e", - "0x007935e583e890b6e31f0413e382c6af89cb501f80e6fccf29d17a3677c2b464", - "0x005fad622eab5e7d7fcc359813ff0a1657dc4c9e89dc250cb1b258c913750c92" + "0x09f168713034b6745047213de23ed2205bc5c01b6f1e938b67242519f0a46736", + "0x091f742d35e861d18de50a4fcd266ffa255d574fc14d15d4be81b38a02e895f6", + "0x0000b3ba5ccfa5d5b7e8209ec5522116b8dafa9f1254500d11fde689529cda6c", + "0x00f075434903278b82dbddb4ca85c170b536fa08b46cbd8c2c765edc01e1690c", + "0x00c249e49eb6a5dbb2750879bbe215db48c37b2e7f90c7c8d95c89e9be32d147", + "0x00cd06ea0643de631eecbbd302eee712e37d88e5e72d25bac4753d358d131aba", + "0x00aeb072fa3f5243e4a16e26d1204fb3c7ae137009646c41515c3d4ecfbed50d", + "0x007662c4ef4570c1c876fb9e0cbfe3028f2c030792042059a878ed83f985afd0", + "0x00d309a0512536b180b5014a594887228a3d5d3b7d9d992270b1bdf1489f3b58", + "0x006a8b0bf91f51148ed3f1f0bfe22e50d7ea6c87670b4f996ef8b779ce294773", + "0x00ea145d6a20a2d8787d5450645d25d6f3d10c39a85c66538b5e6f2b74abb157", + "0x00a6f640fb930e17c3b434b62906ae98245d25739aef05496a6f8ccdd1695e7f", + "0x00db367a85fe097dc1879bd3c81d97acb50c2feb41d94224a5884d18a4cc6dd9", + "0x00ca605d49c47ed0ed25adbb297eb218ddb9da8ebc15b7e93114687b14ef4261", + "0x0089d8ee78e442b987e5377f7c8efb224e081812e7e6e6df2eff59f01f73f4d9", + "0x00be5884a11df3abbd50a49da3c0defd4c67bb5543477434631cad412ee2ac25", + "0x00933fe04a5d134ad6c703b9569a3621dd2932d9f2d45a4d1d3c5b514ed4fcac", + "0x00a86c9a5588a2281432f40364ca8db6d82c4d8bc6bee358abf897a570e41603" ] [[app_public_inputs.private_logs]] @@ -6048,24 +6048,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x1a05941a5a4e49592f7fcbe8854d5a0200ef911c06264c737e1942c3e02e1ca1", - "0x21e89c900404aa792f14a881d334778880c8b3cdb3e1b28108c027653c4abb6f", - "0x000183e152bea35725090be7414e9c4881162ddef2e87909d193bb4a39c223e9", - "0x00dd46fc8d3f7c5c1df7a8e8b72cb3c5ce09fe93fff226498decdc057fa0ac7a", - "0x0099fc01c4a8706ad4b3aec3d3169aaa7f1da6fd56acb7f3e513d8d0a8f42d92", - "0x00b73bed2d24f8b35787aeb686bca5d215a21ca4ea9ae278e7ce84a6a18f64ff", - "0x00b8cb7c4f092fcf6c34fbf6457da7653dac83c00533a41ff46aed4a50292d7f", - "0x00d2ec3253dc80e8b986351a8bc22b7342c248c062867d61183de02f0bfcc93d", - "0x008884a30ccaf624787a30ae849e090f5cdbb9c680bbb77f045ea22ad9584613", - "0x00f0ce4234d291add28b800394ceb06dc30c1c562bd9abe281807f6345157344", - "0x001f54c1c7f4947838b3a650ae4dd674bc177bb5da8934007b6592a4f589fbd2", - "0x00ff870df8bde260b20b45ce94ace25c9cf5d90ec50da0db2e21b4a47efdefb2", - "0x00fb6d622ce89228fba40dec2567ed9a1e4bcb5955b55129be76019f9ac446c5", - "0x00fa22dd89dec95309a7ef6df8c2d515069003bf78efd44edf62c7de0535617b", - "0x00185481635a7e7280b58e32e81465d7840ef349f9aaeb1553917425a3c1e469", - "0x005cfa506fd18ae5cadcc60470ddb9ba3736c288085c7d39270e4eff490a64b7", - "0x00969a720629f33dfffe06fda05e96f7d2faf63c048efbe62274e2d6c54bc464", - "0x008c469d709e7b3f258c7fa40998eca40b73ca62ae8885e19cae72ad07e0438c" + "0x06fdd099a455733aa4ddb15c1e6eb20bd9dbb01d4a3ea7da2d9756ce28f9ebdc", + "0x0d955fd3f5edb7fc60cf6ab763897d5f35cc5074aea66a5a00ed47033045c7dd", + "0x00003b3af98264bba7623b91a444cfb542ba6e0048319144b7ba0d6fc27d37be", + "0x002575988401595e431bc4387f76a0036bbd35b847cfa64cd577196c08710eb2", + "0x005f8a6d712661688a965f32f79863b14e95fdd999161663ee4d8e66f6a3918b", + "0x0043b5d23920da0ffef08423b588281ba634047f343c8b7045f9a1d783aac762", + "0x005e5eb7f138a40a0c34d6b24951c844b03151840bc02af4c0901d6614247942", + "0x0028bcbd769b93806f78c5ff62e4bcba2e4cee478d6ea04d2da07e3a9ac01fff", + "0x00778402977400fb9bca3d5758ce6f83ebecc2c255eca12d69a4a25fd6f3eeda", + "0x00ed7e94ca838662a380c6b257457d0e0149e79cb7dd881e4c7c33fd3856b923", + "0x0051648432054d781347fce8651ef35864ade64b6b87ca57b5f48d0c3d97231b", + "0x00224cb4ce22ca8e84ddf08badc70283106fa88b6fa745ac1d7cdd1bc30c1fb7", + "0x00704226e02b503809afdfb22944f14db753ad70ea44f2a7e290390c219c0639", + "0x00d5f4188d24710bc759fc963ad36b804f484dc833f8047cf78eb19a9f5911d4", + "0x00078892d7f369da52ec64a6b0c2524a52ae2ece978432a20737558445e872fb", + "0x00f0b5df2ab4506cfb7c0b31917c73d6eb31b972c26bda626dddfcfc53c506f0", + "0x002afd3d3b315d24de10a23dddd3fdbae1f70b1464b9d09ca3e0e7571bad0d85", + "0x00057283b71ebf1feea14cb3ee1eca7c6d0ddc78773f4907d3a15fd3a6461ec0" ] [[app_public_inputs.private_logs]] @@ -6412,16 +6412,16 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" + total_fees = "0x000000000000000000000000000000000000000000000000000000014118ccce" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [app_public_inputs.historical_header.last_archive] - root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" + root = "0x2e761c36888898f03ac5d0bea81b547a3ad030b840ab5083f01cfb561a6bc5b5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [app_public_inputs.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" + blobs_hash = "0x00e32ebd3dddb6563e02baf544c5891383a01659faed580d956ccdac626a0560" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -6430,37 +6430,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [app_public_inputs.historical_header.state.partial.note_hash_tree] -root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" +root = "0x0d0e0f95c428a5561badc63953a210cf91019de21090892d60a2e281a5098e14" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [app_public_inputs.historical_header.state.partial.nullifier_tree] -root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" +root = "0x2d356708f63fa2fb228199ac7aae22624838b2d1b6c5791c18f874ddc2f1829d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [app_public_inputs.historical_header.state.partial.public_data_tree] -root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" +root = "0x2758a371a29f7f08046f0a6e35eb37e7edbbef5c0fd82053f970ce663a79f1f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [app_public_inputs.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c32b" [app_public_inputs.historical_header.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [app_public_inputs.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d7e6" [app_public_inputs.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" [app_public_inputs.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -6472,7 +6472,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [app_public_inputs.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fa3" [app_public_inputs.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml index facd98dea6e3..a58bc7b9d2b0 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml @@ -3,8 +3,8 @@ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000000" vk_path = [ "0x2f7990492fb38523aa684577903d0bd007b968530c8e40387fcd1574e02a63cc", "0x162832a9703d2788b5221ff51bcb8bfe5b55cbe2bbb917fc13faeea857e77096", - "0x0fb6e22d807026d64881dd75926af825595d6b6bbd0c75415e2bfaf93e0c53a2", - "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", + "0x0c3072a0660f951b5a4fdddf5c2d9132547f01bef6df9b662f3620c19f50997e", + "0x17121585aa6800bb9d9b7250898bbbd170b2458884f8738cd2fdbaa3442b0f62", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -160,23 +160,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = false -claimed_first_nullifier = "0x0cfcf5bbf3cae528efc744e0d52c0b52050a61658d3d506152221fe0d9442467" +claimed_first_nullifier = "0x25d4e4d698c37a1f0f275d06529fb32e83f0b19181a8e11c607883bf218294f4" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" - protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" + vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" + protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" + total_fees = "0x000000000000000000000000000000000000000000000000000000014118ccce" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" + root = "0x2e761c36888898f03ac5d0bea81b547a3ad030b840ab5083f01cfb561a6bc5b5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" + blobs_hash = "0x00e32ebd3dddb6563e02baf544c5891383a01659faed580d956ccdac626a0560" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -185,37 +185,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" +root = "0x0d0e0f95c428a5561badc63953a210cf91019de21090892d60a2e281a5098e14" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" +root = "0x2d356708f63fa2fb228199ac7aae22624838b2d1b6c5791c18f874ddc2f1829d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" +root = "0x2758a371a29f7f08046f0a6e35eb37e7edbbef5c0fd82053f970ce663a79f1f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c32b" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d7e6" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -227,7 +227,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fa3" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -239,11 +239,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000e16" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] -value = "0x0ea383dca7c0d16bd98e98a858c92f8e0869801a50f07725869204e2701b062a" +value = "0x01bf2119464eb87e672c6b71c491d776dc3c95deee1145034b00eef97d8db9ea" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.contract_address] -inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" +inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] @@ -2739,7 +2739,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0cfcf5bbf3cae528efc744e0d52c0b52050a61658d3d506152221fe0d9442467" +value = "0x25d4e4d698c37a1f0f275d06529fb32e83f0b19181a8e11c607883bf218294f4" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4375,13 +4375,13 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000003" [previous_kernel_public_inputs.end.public_call_requests.inner] is_static_call = true - calldata_hash = "0x061d4e77cfa15a0903d5dd5c81bcd524ba0c2a38cb1ae6c358671978964a32a6" + calldata_hash = "0x1ee1c78946cf8f95a7fa37fe4963be6c8439e1449bc3697e9be4152399632eed" [previous_kernel_public_inputs.end.public_call_requests.inner.msg_sender] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [previous_kernel_public_inputs.end.public_call_requests.inner.contract_address] - inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" + inner = "0x148c27fde8d878a389a0b60592899d13257a2f688e63e8bc87145c1968b64cf0" [[previous_kernel_public_inputs.end.public_call_requests]] counter = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4941,7 +4941,7 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [hints] validation_requests_split_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" @@ -5470,9 +5470,9 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x175529807fd3b9bad572e49f899865acb3f60a882918de393de4bdd7f47b8efc", + "0x1d88dac96adb2c62dbe237ea3e68b482fba9d71be9c4468b5f33fcb7c853ef1a", "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", - "0x206342a20740a6c07062992d64a7af9702f686f9011655283541b16a4e32a08f", + "0x1f0b20d9a0a1750b23804a1fefe638dd1bb87a87bea2415d25bc0ffaa2dc52d9", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -5507,7 +5507,7 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 ] [hints.note_hash_read_request_hints.settled_read_hints.leaf_preimage] - value = "0x0ea383dca7c0d16bd98e98a858c92f8e0869801a50f07725869204e2701b062a" + value = "0x01bf2119464eb87e672c6b71c491d776dc3c95deee1145034b00eef97d8db9ea" [[hints.note_hash_read_request_hints.settled_read_hints]] read_request_index = "0x0000000000000000000000000000000000000000000000000000000000000040" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml index 1007a30535c3..3f581c60960f 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml @@ -6,7 +6,7 @@ vk_path = [ "0x0a53612b564d6171b0b13b499eaed0cf2d21e8a6a678335f42ec8f30eb24a08a", "0x0e892653be0889bb19c33c717d702acef52f0bf85a230de172b8cf0b9fe0fdb4", "0x0f6bd8ccfb76feec5b9e3d00618759f8f9063f425f6518599bb779516323440f", - "0x2ea5aef0b90c1efadd6c9aa97fc0ae6895a0c16f489fe5edada54bba23105b68" + "0x0fa7cbf2c5bc292ef57fdeb3c5e63d04142426b62b786bed5c33c5b18ea8894b" ] [previous_kernel.vk] @@ -160,23 +160,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = false -claimed_first_nullifier = "0x0cfcf5bbf3cae528efc744e0d52c0b52050a61658d3d506152221fe0d9442467" +claimed_first_nullifier = "0x25d4e4d698c37a1f0f275d06529fb32e83f0b19181a8e11c607883bf218294f4" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" - protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" + vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" + protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" + total_fees = "0x000000000000000000000000000000000000000000000000000000014118ccce" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" + root = "0x2e761c36888898f03ac5d0bea81b547a3ad030b840ab5083f01cfb561a6bc5b5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" + blobs_hash = "0x00e32ebd3dddb6563e02baf544c5891383a01659faed580d956ccdac626a0560" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -185,37 +185,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" +root = "0x0d0e0f95c428a5561badc63953a210cf91019de21090892d60a2e281a5098e14" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" +root = "0x2d356708f63fa2fb228199ac7aae22624838b2d1b6c5791c18f874ddc2f1829d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" +root = "0x2758a371a29f7f08046f0a6e35eb37e7edbbef5c0fd82053f970ce663a79f1f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c32b" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d7e6" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -227,7 +227,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fa3" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2739,7 +2739,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0cfcf5bbf3cae528efc744e0d52c0b52050a61658d3d506152221fe0d9442467" +value = "0x25d4e4d698c37a1f0f275d06529fb32e83f0b19181a8e11c607883bf218294f4" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4375,13 +4375,13 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000003" [previous_kernel_public_inputs.end.public_call_requests.inner] is_static_call = true - calldata_hash = "0x061d4e77cfa15a0903d5dd5c81bcd524ba0c2a38cb1ae6c358671978964a32a6" + calldata_hash = "0x1ee1c78946cf8f95a7fa37fe4963be6c8439e1449bc3697e9be4152399632eed" [previous_kernel_public_inputs.end.public_call_requests.inner.msg_sender] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [previous_kernel_public_inputs.end.public_call_requests.inner.contract_address] - inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" + inner = "0x148c27fde8d878a389a0b60592899d13257a2f688e63e8bc87145c1968b64cf0" [[previous_kernel_public_inputs.end.public_call_requests]] counter = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4941,4 +4941,4 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml index 84bd1b49b4d5..681fa3f5567d 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml @@ -6,7 +6,7 @@ vk_path = [ "0x0a53612b564d6171b0b13b499eaed0cf2d21e8a6a678335f42ec8f30eb24a08a", "0x0e892653be0889bb19c33c717d702acef52f0bf85a230de172b8cf0b9fe0fdb4", "0x0f6bd8ccfb76feec5b9e3d00618759f8f9063f425f6518599bb779516323440f", - "0x2ea5aef0b90c1efadd6c9aa97fc0ae6895a0c16f489fe5edada54bba23105b68" + "0x0fa7cbf2c5bc292ef57fdeb3c5e63d04142426b62b786bed5c33c5b18ea8894b" ] [previous_kernel.vk] @@ -160,23 +160,23 @@ vk_path = [ [previous_kernel_public_inputs] min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" is_private_only = true -claimed_first_nullifier = "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece" +claimed_first_nullifier = "0x08e573df0ad9948b1916632d9ea47e27736b3ac16b5bcc1a445cc2b072efb90a" [previous_kernel_public_inputs.constants] - vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" - protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" + vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" + protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" + total_fees = "0x000000000000000000000000000000000000000000000000000000014118ccce" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" + root = "0x2e761c36888898f03ac5d0bea81b547a3ad030b840ab5083f01cfb561a6bc5b5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" + blobs_hash = "0x00e32ebd3dddb6563e02baf544c5891383a01659faed580d956ccdac626a0560" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -185,37 +185,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" +root = "0x0d0e0f95c428a5561badc63953a210cf91019de21090892d60a2e281a5098e14" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" +root = "0x2d356708f63fa2fb228199ac7aae22624838b2d1b6c5791c18f874ddc2f1829d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" +root = "0x2758a371a29f7f08046f0a6e35eb37e7edbbef5c0fd82053f970ce663a79f1f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c32b" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d7e6" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" [previous_kernel_public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -227,7 +227,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fa3" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2227,7 +2227,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] -value = "0x24ac82e7a637a4fccc2b5858a5cfc0136f80c5ce38773858d8a56a3ef9cba17c" +value = "0x08cb6046d3ffbc563426a846b2ece5d3624e222f26206aa85eedd332c4a8bf07" counter = "0x0000000000000000000000000000000000000000000000000000000000000007" [previous_kernel_public_inputs.end.note_hashes.contract_address] @@ -2235,7 +2235,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] -value = "0x0391b5bc7051c88b9743eafb041a23660f86509794638c1f4f49e37790bbcad6" +value = "0x1ee227d2795cf8085c2cbf62f3f757e0f37027ecc967eb0bf77f389d5993588a" counter = "0x0000000000000000000000000000000000000000000000000000000000000009" [previous_kernel_public_inputs.end.note_hashes.contract_address] @@ -2739,7 +2739,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece" +value = "0x08e573df0ad9948b1916632d9ea47e27736b3ac16b5bcc1a445cc2b072efb90a" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2748,7 +2748,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0de8053dc64a02c2220f409bb45ff4c374e68a272b43ee33124e109804b5db95" +value = "0x28f5d083ced78980f58535e099ba974bc14533bbd5a6e4bd72dbd59390025792" counter = "0x0000000000000000000000000000000000000000000000000000000000000006" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3408,24 +3408,24 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000008" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x0770b2cbfe538a0651ab187ab5b7b126479911f6ca57ac53a8a379736610e7c1", - "0x2bdd68daa386f98df39612ed98cdd2fe297eabacafab88c061d589788046ea26", - "0x00006f6ccb8b4e74446082bf3d11738658bbf3fa34d47f14c4c4a13bf86794d3", - "0x0020f058a0534d05d96968dd728d0cb365d8d5965a175fdf7581d9c7e8e77b5a", - "0x00162a2ade7c948cb0af4f97cf0415edf77552eae5d160477c624a8413f606e0", - "0x00d99886126f6ff05c81c48072deacd32101cd2a9bb8a87e45ab769755d312fd", - "0x00e380cd9edfff77e977444bb25177c9d75bdfe467e20cdebc3ad371d266a5f2", - "0x00cdcf3e25265ec1377d10c18fda1b2dea4c45396d6af236aa7521cca2059dc1", - "0x006914727a686cdf46f11e09c2b3c6abf8fe8c2beaec5dd42bf1a8db2795c3f7", - "0x005ea0d20f31d261caa035fa64d2b7a7f7da10187016179d202606a0371853f4", - "0x002be4525d0c7401981d827aa802105302b1bd039de814cf7b84320cb4a83c04", - "0x00ce5881e355c5856ec5a1006e14ca6982bc05854312e30f4b65eca269daa770", - "0x00e99644a2b6ecd701e5d3ff26d34acac51ceedcaea1363cac01904494b87e07", - "0x00ea3d29daf251ad75b98b9a643bb25d7eb2ba6cd8d38a0142ef237d7f453140", - "0x005b1018fed544b94a5c72bf5a0622111148f8800dbe845cda60e6bc81b90bf1", - "0x009ba873d531a93bd256f2784df12cf805eed582459fc55a9815386429a86cd9", - "0x00318500e57624369a4f1fd09e8370aa59e721d6e2a5d0a291a302f9584b8eee", - "0x00c9694dd50f6a59b42a12173548d15cefe282b15037f759413a5f2503f33838" + "0x10325800907a035141d0f5c5c80c3c7bd97f4367d1ea545e4aaf6a5991ae4a22", + "0x2d5074830e9fb3efe2556b95ba6ef7b901ae3c9210548a283cf10157402ced99", + "0x0000ab20f105630c03a11cc3aab551eeb3d10d80ebaaeb641e44471b89b53159", + "0x0037a2c319eb360d04f4ecb32b139d6a70a2f5d761df1963b346d78a58c4ff9d", + "0x0041141e70469608e8a8d9064b2691c6119ef4493dc5355f4b8dc214615cdf16", + "0x00b860c8536a7fc0c0e8ebe0d0b76c596d55b5bea3ad6b2d6c486e4e6ae6a0f9", + "0x0006e62cf856145a2f99b304d7ddbf749d6c1fff02d2c09a08b98eba03b71d46", + "0x006dd13676ca6b000090f6bfc4398c1bfecb9bd9d068930a9f520b2fb3e50ae2", + "0x008d06fa23e22ee97bd999346ba1d39e62790a6779a81be14afc1701a5999ed4", + "0x00ddee151b78cc26288bd2e46e187ad345f3252305854a7dbb77cb32502e5d3c", + "0x00d4fba8630dbf79042f002d2f68aaf0bbdf42ab985006724a0de52e8b9bb8de", + "0x00396ab8691416ad5f2c79e33912d6bbafef583d466bf57db19c2325726b596a", + "0x00f8ff57a33ac1650ed9f1bae8e7389d6fa8a7f6f545485eaedb379c969a03e6", + "0x000fd32adcd25c83b0643f31ccab5a9c2dcbac389d6b3ceaed0195139fdaeeac", + "0x002acae74020e259ee4c4edc0c22e09c9b21b1bd2e75b7b5a8feaec82620d395", + "0x005641d32d33632eb7edea6223fe948d2796d342dd08ce5b32e84383cc78d30f", + "0x00045229a3f884415a8499959f5ae7e29197b6a4a01d1adf5848dfafbce571b1", + "0x0030f02757505c8eba19a58a02565b6961736263746f38beae58b8246b276cc1" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -3438,24 +3438,24 @@ counter = "0x000000000000000000000000000000000000000000000000000000000000000a" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x01d9aea15f6a1d226d884c1d908bd58104f6fb9daaca0c97b55a4712f17ec5fb", - "0x0ca8a9af628946a49758ee14e7e3de6270b9725be6739cf0e81cf26a1d611522", - "0x000007b72a3575b18003fcb0ad2588a6ea7b05016917f43832d0d3e3eaf63802", - "0x00b9c532a777b18730b53be76ad1d869c47ee5133f5c1ea8155a3bc2a561ccf6", - "0x0078fdbbf99c655e3c7645757d1612b1288f94335500b045b4ac0dfeec8cd156", - "0x00a18fe56fb38d369efaaa5d75119709c64b1a2675f2d34ec9cce151e0c32c6b", - "0x001291a4e1511abaa7b82abcab90228b4cb986a0aaeec173e141621feab6f475", - "0x0080aea6c107610e2694c9d5cf44aaed86a21d11adc6d92f38030e827b1c3a58", - "0x00c547b22874d0b514d08d2882dc88c2ad86c3825c6a9aed804d2a16170e8348", - "0x00a2d17a8e2382129f98b7340867fc1d30dc0cdba8850ddf25d1acb19a8e4ed4", - "0x00bd9e4b7a8893dfca7777df62e49c614c3470cbcae98238903b15c5b199ca33", - "0x0078fa59a69260a5de7785b4eca42437c8860f3268f2b8e2c98f2e3762901912", - "0x005585d2301901b697b3fdaa7cbd7c33fd504df0ffdbc6541815fb12400b4632", - "0x0090c0c7c2cbc58a982ddcd82129f74dc18c813df638a0153bdae4dc00485336", - "0x004e90e816954ccd35172be795f48efee75545be02a1110da4b30fc6991d8939", - "0x000a4a4691bfc05b252b9aab962caa5b91afb03eb7e6a94cd3fba1db92127b1e", - "0x007935e583e890b6e31f0413e382c6af89cb501f80e6fccf29d17a3677c2b464", - "0x005fad622eab5e7d7fcc359813ff0a1657dc4c9e89dc250cb1b258c913750c92" + "0x0e3b996b1d0ed868d992171d64997c07c5861423664dfeb1a86ca910a83bf8e4", + "0x091f742d35e861d18de50a4fcd266ffa255d574fc14d15d4be81b38a02e895f6", + "0x0000b3ba5ccfa5d5b7e8209ec5522116b8dafa9f1254500d11fde689529cda6c", + "0x00f075434903278b82dbddb4ca85c170b536fa08b46cbd8c2c765edc01e1690c", + "0x00c249e49eb6a5dbb2750879bbe215db48c37b2e7f90c7c8d95c89e9be32d147", + "0x00cd06ea0643de631eecbbd302eee712e37d88e5e72d25bac4753d358d131aba", + "0x00aeb072fa3f5243e4a16e26d1204fb3c7ae137009646c41515c3d4ecfbed50d", + "0x007662c4ef4570c1c876fb9e0cbfe3028f2c030792042059a878ed83f985afd0", + "0x00d309a0512536b180b5014a594887228a3d5d3b7d9d992270b1bdf1489f3b58", + "0x006a8b0bf91f51148ed3f1f0bfe22e50d7ea6c87670b4f996ef8b779ce294773", + "0x00ea145d6a20a2d8787d5450645d25d6f3d10c39a85c66538b5e6f2b74abb157", + "0x00a6f640fb930e17c3b434b62906ae98245d25739aef05496a6f8ccdd1695e7f", + "0x00db367a85fe097dc1879bd3c81d97acb50c2feb41d94224a5884d18a4cc6dd9", + "0x00ca605d49c47ed0ed25adbb297eb218ddb9da8ebc15b7e93114687b14ef4261", + "0x0089d8ee78e442b987e5377f7c8efb224e081812e7e6e6df2eff59f01f73f4d9", + "0x00be5884a11df3abbd50a49da3c0defd4c67bb5543477434631cad412ee2ac25", + "0x00933fe04a5d134ad6c703b9569a3621dd2932d9f2d45a4d1d3c5b514ed4fcac", + "0x00a86c9a5588a2281432f40364ca8db6d82c4d8bc6bee358abf897a570e41603" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -3468,24 +3468,24 @@ counter = "0x000000000000000000000000000000000000000000000000000000000000000b" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x1369a1cbea27995ca20b9d7b16f4fadf3f8e7c42d919c79b6819e8767d2f9fee", - "0x21e89c900404aa792f14a881d334778880c8b3cdb3e1b28108c027653c4abb6f", - "0x000183e152bea35725090be7414e9c4881162ddef2e87909d193bb4a39c223e9", - "0x00dd46fc8d3f7c5c1df7a8e8b72cb3c5ce09fe93fff226498decdc057fa0ac7a", - "0x0099fc01c4a8706ad4b3aec3d3169aaa7f1da6fd56acb7f3e513d8d0a8f42d92", - "0x00b73bed2d24f8b35787aeb686bca5d215a21ca4ea9ae278e7ce84a6a18f64ff", - "0x00b8cb7c4f092fcf6c34fbf6457da7653dac83c00533a41ff46aed4a50292d7f", - "0x00d2ec3253dc80e8b986351a8bc22b7342c248c062867d61183de02f0bfcc93d", - "0x008884a30ccaf624787a30ae849e090f5cdbb9c680bbb77f045ea22ad9584613", - "0x00f0ce4234d291add28b800394ceb06dc30c1c562bd9abe281807f6345157344", - "0x001f54c1c7f4947838b3a650ae4dd674bc177bb5da8934007b6592a4f589fbd2", - "0x00ff870df8bde260b20b45ce94ace25c9cf5d90ec50da0db2e21b4a47efdefb2", - "0x00fb6d622ce89228fba40dec2567ed9a1e4bcb5955b55129be76019f9ac446c5", - "0x00fa22dd89dec95309a7ef6df8c2d515069003bf78efd44edf62c7de0535617b", - "0x00185481635a7e7280b58e32e81465d7840ef349f9aaeb1553917425a3c1e469", - "0x005cfa506fd18ae5cadcc60470ddb9ba3736c288085c7d39270e4eff490a64b7", - "0x00969a720629f33dfffe06fda05e96f7d2faf63c048efbe62274e2d6c54bc464", - "0x008c469d709e7b3f258c7fa40998eca40b73ca62ae8885e19cae72ad07e0438c" + "0x192f46ed50001355f4bcfdfb253fbad90d50be9d24cdc5697deea3a2984b9c35", + "0x0d955fd3f5edb7fc60cf6ab763897d5f35cc5074aea66a5a00ed47033045c7dd", + "0x00003b3af98264bba7623b91a444cfb542ba6e0048319144b7ba0d6fc27d37be", + "0x002575988401595e431bc4387f76a0036bbd35b847cfa64cd577196c08710eb2", + "0x005f8a6d712661688a965f32f79863b14e95fdd999161663ee4d8e66f6a3918b", + "0x0043b5d23920da0ffef08423b588281ba634047f343c8b7045f9a1d783aac762", + "0x005e5eb7f138a40a0c34d6b24951c844b03151840bc02af4c0901d6614247942", + "0x0028bcbd769b93806f78c5ff62e4bcba2e4cee478d6ea04d2da07e3a9ac01fff", + "0x00778402977400fb9bca3d5758ce6f83ebecc2c255eca12d69a4a25fd6f3eeda", + "0x00ed7e94ca838662a380c6b257457d0e0149e79cb7dd881e4c7c33fd3856b923", + "0x0051648432054d781347fce8651ef35864ade64b6b87ca57b5f48d0c3d97231b", + "0x00224cb4ce22ca8e84ddf08badc70283106fa88b6fa745ac1d7cdd1bc30c1fb7", + "0x00704226e02b503809afdfb22944f14db753ad70ea44f2a7e290390c219c0639", + "0x00d5f4188d24710bc759fc963ad36b804f484dc833f8047cf78eb19a9f5911d4", + "0x00078892d7f369da52ec64a6b0c2524a52ae2ece978432a20737558445e872fb", + "0x00f0b5df2ab4506cfb7c0b31917c73d6eb31b972c26bda626dddfcfc53c506f0", + "0x002afd3d3b315d24de10a23dddd3fdbae1f70b1464b9d09ca3e0e7571bad0d85", + "0x00057283b71ebf1feea14cb3ee1eca7c6d0ddc78773f4907d3a15fd3a6461ec0" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -4941,4 +4941,4 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.fee_payer] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml index 2ef365d8de24..74102c206679 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml @@ -3,20 +3,20 @@ _is_some = true _value = "0x0000000000000000000000000000000000000000000000000000000000000e16" [inputs.tube_data.public_inputs.constants] -vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" -protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" +vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" +protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [inputs.tube_data.public_inputs.constants.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" + total_fees = "0x000000000000000000000000000000000000000000000000000000014118ccce" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [inputs.tube_data.public_inputs.constants.historical_header.last_archive] - root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" + root = "0x2e761c36888898f03ac5d0bea81b547a3ad030b840ab5083f01cfb561a6bc5b5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [inputs.tube_data.public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" + blobs_hash = "0x00e32ebd3dddb6563e02baf544c5891383a01659faed580d956ccdac626a0560" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -25,37 +25,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" +root = "0x0d0e0f95c428a5561badc63953a210cf91019de21090892d60a2e281a5098e14" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" +root = "0x2d356708f63fa2fb228199ac7aae22624838b2d1b6c5791c18f874ddc2f1829d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" +root = "0x2758a371a29f7f08046f0a6e35eb37e7edbbef5c0fd82053f970ce663a79f1f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.tube_data.public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c32b" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d7e6" [inputs.tube_data.public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -67,7 +67,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fa3" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -75,8 +75,8 @@ fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000 [inputs.tube_data.public_inputs.end] note_hashes = [ - "0x24ac82e7a637a4fccc2b5858a5cfc0136f80c5ce38773858d8a56a3ef9cba17c", - "0x0391b5bc7051c88b9743eafb041a23660f86509794638c1f4f49e37790bbcad6", + "0x08cb6046d3ffbc563426a846b2ece5d3624e222f26206aa85eedd332c4a8bf07", + "0x1ee227d2795cf8085c2cbf62f3f757e0f37027ecc967eb0bf77f389d5993588a", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -141,8 +141,8 @@ note_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece", - "0x0de8053dc64a02c2220f409bb45ff4c374e68a272b43ee33124e109804b5db95", + "0x08e573df0ad9948b1916632d9ea47e27736b3ac16b5bcc1a445cc2b072efb90a", + "0x28f5d083ced78980f58535e099ba974bc14533bbd5a6e4bd72dbd59390025792", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -297,68 +297,68 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x0770b2cbfe538a0651ab187ab5b7b126479911f6ca57ac53a8a379736610e7c1", - "0x2bdd68daa386f98df39612ed98cdd2fe297eabacafab88c061d589788046ea26", - "0x00006f6ccb8b4e74446082bf3d11738658bbf3fa34d47f14c4c4a13bf86794d3", - "0x0020f058a0534d05d96968dd728d0cb365d8d5965a175fdf7581d9c7e8e77b5a", - "0x00162a2ade7c948cb0af4f97cf0415edf77552eae5d160477c624a8413f606e0", - "0x00d99886126f6ff05c81c48072deacd32101cd2a9bb8a87e45ab769755d312fd", - "0x00e380cd9edfff77e977444bb25177c9d75bdfe467e20cdebc3ad371d266a5f2", - "0x00cdcf3e25265ec1377d10c18fda1b2dea4c45396d6af236aa7521cca2059dc1", - "0x006914727a686cdf46f11e09c2b3c6abf8fe8c2beaec5dd42bf1a8db2795c3f7", - "0x005ea0d20f31d261caa035fa64d2b7a7f7da10187016179d202606a0371853f4", - "0x002be4525d0c7401981d827aa802105302b1bd039de814cf7b84320cb4a83c04", - "0x00ce5881e355c5856ec5a1006e14ca6982bc05854312e30f4b65eca269daa770", - "0x00e99644a2b6ecd701e5d3ff26d34acac51ceedcaea1363cac01904494b87e07", - "0x00ea3d29daf251ad75b98b9a643bb25d7eb2ba6cd8d38a0142ef237d7f453140", - "0x005b1018fed544b94a5c72bf5a0622111148f8800dbe845cda60e6bc81b90bf1", - "0x009ba873d531a93bd256f2784df12cf805eed582459fc55a9815386429a86cd9", - "0x00318500e57624369a4f1fd09e8370aa59e721d6e2a5d0a291a302f9584b8eee", - "0x00c9694dd50f6a59b42a12173548d15cefe282b15037f759413a5f2503f33838" + "0x10325800907a035141d0f5c5c80c3c7bd97f4367d1ea545e4aaf6a5991ae4a22", + "0x2d5074830e9fb3efe2556b95ba6ef7b901ae3c9210548a283cf10157402ced99", + "0x0000ab20f105630c03a11cc3aab551eeb3d10d80ebaaeb641e44471b89b53159", + "0x0037a2c319eb360d04f4ecb32b139d6a70a2f5d761df1963b346d78a58c4ff9d", + "0x0041141e70469608e8a8d9064b2691c6119ef4493dc5355f4b8dc214615cdf16", + "0x00b860c8536a7fc0c0e8ebe0d0b76c596d55b5bea3ad6b2d6c486e4e6ae6a0f9", + "0x0006e62cf856145a2f99b304d7ddbf749d6c1fff02d2c09a08b98eba03b71d46", + "0x006dd13676ca6b000090f6bfc4398c1bfecb9bd9d068930a9f520b2fb3e50ae2", + "0x008d06fa23e22ee97bd999346ba1d39e62790a6779a81be14afc1701a5999ed4", + "0x00ddee151b78cc26288bd2e46e187ad345f3252305854a7dbb77cb32502e5d3c", + "0x00d4fba8630dbf79042f002d2f68aaf0bbdf42ab985006724a0de52e8b9bb8de", + "0x00396ab8691416ad5f2c79e33912d6bbafef583d466bf57db19c2325726b596a", + "0x00f8ff57a33ac1650ed9f1bae8e7389d6fa8a7f6f545485eaedb379c969a03e6", + "0x000fd32adcd25c83b0643f31ccab5a9c2dcbac389d6b3ceaed0195139fdaeeac", + "0x002acae74020e259ee4c4edc0c22e09c9b21b1bd2e75b7b5a8feaec82620d395", + "0x005641d32d33632eb7edea6223fe948d2796d342dd08ce5b32e84383cc78d30f", + "0x00045229a3f884415a8499959f5ae7e29197b6a4a01d1adf5848dfafbce571b1", + "0x0030f02757505c8eba19a58a02565b6961736263746f38beae58b8246b276cc1" ] [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x01d9aea15f6a1d226d884c1d908bd58104f6fb9daaca0c97b55a4712f17ec5fb", - "0x0ca8a9af628946a49758ee14e7e3de6270b9725be6739cf0e81cf26a1d611522", - "0x000007b72a3575b18003fcb0ad2588a6ea7b05016917f43832d0d3e3eaf63802", - "0x00b9c532a777b18730b53be76ad1d869c47ee5133f5c1ea8155a3bc2a561ccf6", - "0x0078fdbbf99c655e3c7645757d1612b1288f94335500b045b4ac0dfeec8cd156", - "0x00a18fe56fb38d369efaaa5d75119709c64b1a2675f2d34ec9cce151e0c32c6b", - "0x001291a4e1511abaa7b82abcab90228b4cb986a0aaeec173e141621feab6f475", - "0x0080aea6c107610e2694c9d5cf44aaed86a21d11adc6d92f38030e827b1c3a58", - "0x00c547b22874d0b514d08d2882dc88c2ad86c3825c6a9aed804d2a16170e8348", - "0x00a2d17a8e2382129f98b7340867fc1d30dc0cdba8850ddf25d1acb19a8e4ed4", - "0x00bd9e4b7a8893dfca7777df62e49c614c3470cbcae98238903b15c5b199ca33", - "0x0078fa59a69260a5de7785b4eca42437c8860f3268f2b8e2c98f2e3762901912", - "0x005585d2301901b697b3fdaa7cbd7c33fd504df0ffdbc6541815fb12400b4632", - "0x0090c0c7c2cbc58a982ddcd82129f74dc18c813df638a0153bdae4dc00485336", - "0x004e90e816954ccd35172be795f48efee75545be02a1110da4b30fc6991d8939", - "0x000a4a4691bfc05b252b9aab962caa5b91afb03eb7e6a94cd3fba1db92127b1e", - "0x007935e583e890b6e31f0413e382c6af89cb501f80e6fccf29d17a3677c2b464", - "0x005fad622eab5e7d7fcc359813ff0a1657dc4c9e89dc250cb1b258c913750c92" + "0x0e3b996b1d0ed868d992171d64997c07c5861423664dfeb1a86ca910a83bf8e4", + "0x091f742d35e861d18de50a4fcd266ffa255d574fc14d15d4be81b38a02e895f6", + "0x0000b3ba5ccfa5d5b7e8209ec5522116b8dafa9f1254500d11fde689529cda6c", + "0x00f075434903278b82dbddb4ca85c170b536fa08b46cbd8c2c765edc01e1690c", + "0x00c249e49eb6a5dbb2750879bbe215db48c37b2e7f90c7c8d95c89e9be32d147", + "0x00cd06ea0643de631eecbbd302eee712e37d88e5e72d25bac4753d358d131aba", + "0x00aeb072fa3f5243e4a16e26d1204fb3c7ae137009646c41515c3d4ecfbed50d", + "0x007662c4ef4570c1c876fb9e0cbfe3028f2c030792042059a878ed83f985afd0", + "0x00d309a0512536b180b5014a594887228a3d5d3b7d9d992270b1bdf1489f3b58", + "0x006a8b0bf91f51148ed3f1f0bfe22e50d7ea6c87670b4f996ef8b779ce294773", + "0x00ea145d6a20a2d8787d5450645d25d6f3d10c39a85c66538b5e6f2b74abb157", + "0x00a6f640fb930e17c3b434b62906ae98245d25739aef05496a6f8ccdd1695e7f", + "0x00db367a85fe097dc1879bd3c81d97acb50c2feb41d94224a5884d18a4cc6dd9", + "0x00ca605d49c47ed0ed25adbb297eb218ddb9da8ebc15b7e93114687b14ef4261", + "0x0089d8ee78e442b987e5377f7c8efb224e081812e7e6e6df2eff59f01f73f4d9", + "0x00be5884a11df3abbd50a49da3c0defd4c67bb5543477434631cad412ee2ac25", + "0x00933fe04a5d134ad6c703b9569a3621dd2932d9f2d45a4d1d3c5b514ed4fcac", + "0x00a86c9a5588a2281432f40364ca8db6d82c4d8bc6bee358abf897a570e41603" ] [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x1369a1cbea27995ca20b9d7b16f4fadf3f8e7c42d919c79b6819e8767d2f9fee", - "0x21e89c900404aa792f14a881d334778880c8b3cdb3e1b28108c027653c4abb6f", - "0x000183e152bea35725090be7414e9c4881162ddef2e87909d193bb4a39c223e9", - "0x00dd46fc8d3f7c5c1df7a8e8b72cb3c5ce09fe93fff226498decdc057fa0ac7a", - "0x0099fc01c4a8706ad4b3aec3d3169aaa7f1da6fd56acb7f3e513d8d0a8f42d92", - "0x00b73bed2d24f8b35787aeb686bca5d215a21ca4ea9ae278e7ce84a6a18f64ff", - "0x00b8cb7c4f092fcf6c34fbf6457da7653dac83c00533a41ff46aed4a50292d7f", - "0x00d2ec3253dc80e8b986351a8bc22b7342c248c062867d61183de02f0bfcc93d", - "0x008884a30ccaf624787a30ae849e090f5cdbb9c680bbb77f045ea22ad9584613", - "0x00f0ce4234d291add28b800394ceb06dc30c1c562bd9abe281807f6345157344", - "0x001f54c1c7f4947838b3a650ae4dd674bc177bb5da8934007b6592a4f589fbd2", - "0x00ff870df8bde260b20b45ce94ace25c9cf5d90ec50da0db2e21b4a47efdefb2", - "0x00fb6d622ce89228fba40dec2567ed9a1e4bcb5955b55129be76019f9ac446c5", - "0x00fa22dd89dec95309a7ef6df8c2d515069003bf78efd44edf62c7de0535617b", - "0x00185481635a7e7280b58e32e81465d7840ef349f9aaeb1553917425a3c1e469", - "0x005cfa506fd18ae5cadcc60470ddb9ba3736c288085c7d39270e4eff490a64b7", - "0x00969a720629f33dfffe06fda05e96f7d2faf63c048efbe62274e2d6c54bc464", - "0x008c469d709e7b3f258c7fa40998eca40b73ca62ae8885e19cae72ad07e0438c" + "0x192f46ed50001355f4bcfdfb253fbad90d50be9d24cdc5697deea3a2984b9c35", + "0x0d955fd3f5edb7fc60cf6ab763897d5f35cc5074aea66a5a00ed47033045c7dd", + "0x00003b3af98264bba7623b91a444cfb542ba6e0048319144b7ba0d6fc27d37be", + "0x002575988401595e431bc4387f76a0036bbd35b847cfa64cd577196c08710eb2", + "0x005f8a6d712661688a965f32f79863b14e95fdd999161663ee4d8e66f6a3918b", + "0x0043b5d23920da0ffef08423b588281ba634047f343c8b7045f9a1d783aac762", + "0x005e5eb7f138a40a0c34d6b24951c844b03151840bc02af4c0901d6614247942", + "0x0028bcbd769b93806f78c5ff62e4bcba2e4cee478d6ea04d2da07e3a9ac01fff", + "0x00778402977400fb9bca3d5758ce6f83ebecc2c255eca12d69a4a25fd6f3eeda", + "0x00ed7e94ca838662a380c6b257457d0e0149e79cb7dd881e4c7c33fd3856b923", + "0x0051648432054d781347fce8651ef35864ade64b6b87ca57b5f48d0c3d97231b", + "0x00224cb4ce22ca8e84ddf08badc70283106fa88b6fa745ac1d7cdd1bc30c1fb7", + "0x00704226e02b503809afdfb22944f14db753ad70ea44f2a7e290390c219c0639", + "0x00d5f4188d24710bc759fc963ad36b804f484dc833f8047cf78eb19a9f5911d4", + "0x00078892d7f369da52ec64a6b0c2524a52ae2ece978432a20737558445e872fb", + "0x00f0b5df2ab4506cfb7c0b31917c73d6eb31b972c26bda626dddfcfc53c506f0", + "0x002afd3d3b315d24de10a23dddd3fdbae1f70b1464b9d09ca3e0e7571bad0d85", + "0x00057283b71ebf1feea14cb3ee1eca7c6d0ddc78773f4907d3a15fd3a6461ec0" ] [[inputs.tube_data.public_inputs.end.private_logs]] @@ -1013,7 +1013,7 @@ da_gas = "0x0000000000000000000000000000000000000000000000000000000000007c00" l2_gas = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.tube_data.public_inputs.fee_payer] -inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" +inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [inputs.tube_data.proof] fields = [ @@ -1560,7 +1560,7 @@ vk_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x157fcd65138221a77db675de5f924aad7f4c48affaf85acd249ba1bc9746587b", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", + "0x17121585aa6800bb9d9b7250898bbbd170b2458884f8738cd2fdbaa3442b0f62", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -1700,15 +1700,15 @@ vk_path = [ hash = "0x0000000000000000000000000000000000000000000000000000000000000002" [inputs.start.note_hash_tree] -root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" +root = "0x0d0e0f95c428a5561badc63953a210cf91019de21090892d60a2e281a5098e14" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [inputs.start.nullifier_tree] -root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" +root = "0x2d356708f63fa2fb228199ac7aae22624838b2d1b6c5791c18f874ddc2f1829d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.start.public_data_tree] -root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" +root = "0x2758a371a29f7f08046f0a6e35eb37e7edbbef5c0fd82053f970ce663a79f1f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.start_sponge_blob] @@ -1732,8 +1732,8 @@ expected_fields = "0x00000000000000000000000000000000000000000000000000000000000 [inputs.state_diff_hints] sorted_nullifiers = [ - "0x125d024674a4d3289f5c1817d9ad48ee99a6b9ada1057ee97a87d1fa8e750ece", - "0x0de8053dc64a02c2220f409bb45ff4c374e68a272b43ee33124e109804b5db95", + "0x28f5d083ced78980f58535e099ba974bc14533bbd5a6e4bd72dbd59390025792", + "0x08e573df0ad9948b1916632d9ea47e27736b3ac16b5bcc1a445cc2b072efb90a", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -1798,8 +1798,8 @@ sorted_nullifiers = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] sorted_nullifier_indexes = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000003", "0x0000000000000000000000000000000000000000000000000000000000000004", @@ -1865,8 +1865,8 @@ sorted_nullifier_indexes = [ ] note_hash_subtree_sibling_path = [ "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x09f7f8de3925fd0d0723ee549476fa64dba80fc4a92220428d0a6781d77a18c3", - "0x1bcacce6e217a46734513c4a6525dcd3a757f89a573ffd1ba31307802b5e8b9d", + "0x0abcc3a0ee45b69342d4e0486a30be2a41725ed4bb1cbece9108f7753a133104", + "0x2b03bb383d8f4acd1d00d2f771d222be095210a3297a296e43cb8c9269f763d3", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -1903,7 +1903,7 @@ nullifier_subtree_sibling_path = [ "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", - "0x2951a23c18ca74858f6222240f55aaeb7581e2e8f0f370f302771b62b2184f69", + "0x1298bc1fd72336e851dfa387583b8b32684f9697dbc840962118d891d7e2d156", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", @@ -1979,14 +1979,14 @@ fee_write_sibling_path = [ ] [[inputs.state_diff_hints.nullifier_predecessor_preimages]] - nullifier = "0x0f8ec08847a92c0e7c70a92a6af946ad2e40cf1a1d8cd3422d9431752d479901" - next_nullifier = "0x13c9eb415ecc1759327dd83ae979ff2cc71fd2d5642bfc3c35c62787b25df73c" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000081" + nullifier = "0x28cf9c943b4a67e476f24b3fd28e062d7ab6fd18b2443d03789d663095ae4485" + next_nullifier = "0x2c2c72770aaaeb582349b6711a003f5fa82bff46f626cd878b3914f03c380091" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000102" [[inputs.state_diff_hints.nullifier_predecessor_preimages]] - nullifier = "0x0dad5945a0bf670e9620b85ae52c1d576e1021131f78d3676bdea0829f6e4963" - next_nullifier = "0x0f4773751d7f7b66cee82e80b567eff15e9996dc8e35e6f3e48037c3103f890c" - next_index = "0x00000000000000000000000000000000000000000000000000000000000000c0" + nullifier = "0x088bbc1f5dac758afaf8366264a7371c90b85dc6efd66c6944063dbf1f99e127" + next_nullifier = "0x0922fdc7f17d740b66c593f5cc3efc72fc324ce1f6367f104d0deea2e2e30876" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000100" [[inputs.state_diff_hints.nullifier_predecessor_preimages]] nullifier = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2299,17 +2299,17 @@ fee_write_sibling_path = [ next_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.state_diff_hints.nullifier_predecessor_membership_witnesses]] - leaf_index = "320" + leaf_index = "257" sibling_path = [ - "0x228ca2aed7f1bb4540f10b577a767210c1d1b9f231726e31d4795397a82ccc7c", - "0x1dbf4165e05022b2962d8d187cc8ef5359b55429f686fcb6ddc1e65cfe516808", + "0x0a6c2d4552dc59be60405f04ca064ed348fdfd2880240655fac1f74424111a45", + "0x1912d66f598e4331f604ac7c4b39f9ce62a5e88fdf87e682f641344cbe5dffbf", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x1abfbe878f3881ccf0420742c536b0ec68737fc486f4597445a4a9cc21614876", - "0x19c840caa171aff1d410b2c9359551ba34d88ec0eab88cb6e8d33afb6a12a842", - "0x24873522a8f7974849638d500b5e48cfa1e231b2503dbce006e5d713bbec3f04", + "0x2f5d01ee0ee99809b4c09b7a6f22e0b0ce329a864b0882e54e15e03d3e3bdf4d", + "0x1405c7ee0097d448d0688c54f1e07c30fcc2af36d844653fe30cd5c327390c18", + "0x0414368ef8e0c06707b424547064f7b5aa3acbc1641ac73dc1316b3f23b54ac2", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -2344,17 +2344,17 @@ fee_write_sibling_path = [ ] [[inputs.state_diff_hints.nullifier_predecessor_membership_witnesses]] - leaf_index = "130" + leaf_index = "320" sibling_path = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x22a1b7d0a3c2b59b489691fd0c81d96ec2232ca0fa1162b8c9a08411f81d7d18", + "0x2294157263998c315c0d341bee8ed756b390eee9ffd505f8d2ab35d05659cfa6", + "0x09bdeb21b7bd768a6fa42bbea9b2e2d5af332ad571c8919715dbd3d5f77e89f3", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x030e06bc4319110d17e75a8a534071da393bc99b1660f6ca82ea9356273331d3", - "0x1cca5a85bd0e1eb0bd63c73b54b30a7cbeeed3633445eaef9caf5ac5625bd95d", - "0x191cb9755ab6be2d7998c6b6775b110ec88a365a4f8e01ea4239d24d5e695a4e", + "0x25f271dd8d0adce5bca7ecb7b6ba78d117e4af4170337dc3517440cf2c4cf6ea", + "0x1405c7ee0097d448d0688c54f1e07c30fcc2af36d844653fe30cd5c327390c18", + "0x0414368ef8e0c06707b424547064f7b5aa3acbc1641ac73dc1316b3f23b54ac2", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", @@ -5179,22 +5179,22 @@ fee_write_sibling_path = [ ] [inputs.state_diff_hints.fee_write_low_leaf_preimage] - slot = "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" - value = "0x00000000000000000000000000000000000000000000021e19e0c9afadfcc4e8" - next_slot = "0x176126572877c32e398b129ff058d593a74d3e6ebfef9f0c1be56649fcb5de8a" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000079" + slot = "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1" + value = "0x00000000000000000000000000000000000000000000021e19e0c9b13cd8d62e" + next_slot = "0x25b6f91dcd3f6ddcdfba8a48b4579c2eb345daeadac01b3384cbfc824be226b4" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [inputs.state_diff_hints.fee_write_low_leaf_membership_witness] - leaf_index = "120" + leaf_index = "125" sibling_path = [ - "0x21d0bdec05f36b4f41573c46bcf661d71b4516c322cc129e1c9c0f1be1b82a9a", - "0x07d62c6fcba7e2104f760ac4f01df4d9b1bad9728367b5feb97063f7a24311d1", - "0x243b7cf08d9e700a8516c9d406aef9665b2550052566fd12276fd336932f1a84", - "0x08b10026def0dcfac8f145be005e40a32506bf7158bbc88d221587c10e729858", + "0x03aaafcf9d2b81e227bcb69b8bc696727d34417ad6df2debe2788d43373a5c35", + "0x283b7bf14eb6b896fd2bbebafe6a90bc136373adc64e889e6f7dfb243474b4ef", + "0x24e3e16b94fc9c2ad28a522faa34be3f9bb4b5a527108972e7dddb4c3496cd45", + "0x0972027ae8be0734a5f0d265e8932820f6c5948c988b977879b8777b28190993", "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", - "0x182127ee0c015dde7b068973d43d3909bc7435ada18f0bc22efdeaf9618c938a", + "0x1494ff1389723a2d0a4e3959606552262d1921c0afa276796ca9fe8bda314025", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -5230,20 +5230,20 @@ fee_write_sibling_path = [ ] [inputs.fee_payer_fee_juice_balance_read_hint] -leaf_slot = "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" -value = "0x00000000000000000000000000000000000000000000021e19e0c9afadfcc4e8" +leaf_slot = "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1" +value = "0x00000000000000000000000000000000000000000000021e19e0c9b13cd8d62e" [inputs.fee_payer_fee_juice_balance_read_hint.membership_witness] - leaf_index = "120" + leaf_index = "125" sibling_path = [ - "0x21d0bdec05f36b4f41573c46bcf661d71b4516c322cc129e1c9c0f1be1b82a9a", - "0x07d62c6fcba7e2104f760ac4f01df4d9b1bad9728367b5feb97063f7a24311d1", - "0x243b7cf08d9e700a8516c9d406aef9665b2550052566fd12276fd336932f1a84", - "0x08b10026def0dcfac8f145be005e40a32506bf7158bbc88d221587c10e729858", + "0x03aaafcf9d2b81e227bcb69b8bc696727d34417ad6df2debe2788d43373a5c35", + "0x283b7bf14eb6b896fd2bbebafe6a90bc136373adc64e889e6f7dfb243474b4ef", + "0x24e3e16b94fc9c2ad28a522faa34be3f9bb4b5a527108972e7dddb4c3496cd45", + "0x0972027ae8be0734a5f0d265e8932820f6c5948c988b977879b8777b28190993", "0x179d7b5df7a65a4bdda408605c069b3ea175a5f4e2b0fccc9f2ebcb5d12c7c28", "0x19e2b3449d24e57ea4d6948048220d0756f93b6aaca968960b173df69903160a", "0x1a35cf71ad31b7058db0cec41776442412ccd9f75276205dcd8fd0ffc4bbfaab", - "0x182127ee0c015dde7b068973d43d3909bc7435ada18f0bc22efdeaf9618c938a", + "0x1494ff1389723a2d0a4e3959606552262d1921c0afa276796ca9fe8bda314025", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -5279,17 +5279,17 @@ value = "0x00000000000000000000000000000000000000000000021e19e0c9afadfcc4e8" ] [inputs.fee_payer_fee_juice_balance_read_hint.leaf_preimage] - slot = "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" - value = "0x00000000000000000000000000000000000000000000021e19e0c9afadfcc4e8" - next_slot = "0x176126572877c32e398b129ff058d593a74d3e6ebfef9f0c1be56649fcb5de8a" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000079" + slot = "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1" + value = "0x00000000000000000000000000000000000000000000021e19e0c9b13cd8d62e" + next_slot = "0x25b6f91dcd3f6ddcdfba8a48b4579c2eb345daeadac01b3384cbfc824be226b4" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [inputs.archive_root_membership_witness] leaf_index = "6" sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x2be2e0b5247d27d4aa1436c8ddb5f63ec56e9d8a0c0d295750b1bb90cb6d7343", - "0x1e96066120e8194f7cffe64e70af687163885eed70669e9707b1a00cede7cb81", + "0x21f2fe9ec6e7a0b21b6e661df9d3e80eb18c05948b461620bf6391ade3a2fb76", + "0x2c3abd803a29dc4ef7199f08fead4e3db201d441b433b1d194764b1314077474", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", @@ -8346,26 +8346,26 @@ fields = [ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants] -vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" -protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" +vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" +protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [inputs.constants.last_archive] - root = "0x15b96c203874595fa1e623ce8e239e955f35474630ab7ecefaf9186f6de51778" + root = "0x093f4c35cf257cc90e68975b9de88b6f52de68d95962d6cba74cd635996c7e07" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f25" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c41b" [inputs.constants.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml index b75515e19c41..425a9a7693c6 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml @@ -1,18 +1,18 @@ [inputs.tube_data.public_inputs.constants] -vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" -protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" +vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" +protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [inputs.tube_data.public_inputs.constants.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000000000182671ca8" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000192fb" + total_fees = "0x000000000000000000000000000000000000000000000000000000014118ccce" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000017cbd" [inputs.tube_data.public_inputs.constants.historical_header.last_archive] - root = "0x061d2777b81f171f7d40b6293588696725f43ec8b17fc46f0c08ba459eea6772" + root = "0x2e761c36888898f03ac5d0bea81b547a3ad030b840ab5083f01cfb561a6bc5b5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [inputs.tube_data.public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x00c150116ec4c665d4580bf985e1c23ec955dc59985499ed60d345655ea4e229" + blobs_hash = "0x00e32ebd3dddb6563e02baf544c5891383a01659faed580d956ccdac626a0560" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -21,37 +21,37 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x199b01a8a33dc8d0a1ee069202aed9b14a4ee01902a47d8aa81a94d96a4a1449" +root = "0x0d0e0f95c428a5561badc63953a210cf91019de21090892d60a2e281a5098e14" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000180" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x28a39e2341bcc553daf5a2138376faf63089eb276c52a70e68c3d15ee76398f0" +root = "0x2d356708f63fa2fb228199ac7aae22624838b2d1b6c5791c18f874ddc2f1829d" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x1406b0d10e943e5daf41551b5c781a053b9df6e82fcb6530a0e4c098a061c4e6" +root = "0x2758a371a29f7f08046f0a6e35eb37e7edbbef5c0fd82053f970ce663a79f1f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.tube_data.public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018e35" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c32b" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000f578" + fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000d7e6" [inputs.tube_data.public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.gas_limits] da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" @@ -63,7 +63,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fa3" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -141,7 +141,7 @@ note_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x0186ca7da3619014309e4b8ebd49fec4c299f0b7bb7adb73d8817d4fb2256a06", + "0x0df41a24a450e0f32f1c7afb6dc8ef1103ad22af1abb2f0cfc7958f00a69368f", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -2265,13 +2265,13 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests]] is_static_call = false - calldata_hash = "0x279bdc5234d5f905d88572ccc882e3bcf455e75fa2634ef37377144aa1fb227e" + calldata_hash = "0x2f4abe5389cf2460380c334fdd01a17144dd0a67641b52299d07671dbc220756" [inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests.msg_sender] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests.contract_address] - inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" + inner = "0x148c27fde8d878a389a0b60592899d13257a2f688e63e8bc87145c1968b64cf0" [[inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests]] is_static_call = false @@ -2598,7 +2598,7 @@ da_gas = "0x0000000000000000000000000000000000000000000000000000000000000400" l2_gas = "0x0000000000000000000000000000000000000000000000000000000000006500" [inputs.tube_data.public_inputs.fee_payer] -inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" +inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [inputs.tube_data.proof] fields = [ @@ -3145,7 +3145,7 @@ vk_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x157fcd65138221a77db675de5f924aad7f4c48affaf85acd249ba1bc9746587b", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", + "0x17121585aa6800bb9d9b7250898bbbd170b2458884f8738cd2fdbaa3442b0f62", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -3285,40 +3285,40 @@ vk_path = [ hash = "0x0000000000000000000000000000000000000000000000000000000000000002" [inputs.avm_proof_data.public_inputs] -transaction_fee = "0x000000000000000000000000000000000000000000000000000000001be37338" +transaction_fee = "0x0000000000000000000000000000000000000000000000000000000017164d80" reverted = false [inputs.avm_proof_data.public_inputs.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f55" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c44b" [inputs.avm_proof_data.public_inputs.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.avm_proof_data.public_inputs.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.avm_proof_data.public_inputs.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001694" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001450" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.note_hash_tree] -root = "0x2974c95d044b350c4ecbecd81e04f2209b53c87f1a82743d35501c53014aeafe" +root = "0x2e8c393f241b4f9e879a0ebb1a7aaec35b977bc246b3e30783c4160e541619b3" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.nullifier_tree] -root = "0x169e89387d7418d762567ed6f237578a00c8ebbfbef0a69bb636667dd7ca4ebd" +root = "0x2a97eead928dfb953bc8e9c734176efaf833fe22eb35ef906de12d4f4956723b" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.public_data_tree] -root = "0x216e91eabfbf3f0c2d987353464d0c7b1c479d2d39682cf4709e10d758a7b0b3" +root = "0x185a6a6ab72b0c18df00298d716921d15d64c24462875349f276193ca244f187" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.avm_proof_data.public_inputs.start_gas_used] @@ -3335,14 +3335,14 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.avm_proof_data.public_inputs.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000003561" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002fa3" [inputs.avm_proof_data.public_inputs.gas_settings.max_priority_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.avm_proof_data.public_inputs.fee_payer] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [[inputs.avm_proof_data.public_inputs.public_setup_call_requests]] is_static_call = false @@ -3666,13 +3666,13 @@ fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000 [[inputs.avm_proof_data.public_inputs.public_app_logic_call_requests]] is_static_call = false - calldata_hash = "0x279bdc5234d5f905d88572ccc882e3bcf455e75fa2634ef37377144aa1fb227e" + calldata_hash = "0x2f4abe5389cf2460380c334fdd01a17144dd0a67641b52299d07671dbc220756" [inputs.avm_proof_data.public_inputs.public_app_logic_call_requests.msg_sender] - inner = "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2" + inner = "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0" [inputs.avm_proof_data.public_inputs.public_app_logic_call_requests.contract_address] - inner = "0x2f05121d685753ef6172eef23b2d9fbe31fca39741aec79a5172bd2664a4beca" + inner = "0x148c27fde8d878a389a0b60592899d13257a2f688e63e8bc87145c1968b64cf0" [[inputs.avm_proof_data.public_inputs.public_app_logic_call_requests]] is_static_call = false @@ -4072,7 +4072,7 @@ fee_per_l2_gas = "0x000000000000000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x0186ca7da3619014309e4b8ebd49fec4c299f0b7bb7adb73d8817d4fb2256a06", + "0x0df41a24a450e0f32f1c7afb6dc8ef1103ad22af1abb2f0cfc7958f00a69368f", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -4453,15 +4453,15 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.note_hash_tree] -root = "0x2974c95d044b350c4ecbecd81e04f2209b53c87f1a82743d35501c53014aeafe" +root = "0x2e8c393f241b4f9e879a0ebb1a7aaec35b977bc246b3e30783c4160e541619b3" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.nullifier_tree] -root = "0x13043cd5ef41357dd0e0bf7146d0e5941e63abb204e63344712a6dc29b3e5211" +root = "0x1ce11b2bdf4608dfa7b4936727d2eb1d778002ae7f07e80451fb5f5c801dd16b" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000340" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.public_data_tree] -root = "0x289324407d704b99f90c2c7ef631517db4d15817112b01561fb429b7d8035e59" +root = "0x10945a3d3b52118a667e1f87ed743c15572ae4101578529ef94bd4ec15b2eba3" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.avm_proof_data.public_inputs.end_gas_used] @@ -4536,7 +4536,7 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x0186ca7da3619014309e4b8ebd49fec4c299f0b7bb7adb73d8817d4fb2256a06", + "0x0df41a24a450e0f32f1c7afb6dc8ef1103ad22af1abb2f0cfc7958f00a69368f", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -4859,16 +4859,16 @@ fields = [ ] [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x006dfd7adf426a182b417c95f4827bd707e73020aaf74cd0ad9c55b6d249ef84" + leaf_slot = "0x0546b03e5358a619370fe558c8b69a155a028bb596fa2d447f67645d890e6865" value = "0x0000000000000000000000000000000000000000000000000000000000001f40" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x0ea327809af29f9262161a3968d72cc01506b8f8cdf044e5137c36f5f3819bc0" + leaf_slot = "0x2ac90dc34164a18105a42c907cae7412e3b45a0aafddb205b165d189bbafad02" value = "0x00000000000000000000000000000000000000000000000000000000000007d0" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" - value = "0x00000000000000000000000000000000000000000000021e19e0c9af3c95fd7e" + leaf_slot = "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1" + value = "0x00000000000000000000000000000000000000000000021e19e0c9b0dc9a7b00" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] leaf_slot = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -9278,101 +9278,101 @@ vk_path = [ "0x041560686d9398f92c5c2b9e672987f4033d9cb200c25ca5ac84b66b05594f73", "0x157fcd65138221a77db675de5f924aad7f4c48affaf85acd249ba1bc9746587b", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", + "0x17121585aa6800bb9d9b7250898bbbd170b2458884f8738cd2fdbaa3442b0f62", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] [inputs.avm_proof_data.vk_data.vk] key = [ - "0x1ad2b8b45b3742f7818ca8449f9d1b5e2d2773cc415c729a26ce7edf00ed1a1f", - "0x05613b39b4d97a14f1cce925035d4a66a13a984bdb4ffaf53604c5a781064b18", - "0x0834b667bb98aeccc3fb739ce039c1b5bb0e1f4a80b4364209cd57774e406440", - "0x2dbe35d0605813f9e40c1b6c0c8e35d222ff5bfb96143af578f9489b9869f520", - "0x2b48ca5e49a258bc7ad69ee9b4dc1c79a7b9593932dbc862b06430eb3c69a0fd", - "0x25857b0768acbe84e921436595672b79d55518e3cb6f9a6b1ec5122319ae4636", - "0x19d932139ecba722aaa3290fbc0e13c68476742b7a45a1414afc3b6c343a531f", - "0x2b7e28fd4bb2ae152f04204af1e1f539af88b2e7d0da1ad4a92ca85f4ac86290", - "0x073fe11c5df2ee321b70fa2eb23095cc073df8a9cf454574c1e567c26569369a", - "0x032937e5efb95845487cce0b95012cfdbd7f7c5aa7c667092ee8209c26d14b1b", - "0x12d7368bbd499029a0b4dc1e3969e2d191750aa290349790e30ae2f94799c2f3", - "0x0360a836286895791d1b774d4fd1ac767a5ce9c73ee39f04648f15bad4e80dad", - "0x1740fff2ff00db0a033040c1aeb42dd0da117345d36b5e7a739f43b961994b0a", - "0x26c87730359eef3afca783999afce71d53cb0104bf71430784986d8fed0eb495", - "0x1b0c69fd1936ce18b77187aa58cbf6e93df7b4a77196729d1a928d0d662fe08e", - "0x0f312f4c8bcea1be6e66f95bf031950a0d8ef6c318ac3d71474c5b8839714320", - "0x0f9006410b19935a74cc273b4add42dc00b430a2dae5376953e5f359881988ef", - "0x01eaf7c3db9aff770b725dc84c3390d7bceecb8d9c9c93c54dae4527fa16e899", - "0x2d2152f979e2de6608dca284c21cb49b90eabd54e77efa30b23b09ee8c2784f1", - "0x2b7cbe3af5dc7952748c40d0591b93b14b9f0d94c41abca164b2ed7bccd42357", - "0x2c8fa485c69496f4aa237adf8949a36e54cf3d092bc6326b4af7545bff5d7ba7", - "0x147955b632b5ba00e4cb05d035f07b5219d72ed574d01b2e0518d6cf6c9b6851", - "0x16a31feefb8519c3d1108224860ea81e9ebeb7b07a4df28a56083c41a060e4c3", - "0x0c2d1c9d1944f087ed5e64d417de8744bcbc369503a99577f25aacefea5c3f62", - "0x14eecf69d0266d242927909d694064c21f66ddeda19311215fc05fe313dd8f40", - "0x25c55de55acff79235849510862c48b3f3805db73d70fb435ddd3bb0f6b27ad5", - "0x1e3cb83a7c44c159c9112e50104514c2b4cc4ed46b58cc418d4624fa72a822dc", - "0x23da6567eb2891dfc05be6ee5308d3a96c8fe730189dd349a439d26dd8b4eb99", - "0x1d02508dee8e01cadf7c32e8ad77e3b8da8be70bd79caab9259a386d1e3b3f11", - "0x2d2d3555d14af790b9713ec68fd38731b68d70189cb58c036ff33b3afa845605", - "0x2b3b1b4b7082f10ace1e84ae33775b81c0a74a3d99f8eafdffca02d02b320692", - "0x1d70ebc1d62a87c13f6c2f28c6b7e976cd03a08e22d2e3045048b81092ca023e", - "0x2919581fa9c88b31d31d48a5157d781e0730536a471084e1b698b2d12ce1afea", - "0x0e5a528d498e5a476f09121b3a9dd706e236b5333bc3e5424296d827ddd428b3", - "0x1171ec026138e629ba03e951935f4d2c6effd970067b63a462c2056cd696b8c7", - "0x178587de5a9aef580a0700d943e73af647f538cb58cd9b7322041512accd55d0", - "0x2da6099e0f60859fdba66547ca7d9591060b69f1876d06b621cf69cc959d503a", - "0x21ba9dc6a92bf5c876c4c2b1da142d05b2a6637d6f5b848db451f994c1758081", - "0x06b4856a69254d2bfed2bf28d52c39fd6a5f9693a7f3d1b8c633e898bd8a3cd3", - "0x09c6e1866ab7c9db997e04e61101926a45b56ca9411a521732d4c10df34e74ee", - "0x03e553b1f64a685e2cf3729dd2eb975fbbd624f037376a8b03c1380b92ee56e5", - "0x1fefee40799ae0751a8cda0c41d335dc143dbe0dc8ff0dfda3b6bc3127a33d37", - "0x0f02ead4ef88005713d5955ce8378459476f56f42a1e53c2d100852edfc485dd", - "0x0e582237f3083a02d779a4a6208156271783531916875af7b741f514325214dc", - "0x1eb558c7b0bedd0141d6cf57648c7a896f7f5f8e5a4cb1b2b3efa6c883eba577", - "0x23eb1f334496cf807c9be0a9628963c608c741102c308de4f16ee7287624d1dc", - "0x1c129620d02769ca2680fdf331b995cb2c6402d9404b71c00ec47ccdeccfdb95", - "0x1494aef650214cd14c88ec7aa89f9fc5f77b5eb05fd1f897f0dd4e358beca7fc", - "0x2c40923611fe40e79a23652ed21ed28e50dc001f80045f4a146b424e3ef10763", - "0x191cd9252766a579131bb6888e7f6f95fb5605be38108917d159ba0af2bf0d5d", - "0x0af9d55a3a796bd8ea8e771a6454d4b90bdb241e8fa520f805bd424b9dff4ccc", - "0x18a7ed69f144ac638b2f5bfc5e97604be12cae51e359df993aa15819a280c8b1", - "0x0526196ebe8e5872d5402a68779dac8be74e3774952a75a79c8e9c6ae43eb508", - "0x12e7feae2c697c1d59bb68021413d074bf397d8cf2e35a4cde4221e57624814f", - "0x2ff3ffe67f41f1bd4c4367b17e4150e8932e90c80c8a5eb17a8240bb1e73f444", - "0x20be7c6324f20544c11663be0c29b7f91c02610a2508d4a59cfecd73c9a17153", - "0x259c87a1a6bee7457497667fa1ccddcd17a269c15bf3d68ab7b66a476acc4fbd", - "0x213151f5b77f188de8b7dca19ada6f8d9a4ca621f86b67dee1551f1d0b37b7fa", - "0x010dd0e3eb54acaf8b6cd6c9b74a5b9dd2aa190f9d496a01252e3b0040acacf0", - "0x0c723a4068f3b1840b5378f3d9edcb690bda0435ebf1453e93fc9eafdf22b737", - "0x1f32ca67752045c857c986b5926ec55fd9bbd196b043396444948c7628853bb9", - "0x05d80c6574e6950edaaca180780b3a95dee32d2bbb0b891179ddb55d6d9c6708", - "0x0020cfb74abb25ef7ce1695196332fffee81fff00d4b09b24c4f05234496adf0", - "0x164329eb3ebeaf225a8575c887022530193b1998e482008664b1826f4e7c1f8e", - "0x1ec4c143cdf6df76667d55e1cf1e4dc3b893108a279a477cbbbf4965b347050b", - "0x1c6231a5e7cfc99f335522c4d9c5f8b0e7e1a0b6714bdbd5cdc78402e370dc9f", - "0x15c261e90184440dfc0b1891a05c610275d7eeb69c695a64a96aa7eb930cbab2", - "0x0f5eefbd4fbd3f45e469fb448bb1e70819923d26eb75e4a4ae95df249c6dcc52", - "0x1bcb5b76889e95b5b8b89f49a09fc0edc24a5594233b71057dad6de2e99d8f15", - "0x21f8b965a501fd68f98f88fd6d19078ed923632181d112b0c1b96c49aed6e8ef", - "0x28d7827bd8fe8a53cf2a521f3be997da3d91d67b8a9bf0505370c942730c27a2", - "0x03e0284611f393525a48225be6a4b1bf14cba08e6f88bc3b3442499505d58b6b", - "0x2288ac203020c24ea1757b42212a40cb33e089cd3ad43fac6c01d148437c11d8", - "0x24bc1f80ef58b3597385a671658e167c26f9c6ca5e71d148ef87a12cc0a5d39e", - "0x1fd83ea02d8e8b4a95b39e238e46898adb0c84661e42808dc0f1c2b0734f23f8", - "0x1e73f71e6499682bcaa4f47005539de8f43225b381012776e4be7e0b000922df", - "0x26adf9896f04dd33f9755768ab275a2e4761bac227d3de0298433a6e55020faf", - "0x114b611a4e1ad2634e9e4348eb2b884d5d179f2533d0d7eca5f6c168880f1077", - "0x2a2bc4b2b2074cc26b353260f5732b739efe1bca0d95767a6d31f76d7aa34b9a", - "0x0a538a0602f5b574dcdc8a619a6807611f1f16010e84027438fb4e6cae98bd1f", - "0x0fc91325b659a4a3b2a0fdc5e58042fe91a63f4ee397c58cb21dd5daadb8ee6e", - "0x0d0cf921cdea973642374849287594e8dd6628308fff9371932eebf4b79d9759", - "0x18aeace84a3adbf2062dda8edd3c7c0ac44d97fd0bbb3072732cb7ec5e2c0ce1", - "0x2f86a7e532a1f935fb9cbfc9335edfbe76fee17319275dd7e41a3e4cb8c46daf", - "0x0710322fa3c53f7dfbea848f21cb1c053e8bba007fd0d5473e284d369e85203c", - "0x063b41b02ccfbbb4f9a236907f0ceab7c502d343ffa161292e6551d4c81b4fc5" + "0x304eab510e13a8b03189995de6c8137c8190d5beb1ffd3812fc21f4b54434cc4", + "0x29742ab55a80dd494cb9666489fd88d4b1560c8ffd2d9e838c6d71629e0436a0", + "0x03f21a7f90721878e9bbd23480127eb680e244a1f67b9f8dbea8c98138648c3a", + "0x0644b91ebc757fe2f77b8f3babb284462ebb62077908c702906bf7d9eff6ca74", + "0x0c77efe826da703c9522596ff60c31264b85519e9e5e570f5b97c46b9b55bf01", + "0x134187fbb9c64e4db87a3c6e209c53f1bef71eebe37d29b8155bb0f26d774f34", + "0x22c101f9b4c85812747a1a199d3714ee3c48ffcf0f6e74f878d9123f5e2391fe", + "0x162bed9842bad8c7dd5fbe2d6352f913ebd52b21f6d1062e9558f34e9ee75a73", + "0x2d7c6276ffc2f9aa2a24c4d2d5399ae9fc28f63afe3fdc5e010b7148761b209a", + "0x22a671dd5254ccfa4a8d155729006a2415882589e1e4d970dd1cccf829b7a1cb", + "0x0187acbde63c4a21bea83752aa5d07bdfdae01e3e239faa114bad0319166ab0f", + "0x2bcf4803fdcecff065b1708cb375765c65700421aeeeae9aa3adb3bb8b045dcd", + "0x0cf77b6cda7943b5545e707e2e88398a14cd2246f61c1c61feb4c44519d3aeba", + "0x00811a8472cfa85fe1ba38a76e6da3da7f6ad23df46645be9e339e02921260f9", + "0x0c4d29ae35dc176568eec2129a3ff80522100c4bd40b0a58161f6ae91ab0c21b", + "0x2ada82a075e67a0210ffebaca1b91846dcefa706ea303ff96b6f2ded0dbc9eb3", + "0x1e1bfe1ed1adc83383727ea7a6b77bd3a37acf325cdc3c0d10f5ddc06ec60422", + "0x23c9ebdad36a77c5a078af15f2a1e2dd069adea735e263908efc8a2f5e0b949d", + "0x0b9196a22a446d5b0ea6d5f3602a99e8496671270edecb74760aacab8b5efe30", + "0x19d1428ac7395bd184041d151a8a0b6efc6fad57f6408f58996bd01b7a60fef3", + "0x27f3983796ef3d6de7b02d796433efda2396741c1da7c3a975f500a68e2fe86b", + "0x092c238c8a26e2a4f29bd4bd724249c7d089fc85fa67a4320a7510a4086b9a05", + "0x155000fe6ded151755ee0fad4f1cdc9732cf5b4147be0a7d376d6982e3a10c71", + "0x17b7c879080e4705303f7b3a01ab5be8b6272d012e07e59c12e4e7d2ba4132f2", + "0x0e186b5456e338c30e8e0a29d75d96493fd593232bb3fd5ee3a85777292b55e9", + "0x2912a8d159fe473f0d14c3d323ae9416307b2313a4e379d795bea3fae73c23b9", + "0x225fc0dd147d91021a29aeb5d87925f0ec965dfca4e07782e60ffc2ef1c8af6f", + "0x0859412a1338c3532bd9dea6d793b6ecba82dfc50aaefc99db31752a1f67958a", + "0x14ccfc80716c6d951b7c77b2b882c616c5ba326393fcc45371040f4c02d80092", + "0x05b98dcaf26d9e4db8c3d7fbf07011b196e2dc65295f0c1cc56060a51a37bc99", + "0x287bd7a5146cd0f4767c0fb74d6d562008ffa9c742572993a0fa593368b76267", + "0x27604ab7b43438c0cb44f8e76c4c295400a99c288eee594b07dec4f79885b72e", + "0x0ce0d33b47c50fd47ec221eeb500aed20e31110466f4e2e9445f04c43fef2e8a", + "0x0ee6ba476b467306abaa00a2759dd68c03b461014d6dc12d0eabe5a96a0c3fab", + "0x0193d7194ec11f1ea8c02f886a6181189ddcf325be7a06ae76c6f655bdb73f76", + "0x0aed03d3502557f7d5706771a9f3ff77d5909c372f6d6a281a91283aa81f108e", + "0x19566dbb0a39429079a1d387566d8a02c3485e7cafce1bcc16bedea36a9e5cf5", + "0x2f5aced99f57a2e8688bfd476601b88674e9d7691aa8932ff63baea1c48250d9", + "0x1856f33a1ad3c05218f399dbc86ac065251a2af267f43f423bb55f80529d1a0a", + "0x0a2c9fdace646373cb454a9ddf09565a80d3fec87e3dc3f314b56920cc8d540c", + "0x06349be74bd9065d95b69c816faff168aa5639cf31009b5b0b0f044fbdde5429", + "0x238185ec5a416eb3f05190df834783f61c9bd0d28d63cf6a21a7fe672daa71d7", + "0x154d2528b94231c442db95a703c1ff5783ad29bf45c5b15e05913fa64fa2041d", + "0x1deedbd09068b6864cc292ff7fce7bc50399d85c51c40b5af9eb76e963b5e425", + "0x1b2ee8ad77fc30da1c0428855b82f918ab77fa75ea1cc1e0da8b1fac89135474", + "0x3038d78292ca4213668d1009739838b6bb2aab29b50fd4db0675739ddc0ccd55", + "0x0875e4c9e52b050728069ebd72e7e0dc7b954f98a71c646c4605f23b37f75594", + "0x01259027f247db690dfc2b65249895a2778bc294ab23235a1e90ae0d590ea7f9", + "0x045a742d69135d79d060a254027b1eb3fc79fcdca595f8cf42dc9351ee4cc1af", + "0x227a49ac9924aa7a6beb07505ba64b6929319bb84aa63cb0d12d44cc91f038a8", + "0x131551347eea76b1afd29886487ee75caec2a1aeacfda7aee6b3b17778f1e319", + "0x2a02bcd8b3e2c2b3a5787862eb825f592842fb6b90b0426a48503c548d6be982", + "0x08290952d9c4e098643fb5d912207f0ecad2622456a1aab64aed49b296a9ba89", + "0x2a3b0442d5c587342a78d09cee0d06bb873c8ccae12b35b9f85cd504a32b9437", + "0x0adade9f4d690f2089a3071755082d455f1126f61b907b0d456a1ee1ee1274ea", + "0x0f669f2ba613c6f1da03d0f6fc6628337bb011782148484ad4b960ba8c1d729f", + "0x0905534f707e687488ba17dc4bfac6ac3419c2f9f62390dc7d8674e72f1ac826", + "0x2f2a435dd8ff19d07e705b88901539692f073643cd61da87a4a5c783c32042f5", + "0x1e5417244f18bebb802c936de9938d7b9416e90aa135b3b3206d441d3c016b5e", + "0x1a3857055d0dcbaab32b6d22064e8baa3136d159e26b6fb492c0ff89cfadf15e", + "0x1b130c0d180a82b535f8b95a950880539680d640c7b86f297594d4e45b986f43", + "0x171fcc6394720195cf739d8b97331d69a866d46037fc6115cadb314101029e93", + "0x0eacbe8bd8eb0c18fa73ed4c9cd16112c617e4066289bd19721e5e4dcab456f7", + "0x2c7d6bdbb3db5e7a579c5b5ba523fe5ed168e3c21c9216471bc5f8be159e17c0", + "0x132b4beb2ed7e157d2f1a8bdd39a9702cf4757443a685f9dbc77f1cc02721887", + "0x22e8bca77901c971636be81371cafca5f24de8ceb95e571b2097049250dcf1ce", + "0x277425333a0385a9706972092deeb966b4562a509044b726c79d9e950c532829", + "0x1453e4b97c79de5c4f9eaef9589e852c1abea298b2543857bc9a97bd4fa74d38", + "0x1cbaf532fe9f43f18c432f68e92c4ba9cc61c43e5d85ce7657863712db9af77b", + "0x0d3f823bd5dc7daf83b2ad75690b97fe3976fd5d450f8ddfd53d430e44e1e7f1", + "0x1ff20d2a5cdd05b46333b9067693cc0119c8f87cb95e39c6d8f9f894a7fd7b7e", + "0x05f289016aa41a017ee738d509f92aed49a15c840cc00db6a0c5fb4c26387023", + "0x1bb1c69925266a74fa7877e65878053dfc68ac6d46c85ae08a0bf96a9a34d276", + "0x198eb48fe688f4e6d7fbc4a3c04edc22130b86dae25fb87007a312ceac290c63", + "0x218371a888570d03b78af669bcc1dffd8d231f0584c8353ab0f8efb119083792", + "0x2dcfd19329d0b11f5be003e481a693d2013b597e43b4354cab5a4170f63b006e", + "0x1fbc6796666ee85f77dc66a9ffaa5bc57958f433eb23535cb1dce3d5eec0e9a4", + "0x1fff2cc484ddf33d3b22dab0b8348add646e53cadcfe6542848fb2d93090e7b2", + "0x2c228229e94d2c5b3ed693556eeffd0a016a574f22700e0de419689968c7822e", + "0x097921544ae3d76349c407f5ecc7503d59f9eae91645501afaebefb596fefc15", + "0x15be953a6e213d736b6c1f417c5826187eec598316f6ad06e57e728a3dbddfe2", + "0x11c990ff01cbd6eb7e31c07f0b56a578583d037952ab95ed1be22651c133fac1", + "0x253c955a000dfdc83c565d50233aed2af4cd81cf33fc5c48a8dcc86be7332552", + "0x2b1ca703ea89e6c336d749fb803e536eba6f0854daf2521d8cbf7143ee383716", + "0x1e2c0188035251969c41b8297c240ccbb86d326a3b9e97fa7acba63c880ec0f0", + "0x26cc9b522462816b465eb494b2a71cfaa2ffc042117ec9e62f94cf54972de8a7" ] - hash = "0x2198bcb9d04137aa3b68d9e963863c051cceb3b5a7119d4a1e86197cb78b20ad" + hash = "0x1e9d09853d8ab3fa9de7a82655a65cc41f177fb7e523b7ab79d359aa0c51e939" [inputs.start_sponge_blob] fields = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -9396,10 +9396,10 @@ expected_fields = "0x00000000000000000000000000000000000000000000000000000000000 [inputs.archive_root_membership_witness] leaf_index = "6" sibling_path = [ - "0x2c1e37040106baa26cfccc669a9fbdb80bb014f9a375c4ab17a4da6fba1f3246", - "0x2be2e0b5247d27d4aa1436c8ddb5f63ec56e9d8a0c0d295750b1bb90cb6d7343", - "0x1e96066120e8194f7cffe64e70af687163885eed70669e9707b1a00cede7cb81", - "0x00ea387bed0ee12d6d235b4ea55875140df3212bb252acf27d6ceba9e76cbe6a", + "0x2b9c2b486b46e5cd61895fb5f7e8207ad451c64fad38b3dd5d605ec2b35b9cf3", + "0x21f2fe9ec6e7a0b21b6e661df9d3e80eb18c05948b461620bf6391ade3a2fb76", + "0x2c3abd803a29dc4ef7199f08fead4e3db201d441b433b1d194764b1314077474", + "0x0bec0b290cd342a209f6308a697c5d42b03b02d935e4e49e7671db8747991725", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -12455,26 +12455,26 @@ fields = [ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants] -vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" -protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" +vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" +protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [inputs.constants.last_archive] - root = "0x2654086cd6d89561f4e67ddcb44940715de36e827be817fbc8617a2e0c02e0d4" + root = "0x1e00091bbbada4c141e65a4b9f6bcc2b33fdf0010ba11a61b9c5b29e8ea4b6f4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f55" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c44b" [inputs.constants.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001694" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001450" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml index 0de416abb6ec..6dddcf9f0701 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml @@ -2,7 +2,7 @@ [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" proposed_block_header_hashes = [ - "0x007f01080db85061d9a8f4c700757c51a956538d32ba6c0f289b5222b00f9902", + "0x00d6925fb4cf7254e2ee66b40898572b174dbdf302edcf1aaf83aa51df941456", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -51,57 +51,57 @@ proposed_block_header_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" -protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" +vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" +protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x15b96c203874595fa1e623ce8e239e955f35474630ab7ecefaf9186f6de51778" + root = "0x093f4c35cf257cc90e68975b9de88b6f52de68d95962d6cba74cd635996c7e07" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" + root = "0x12d15aa5fc47bbe4dc364bd694d8f18bcd201582f3f8acaa8d2deb85a0157876" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f25" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c41b" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f25" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c41b" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x000000000000000000000000000000000000000000000000000000000a524180" + value = "0x0000000000000000000000000000000000000000000000000000000009360480" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -387,19 +387,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x001841f73fb11082921a49c10432e66ccccdd5607d6da1f5b02c83db3abdfcfd" +z = "0x11684c90ca33ff3152b6813c62d26301a0f547cda2155b84d838ac1b87068cfd" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0x1c60371acabfe17d5bde1152a6d5bf", - "0x182f215cd91016a553edacfe0899a0", - "0x603d" + "0xe80b330a43fc7e1244f512d0bed854", + "0x36de537974575fc03e56983bf95ec0", + "0x5476" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x008b4729283581281f60e84226de54260b2f4b54020a984f38dbc105c8ecd367", - "0x000000000000000000000000000000ddc329f725352424fa4d448a72e3c84f5a" + "0x0084705dfc95733a865ad64569d46d5691066780309edfdda7c8b89643e186ce", + "0x000000000000000000000000000000780889e1f2765774317a5557732881fbe0" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -3298,101 +3298,91 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000417", "0x0000000000000000000000000000000000000000000000000000000000000418", "0x0000000000000000000000000000000000000000000000000000000000000419", - "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000000000000000000000000000000000000000041a", - "0x000000000000000000000000000000000000000000000000000000000000041b", - "0x000000000000000000000000000000000000000000000000000000000000041c", - "0x000000000000000000000000000000000000000000000000000000000000041d", - "0x000000000000000000000000000000000000000000000000000000000000041e", - "0x000000000000000000000000000000000000000000000000000000000000041f", - "0x0000000000000000000000000000000000000000000000000000000000000420", - "0x0000000000000000000000000000000000000000000000000000000000000421", - "0x0000000000000000000000000000000000000000000000000000000000000422", - "0x0000000000000000000000000000000000000000000000000000000000000423", - "0x000000000000000000000000000000419e7449b6adf1fd85a2c257e0393cd204", - "0x0000000000000000000000000000000000199570e259755453396fdcf92bed76", - "0x000000000000000000000000000000dfe17d35601509209d3c794ce7590de703", - "0x00000000000000000000000000000000001e4dc2db4651fbcab36a253964d094", - "0x0000000000000000000000000000009fa10a4dc7242aeeeefa528721c64be971", - "0x0000000000000000000000000000000000169ae254b0abd0ec6ed10a748c06b0", - "0x000000000000000000000000000000fa0cc8d50135f79336d2e9943147f1fdcc", - "0x000000000000000000000000000000000020202ba9736558aa72db82a7371261", - "0x0000000000000000000000000000007e4be0963c1aee7065ebcae1a24287bf1e", - "0x00000000000000000000000000000000001b3af4930768449cd6219753816230", - "0x0000000000000000000000000000001fc531939cc1eb6071e1fa3de4ba0da873", - "0x000000000000000000000000000000000009feed0c8ed731c4dcf1c2ab3633f9", - "0x0000000000000000000000000000001596fb9abffd61d5766dc34a1c60a1ce54", - "0x00000000000000000000000000000000002e62cec2dd81d0d25d7a999049523b", - "0x00000000000000000000000000000052376060fe0a0a4340a74ab9820cb5f3dc", - "0x00000000000000000000000000000000002b78ef38a40c841751c0a570cea133", - "0x000000000000000000000000000000baf35b01257782bc47d1004fa51bc145b4", - "0x00000000000000000000000000000000001da608e92e07ad96f1425ae4afa39c", - "0x000000000000000000000000000000757fdf0fa2cec6b71b56e08f25d9b03073", - "0x000000000000000000000000000000000012fc126fe069812e0e46908deae457", - "0x00000000000000000000000000000025a63a2310119e032062edf2748af3935d", - "0x00000000000000000000000000000000002a6b4b83a0c773df436ac08d125a6f", - "0x000000000000000000000000000000fbd36b80ea33b7685b16be6db694499bd5", - "0x000000000000000000000000000000000020ffa122ec5c8303dedc2e14f8bc4f", + "0x0000000000000000000000000000004db99b364800b7a85c672fd6d0968d0434", + "0x0000000000000000000000000000000000238c05b4bf9a30ae410f0042df956c", + "0x000000000000000000000000000000dcc69be08706a7e17ec0acef55bed99bbe", + "0x00000000000000000000000000000000001addfe9d3b68c6d22fe6bad676ace2", + "0x000000000000000000000000000000d22dad2ca35320d94c77874a3a0cd6a2ba", + "0x000000000000000000000000000000000007d83238194f89e79458b2dfa167cc", + "0x0000000000000000000000000000005a3f31d38c94a443e29eafc9dea7c2d30d", + "0x00000000000000000000000000000000002f7c1b8113fe51b31a3fcfef95f933", + "0x0000000000000000000000000000002b7342e402912626e9b1162b1ea3ef940f", + "0x000000000000000000000000000000000024a9a6e0e27c27e659e1d0c12bcb05", + "0x000000000000000000000000000000fd2c0eacf720f68f93857b349b1d6c0084", + "0x000000000000000000000000000000000014e535e96755e887290c5e80247de6", + "0x000000000000000000000000000000d6fbb437d62bbfd148ca9a6a92fb25f51b", + "0x000000000000000000000000000000000025f3c4c8a955669d5bb17dfdc16c4a", + "0x00000000000000000000000000000065fec974d2356371fb5c819baa4fb83d17", + "0x000000000000000000000000000000000010f9fd5aa8794e368b913c3815b037", + "0x0000000000000000000000000000004894d5d9e1dcfae902ecd1d780f90153ab", + "0x00000000000000000000000000000000002517a3eb5e950b121ef89df64885a7", + "0x000000000000000000000000000000008bcf6451f291699694c70630c796e74b", + "0x00000000000000000000000000000000000bb0beef6b6da14177198e018fa470", + "0x0000000000000000000000000000005f9e8b4e84768de4da0200b9b8a98fa3b6", + "0x000000000000000000000000000000000007ef289f757043b752930e89d33f45", + "0x000000000000000000000000000000e2f55c81c9aaa0ee73090c1692342e2776", + "0x0000000000000000000000000000000000110b118e29d250cde0838bb8ebb52b", "0x000000000000000000000000000000e6bee501455201368d829cd1ce79087f61", "0x0000000000000000000000000000000000200a6916f2e94e0de862bccb7c66e9", "0x000000000000000000000000000000ce79b607a7f0f58208394dd5ae4ed88772", "0x0000000000000000000000000000000000289dbe505abab4d4613cf578f4ee04", - "0x000000000000000000000000000000f345237557f2315bbf1c292e85cb1fcf84", - "0x00000000000000000000000000000000001d8dbd5043a6b4f045dba7e0d93a43", - "0x000000000000000000000000000000ad875e883b75687701b4b45373ae00b679", - "0x00000000000000000000000000000000001489f0a865e17b3c308ce2eced6040", - "0x000000000000000000000000000000dd45e6eed7ea285daaba2ae39c138d788f", - "0x0000000000000000000000000000000000008ddaab4a5bb998c41add978ad528", - "0x0000000000000000000000000000006a2a99308f13dd548edeecc6f8f5fd1d52", - "0x00000000000000000000000000000000000c78f4679dddc6650c1bf822dfbd0d", - "0x000000000000000000000000000000e430f1bf59328f1e2163d9edf2c6c29499", - "0x0000000000000000000000000000000000038d703475a6e55a48b307018d79c8", - "0x00000000000000000000000000000061d31b3687253f7c0a17a0bee920440ed7", - "0x00000000000000000000000000000000000876d7518b158a5826caa989a42f28", - "0x00000000000000000000000000000065e5753e3f96ad88571b2d305e7514d6c2", - "0x000000000000000000000000000000000023e2f0a345aa338df5b1d0e06f7f37", - "0x0000000000000000000000000000003af39bf2395f7544eaf12190cc6829ccf8", - "0x00000000000000000000000000000000000ab85ba63d1e2ffad75cef9be15145", - "0x000000000000000000000000000000bd35b8821f75beffd500853d52d20f1ebb", - "0x0000000000000000000000000000000000140fc1c97352554613cd1fd993a523", - "0x000000000000000000000000000000c2300bdcfc58eb11e22caceb21d164cf92", - "0x00000000000000000000000000000000000c6eb88a70d96c66e624a4ca8668f8", - "0x000000000000000000000000000000f140ed8677a314751991c7bb4b554d62ff", - "0x0000000000000000000000000000000000143df52054703b6bce2e9e9162c55a", - "0x0000000000000000000000000000009ebb9c8cb9f9efafc2f66be4f937babbfa", - "0x000000000000000000000000000000000022f2a9fc5f19f76566c397cd4baf10", - "0x0000000000000000000000000000003f93ec368741fa6240a16cfe7262aad4e8", - "0x0000000000000000000000000000000000083c3852d51611baaaf92207fcb167", - "0x00000000000000000000000000000049534804e747421f647a7a45795a0ba234", - "0x000000000000000000000000000000000007e0aa0df42602fad1ef2d10afbc61", - "0x00000000000000000000000000000085a5c35aeeb20075af017e107f68003c4a", - "0x00000000000000000000000000000000000559648c7be59a7ed631465912a370", - "0x00000000000000000000000000000002514b8f30ecd8691d51e8f05fd685116b", - "0x00000000000000000000000000000000000751ba882f3f85aff0c3708330fdba", - "0x000000000000000000000000000000b43c8d31b3a552fd6ccdc3d8478dcec28e", - "0x000000000000000000000000000000000011717cbd0ce268c10c4d84dec84d4f", - "0x0000000000000000000000000000007278923f22cfde811f1b66a9d7db2e7fa2", - "0x00000000000000000000000000000000001361da9446af9c98d59b49eaa1b357", - "0x000000000000000000000000000000ea30012fb09431a85d92a00263ef987eef", - "0x000000000000000000000000000000000029bca370a46f8f354ac5e49f6ca59f", - "0x000000000000000000000000000000fb9f6ccce672614ed9333a44024e2a0be6", - "0x00000000000000000000000000000000000dfb388286f15e852482e237a50d51", - "0x0000000000000000000000000000005fc56c6b0c13b7db749137119a48f5b3b7", - "0x0000000000000000000000000000000000205834f9ac179adc772061d7bcd8dc", - "0x00000000000000000000000000000075ed56b4cb2557df3fabb2f89eb789c119", - "0x00000000000000000000000000000000002f04a7542161079050a92ea07fd5cc", - "0x000000000000000000000000000000323203d6d39cf766b9823232f8dd624fd9", - "0x00000000000000000000000000000000002df1d38173d8713f1047284cf4f2d6", - "0x00000000000000000000000000000005a53dd9bada258725818e67b9c1103d10", - "0x00000000000000000000000000000000000e8059f2acd119d92a3412731b93a3", - "0x0000000000000000000000000000007ce14852270ecb1c2a86349b1a7b61828c", - "0x0000000000000000000000000000000000156194d8ad86978a8dd6b8b4d3a1e6", - "0x000000000000000000000000000000651e9c17397afdea3f138092bc0fea2972", - "0x00000000000000000000000000000000001bf1c9d51814f099d4544e7675da2a", - "0x000000000000000000000000000000daa21cc9d5e8175c08a69118b766845c76", - "0x00000000000000000000000000000000002e7da3f77177a2d86c0b8450b1bf23", - "0x000000000000000000000000000000ad8581a81ee364d5238cd1f591801c9ded", - "0x000000000000000000000000000000000026049e5b956065ef9d897a0cfb6268", + "0x0000000000000000000000000000007964afed4f508b27ea8e57d9f0334fed98", + "0x000000000000000000000000000000000029e379a9f635b22da749b22b4e7ebe", + "0x000000000000000000000000000000074fe54006905a44d2bb242e40ef6ae2ac", + "0x0000000000000000000000000000000000095ecef5c9ebaefa5f5a1436083101", + "0x00000000000000000000000000000064c1ed5670d6c3d0f6253c93f744dfa163", + "0x000000000000000000000000000000000002e4c6f010ac5c8617f4864e16f833", + "0x0000000000000000000000000000007b4d6848e7858d6f0331dfa4edb9895741", + "0x0000000000000000000000000000000000179cec7e12b2d4d84bf09d2bb37ff5", + "0x0000000000000000000000000000004de42569c8a9c1bebb429bde46f503f3ea", + "0x000000000000000000000000000000000014c5d960e3aaece7ef138fca6d53ee", + "0x000000000000000000000000000000d144bba721bb2a734b2fab0fa1ef1df04a", + "0x00000000000000000000000000000000000793ce7f9ce422c68fe6538359b69a", + "0x0000000000000000000000000000003c1c2ff288f3342c98d418b50057732aa5", + "0x0000000000000000000000000000000000071e3f30bd28a58c25585ff02dd319", + "0x000000000000000000000000000000519f655b3320133fb448a3353482ddf3ce", + "0x00000000000000000000000000000000000a946af4f531031c7579d6020d63da", + "0x000000000000000000000000000000efa7055c9e26a7aa7093d4a0eed3932514", + "0x0000000000000000000000000000000000036c616f1ecd313deb4368abd19782", + "0x00000000000000000000000000000096ac5e9bfc75ce873cfc4018921f57f179", + "0x00000000000000000000000000000000001ecf52f34471a039224b08d658ff78", + "0x000000000000000000000000000000ae4b4ad07e32c8e3b206bf310cd2952d42", + "0x000000000000000000000000000000000022ddf383789ec91aa2833107fc2dc9", + "0x000000000000000000000000000000c064e20a76c8e8c7dffea461ed828305ce", + "0x0000000000000000000000000000000000037152d9938dc4dd5ebdafc7d0f06b", + "0x000000000000000000000000000000d26d9f61f730187eabb55386044f7a0672", + "0x000000000000000000000000000000000000b70fd56b880c3b4f07f9c924eb62", + "0x00000000000000000000000000000082be859369a51f91982329b1bf3d1166f7", + "0x000000000000000000000000000000000030481188f6dc3549bdb9107ce3b6a2", + "0x00000000000000000000000000000061e7717994c5775d336935478c131d88e0", + "0x00000000000000000000000000000000001f31a8985e00356bfd8958e3a0eb91", + "0x000000000000000000000000000000ed7ac635e69ff3ff76e2dad4e654adda36", + "0x00000000000000000000000000000000002ab313ffb51c6b23b6f093de444b1b", + "0x0000000000000000000000000000005596d05e7164e381a7bd7c9d4f33dcce44", + "0x00000000000000000000000000000000002a6c1437647dd04374262fcde314a1", + "0x000000000000000000000000000000db4b37dbe7a2ee2e4051e8818b56ddfbac", + "0x00000000000000000000000000000000002dd5619d267b0e7a382fed853cc935", + "0x000000000000000000000000000000fd29f38ac3e998987e6ee5f9e4080d994a", + "0x00000000000000000000000000000000001e26f51c4ad9ff46dc8273c5cbe3ab", + "0x000000000000000000000000000000570b7413d57af4931fc2bc7774272c473d", + "0x000000000000000000000000000000000015a96b35734bbdf010b80d3f277d25", + "0x000000000000000000000000000000c3d297fe778b7098db7d742b0f9504d884", + "0x0000000000000000000000000000000000118e332e021c24c1d4fb9bd79461f5", + "0x00000000000000000000000000000030789e7e2745c3177a90ca3b05935f6a75", + "0x00000000000000000000000000000000001db1e7ee3db43abedf81959740c6a5", + "0x000000000000000000000000000000ef103c6d28edbaddc7605d955cf2305bd6", + "0x00000000000000000000000000000000001c657e8dc242cc57c122f6fa6ceed4", + "0x000000000000000000000000000000dececd6d2172612a0d18b5e3288d8c520a", + "0x00000000000000000000000000000000000ff13bb37eebb057bf3c7c077cd285", + "0x0000000000000000000000000000003e820226ae4cd1928241a7e36ffe47342c", + "0x00000000000000000000000000000000000887fae51a65f26d443ead25b20b0a", + "0x0000000000000000000000000000008693f6237bbb3bdaab02461b17f0f1ee49", + "0x000000000000000000000000000000000008a422099cdc6913ad8a4f74d3224f", + "0x000000000000000000000000000000588b71cf6b0020cbdd22e319f1bf94fc3b", + "0x00000000000000000000000000000000001a1998e29c5de9a9dc38fc2a0ad7af", + "0x000000000000000000000000000000793bca6b1691483b63bb411fec004c75bc", + "0x00000000000000000000000000000000001e357440f73411be0fe783fc7dc888", "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", @@ -3413,20 +3403,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000fd205e3cbb08bf3732f42f8f7394513ac4", - "0x000000000000000000000000000000000010325670ecb08d1c1ad20f04d5749c", - "0x000000000000000000000000000000f2d889b901e3e7247fdf4893478d31c904", - "0x0000000000000000000000000000000000170cf314533d4667f535487be8b352" + "0x000000000000000000000000000000634bdbe2dc3a87f50e42c085ce2fa085b5", + "0x0000000000000000000000000000000000156320261a35ead512bd21eec6f7b2", + "0x000000000000000000000000000000ab522ee89126420cba620e0408461be4d2", + "0x00000000000000000000000000000000002e6dfcf7835db3e09c81793a4602b8" ] -hash = "0x12190b990be64e0a871c4995d6d4091f4fe34e7c392416e0949f7fa849dec5d5" +hash = "0x2510a690018b1f8eef089cce0f0b88859afea3439ebf5df20e3b18d59f1f11f3" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" sibling_path = [ - "0x0efa1bf9873f28b2b90fd97b3aa86f81792b62ff852383f1f161ff2185513cfc", - "0x1f8a29ac619adc9528879eb5f86632217299fbbf54784da57b8259f454a2e59e", - "0x0e31294ddae4f4798f2bba4b55ed737d196e1624f73265772ffe5ccca88f2a5e", - "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", + "0x21a94f20d20374f72f45547e295343e13ca88b3c332e3b5f7fe12f355b711f2c", + "0x00cf68b26c3307dd549e4da1198defd7abe5f06c946c4ff31e0617e9a0681f86", + "0x27a93963a3210199524c8dc79a8d1478e6d8aa4a22153c37eab1cb2c47d6fc2f", + "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -3435,7 +3425,7 @@ sibling_path = [ [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x00db4f24d6eff7983ec163d02c230d6a44237feabd8a2da284edce08afc71435" proposed_block_header_hashes = [ - "0x008cd6b70a977ddb5b158d0fbef9040329d8eadf7f5699be23d72060db634191", + "0x009469d542322f34a70990065c7e9c00d1fbec31149e60fc12e1b888d41964c7", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -3484,57 +3474,57 @@ proposed_block_header_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" -protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" +vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" +protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" + root = "0x12d15aa5fc47bbe4dc364bd694d8f18bcd201582f3f8acaa8d2deb85a0157876" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x2654086cd6d89561f4e67ddcb44940715de36e827be817fbc8617a2e0c02e0d4" + root = "0x1e00091bbbada4c141e65a4b9f6bcc2b33fdf0010ba11a61b9c5b29e8ea4b6f4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c433" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c433" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x000000000000000000000000000000000000000000000000000000004b3112b2" + value = "0x000000000000000000000000000000000000000000000000000000003ff2092e" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3820,19 +3810,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x2340a66742e66b43f5ecad8af2115647f1701c8595468cff31373853ad0cc86c" +z = "0x05f9b9f01ecfc5d655d08dfebe51a5e175ef30fbb05dd9f36b81fecf985590c3" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0xdcde22002fd28444ac3319fe5b97f7", - "0xfb95b391f75023e9656ae83f9c1831", - "0x2238" + "0x49cf92e06f7f3a6a42a55cf1523554", + "0x6aa399d75935d1b4071bbf90b380d8", + "0x0f27" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x0080fc98f548e26e38084ad23a25b1756ff9a218d289f7ae7404f5d35017fad1", - "0x0000000000000000000000000000000e43b628bf9cc36e41a23048021d58a084" + "0x008e3e966f1e3ed6ff0ceb4a53ea83c4a44951f7e2ee414aa74955db2fbd7e9e", + "0x000000000000000000000000000000309ebd9dc47d9362f35c40d0c80518e6a5" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -6731,101 +6721,91 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000417", "0x0000000000000000000000000000000000000000000000000000000000000418", "0x0000000000000000000000000000000000000000000000000000000000000419", - "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000000000000000000000000000000000000000041a", - "0x000000000000000000000000000000000000000000000000000000000000041b", - "0x000000000000000000000000000000000000000000000000000000000000041c", - "0x000000000000000000000000000000000000000000000000000000000000041d", - "0x000000000000000000000000000000000000000000000000000000000000041e", - "0x000000000000000000000000000000000000000000000000000000000000041f", - "0x0000000000000000000000000000000000000000000000000000000000000420", - "0x0000000000000000000000000000000000000000000000000000000000000421", - "0x0000000000000000000000000000000000000000000000000000000000000422", - "0x0000000000000000000000000000000000000000000000000000000000000423", - "0x000000000000000000000000000000f186e6c64451691473628419c2e0214021", - "0x000000000000000000000000000000000015f65ca1a289c27d57443485bc422f", - "0x000000000000000000000000000000e917f97b391f46a994191a5588dffcaf05", - "0x00000000000000000000000000000000000454b683360f63d2d4844e4eb66014", - "0x00000000000000000000000000000032a5fb49a00a4261bc264707a69df12790", - "0x000000000000000000000000000000000010f9cfa5a0ddc2f4ff057d0c767ee6", - "0x0000000000000000000000000000005030beee1b4c8bf8d5908ce885b498f230", - "0x0000000000000000000000000000000000297fbb53137118cc9659f184f07f40", - "0x000000000000000000000000000000d509163d6dc49b5433f15e710fc4a96158", - "0x000000000000000000000000000000000005457dfcb0e6b559a6a349adac5ee5", - "0x0000000000000000000000000000001004f49fae33906d7fda02b68ac2171eeb", - "0x00000000000000000000000000000000001e55ec4db9bd88291ddaf7931d8a67", - "0x000000000000000000000000000000ce68e4ddfde40132e255c50eac9bf2a34e", - "0x00000000000000000000000000000000000882110de4d55b7c2ac06d0f89254b", - "0x00000000000000000000000000000081a62410ebacf3942d479415514649ff34", - "0x00000000000000000000000000000000001a8a10529beaca80bdf2884912974c", - "0x0000000000000000000000000000001795739e33725b89e3c496e35778a48d0a", - "0x0000000000000000000000000000000000012526fe086b02415da579a1a566e1", - "0x0000000000000000000000000000004beda47bec585c377df9f236c740865035", - "0x00000000000000000000000000000000000e9e971dec8753c3db8070fb967f31", - "0x000000000000000000000000000000448fd42e6c52acc999c879be9fb3613a0c", - "0x000000000000000000000000000000000007679c4aa0c9998d86c13fd6d417bd", - "0x000000000000000000000000000000a45526cc53376ec419468d9abd82e32d7d", - "0x00000000000000000000000000000000002ea35a5a352ac5b728f4993aebe528", + "0x00000000000000000000000000000091bda51acbc74b80906743d6db73fe26ab", + "0x00000000000000000000000000000000000d48f8dde95611ca91507e0c96b0b4", + "0x000000000000000000000000000000607a165642985f403c4c7fb7290a3d9a07", + "0x00000000000000000000000000000000001470dd2ccb2fb7f3dc36a300828eea", + "0x00000000000000000000000000000048725e5a99bcbf3af24a52dfdd963de9b7", + "0x000000000000000000000000000000000006bad2136df2b31f525bb75ff82eef", + "0x000000000000000000000000000000bb4ce2f597cf008b569561918ba892f79b", + "0x0000000000000000000000000000000000087ada52a49d9e3899117f98da0a0b", + "0x000000000000000000000000000000c0a13e99949bf08c681f6d6e114ce2055b", + "0x00000000000000000000000000000000001663225082bd5a4707b70e1a69deac", + "0x0000000000000000000000000000007a3a5ce73fe50bfae2cdad25298e315a27", + "0x000000000000000000000000000000000019a07881faee8f9ec58b3091c036c7", + "0x0000000000000000000000000000001b2211b1506234febfb7c81620b6147318", + "0x00000000000000000000000000000000002b3e43e43131f170afa7bb85bfcbbd", + "0x00000000000000000000000000000043c963149fa184caa5fc9f23d1056ac47a", + "0x000000000000000000000000000000000003e2b10713d4c6e8cf6f46ba60faf5", + "0x000000000000000000000000000000958245bb14ddb7c17a959dab4c03ce3c34", + "0x0000000000000000000000000000000000170cdfdb11512ee0403f5920715666", + "0x00000000000000000000000000000049163e6f76d4c9712afa08edc981850e40", + "0x00000000000000000000000000000000002038f7e7307ca8416972362ae6d4a6", + "0x00000000000000000000000000000083feee532ddc9c852947a6a82b5bcd8e58", + "0x00000000000000000000000000000000000ff1358bdae58edd0d707e46dc148b", + "0x000000000000000000000000000000c0877b41993fc98f82da8784f3b8cf3e22", + "0x00000000000000000000000000000000001b807509aedd501cd80628ddcb5fce", "0x000000000000000000000000000000ebd38778b3274496532399746d9ad2b21e", "0x00000000000000000000000000000000001f0792f3fb8d0a1fa047b39c348a0b", "0x000000000000000000000000000000c38c90b96e080b0443ac3b57f0807e82ce", "0x000000000000000000000000000000000002425fdb1a2c58a9b62b7b8a0e5500", - "0x0000000000000000000000000000000b1160319affb53960bd43d829c831cd1e", - "0x0000000000000000000000000000000000180c6a9acd9ce667dfadbc45eb3742", - "0x000000000000000000000000000000a651437be54a07bbf93ccff4992094ce7e", - "0x0000000000000000000000000000000000257e1024bfbbbe2de8411f854c5a64", - "0x000000000000000000000000000000b529dc5a9952600ed5711b004c8eb08bb7", - "0x00000000000000000000000000000000001d30349cc834e28b6882375f9ed76d", - "0x000000000000000000000000000000476835083429fc19c38a33dfc7522e3dd1", - "0x000000000000000000000000000000000003855d0d02927e8e979f54f15fd71d", - "0x000000000000000000000000000000d9f607c417f7b084432251a1b61a8cd85e", - "0x000000000000000000000000000000000008b91e185e8f1309a253006eba5d7d", - "0x000000000000000000000000000000bb4b6ab72c49a7e51e4032fe166a1bc624", - "0x0000000000000000000000000000000000193f7887455921a7ecbe1535a67218", - "0x0000000000000000000000000000006c6462e79b9e81163635c85c634621a621", - "0x00000000000000000000000000000000002e934a9c3a2699e4b7d32f31cf927f", - "0x00000000000000000000000000000003581c9d77de90584a52746e8d5e2ee92a", - "0x000000000000000000000000000000000029bda394498a6513ffdbc66a7b0e17", - "0x0000000000000000000000000000005f8dbd76fe8d3b47c35b3b515e744d22aa", - "0x00000000000000000000000000000000000ca6fbecd5f2a99c7a7f2136a817fb", - "0x0000000000000000000000000000006cd0678a92034e7ab258cf0863b69d065f", - "0x00000000000000000000000000000000001a63548454951fde58111f85b7ca17", - "0x000000000000000000000000000000c50ff202b1de359f765e25e91c0b7b8850", - "0x0000000000000000000000000000000000088b0870f4423c6beba33189a12400", - "0x000000000000000000000000000000b25f74b60d4e3e9594c740ecc391d18d09", - "0x0000000000000000000000000000000000117ebe1b9f71ba258102013e625042", - "0x000000000000000000000000000000b57bb0c18749211d3801c27bc3aeafbe7c", - "0x00000000000000000000000000000000002db5a2052dab544cbd3b178749347a", - "0x000000000000000000000000000000ab11dc6b49ec633df3dadeffc477db54a4", - "0x00000000000000000000000000000000000ff93dc453e69b2ac00a4228713dba", - "0x0000000000000000000000000000003ca7ef824e5860dae9d92fb64c09a805c7", - "0x0000000000000000000000000000000000066e6060426204c25e41fb7159466b", - "0x00000000000000000000000000000090a35fd9cc79b2936612fe5a9ee4074eed", - "0x000000000000000000000000000000000007b72deafe12112151dfbcc381eb72", - "0x0000000000000000000000000000009d08369e8bbffe875baf0cf7f2146ff671", - "0x00000000000000000000000000000000001d1aab64cde3c7d5a1b4355d981bf7", - "0x0000000000000000000000000000008e09f9b5dbddc8fb2b4c43fd562d82ed31", - "0x00000000000000000000000000000000000c04af0773bf42791c09a3c03e0265", - "0x000000000000000000000000000000cfc9d4948adc5891fa4c61846215ec97fc", - "0x00000000000000000000000000000000000b658877aa83807ba16a7c2511aa0d", - "0x00000000000000000000000000000063f9b32ec63b5b21a537b554a05307f7a1", - "0x000000000000000000000000000000000010cd28edb772b8a0b901ce439aca64", - "0x000000000000000000000000000000ce66a769cf4ddc90f7aadeb5d758dfc37a", - "0x00000000000000000000000000000000001b8f4206fd0d9b0b40f67f51c9452e", - "0x0000000000000000000000000000005bb99d6795f6ebcfdcf48d2acd4ed621c0", - "0x00000000000000000000000000000000000b0608eda03bbd5e9b90dfab2bc9fc", - "0x00000000000000000000000000000075465ebbe90999afc6ac49da21aee9ce5d", - "0x0000000000000000000000000000000000226ff0f81049753b533edd85997768", - "0x0000000000000000000000000000004b5fc8098516c1ee228e99e532cdb19bfc", - "0x00000000000000000000000000000000001f06c7fd8bc0c014f0bb9fb037906f", - "0x000000000000000000000000000000cb48c14218824313e5aae7355e9b270fb9", - "0x0000000000000000000000000000000000303f4adcb00d043d007d8c24195253", - "0x000000000000000000000000000000f0cf0e21d5a0be67d5367be6aa4ac642e9", - "0x000000000000000000000000000000000001797daa7bec9edffb5719e6e64871", - "0x00000000000000000000000000000043b35482581458e4c79ab3b5fcbc3c4ec1", - "0x00000000000000000000000000000000000efcb9be78c41f84f592c1194dc9e3", - "0x0000000000000000000000000000007b03cad4e7920a08e4ceed504927684654", - "0x000000000000000000000000000000000012e515774d00c89c77eeb5fe3c6262", + "0x000000000000000000000000000000a96544b1423382609213822a7824b4bf9b", + "0x000000000000000000000000000000000026cd6d50747d07418d0c9fa2a92bb5", + "0x0000000000000000000000000000003a378e5d257dff13ab7a3bcf87c6f86882", + "0x00000000000000000000000000000000001f5c35be48d5f98df45bdb96030e5f", + "0x000000000000000000000000000000db18619d09a1a1dadc63a61d4c48d9dc19", + "0x0000000000000000000000000000000000234b4a8370a0c5d01b8fb347456833", + "0x0000000000000000000000000000004d3bbef89cf15666781f3426b3d820452f", + "0x000000000000000000000000000000000004d7ba03b56c2dbe6986b7118973a8", + "0x000000000000000000000000000000c4a1910f6df904c705fd22a37d6e660f11", + "0x00000000000000000000000000000000002f67c446e25bcb7962ed8895538b57", + "0x000000000000000000000000000000d410591dd6e7ef2baba3e78242c43420b3", + "0x00000000000000000000000000000000002325df39f2a42a4d9b0cea85f68dbf", + "0x000000000000000000000000000000b7d9e3d56f853358af1b3b3df481274184", + "0x00000000000000000000000000000000000d8468b03f05de22afa265efc77edd", + "0x00000000000000000000000000000021e3aa41e96d8dddd79d3bf60b881764f3", + "0x0000000000000000000000000000000000001f5eae9a3dbe746dff5689e20eb2", + "0x000000000000000000000000000000a29ffb342db0451b3cfc161bd2164840c4", + "0x00000000000000000000000000000000001b3e059cb88636a5bd01e22596d6f7", + "0x0000000000000000000000000000002cc878752f64ee9b1065639aa666e39bd0", + "0x00000000000000000000000000000000001048cb0f6e9164122aff8a91b60123", + "0x000000000000000000000000000000a28310c24978b4773836f3750c5a77d15a", + "0x000000000000000000000000000000000012d615ca18141cabd60dfabb0a17fd", + "0x00000000000000000000000000000033f993a13acac9fe795f390f5fa6079b77", + "0x000000000000000000000000000000000007e9bf2183de898d1dac2bb88e7f02", + "0x0000000000000000000000000000003d3d0504913a704d1e1152ccba928f4510", + "0x00000000000000000000000000000000000601ca6deb9f90521074b3b0d2ecc2", + "0x0000000000000000000000000000007ac2a03cab9cc6574803270ed215208513", + "0x000000000000000000000000000000000017a26c059467101b73e6607fb230ca", + "0x000000000000000000000000000000e1fb4c1a1faced70b547c4ef7f54031a11", + "0x0000000000000000000000000000000000051d04dfc3a646834ca544fd642661", + "0x0000000000000000000000000000001e3e79c8484074cc50dc787b7b856d48e8", + "0x00000000000000000000000000000000002a56b809b4c4deb9d946b6a54cd80e", + "0x0000000000000000000000000000002410106a6e2e873cb3c7788be7d81fff5a", + "0x00000000000000000000000000000000000079f4c5472a7f205328e4d28eb3fc", + "0x0000000000000000000000000000003c5aa2adec0440ce79daab98095e8ac5a6", + "0x0000000000000000000000000000000000092cdeca33780aed3cf943bc13db5f", + "0x0000000000000000000000000000002de00bf53bdc91362d95392aeeaf956dd4", + "0x00000000000000000000000000000000001bc810cd34661cd8a24bbe79cbe3cd", + "0x00000000000000000000000000000074326b664426c9ee916d2f6a00c8f5459e", + "0x00000000000000000000000000000000000d94a1a163beca695cc3c4528024a6", + "0x0000000000000000000000000000008daf74e4ecceb9e4b45b9e618bde4dfb9d", + "0x0000000000000000000000000000000000033385c9a13fe7c186d5073f7cc0f4", + "0x0000000000000000000000000000000cd82b7b7eff02dfb2c93ccb3a5865bef8", + "0x000000000000000000000000000000000003499434d3b0bc263efecfa956dc1a", + "0x0000000000000000000000000000005560298f377c2a6a53699be7d437356fd6", + "0x00000000000000000000000000000000002aec52d5bb4de7820bac4754482efb", + "0x0000000000000000000000000000006da21c04b982fa745e01e132a6050c78b3", + "0x00000000000000000000000000000000000b89170befa4a5178fd7c058db059e", + "0x000000000000000000000000000000211e37199edfb28e4c70bcbcba99b939be", + "0x000000000000000000000000000000000026c1af27c6490faf8671e54b60aca2", + "0x000000000000000000000000000000c66c8bc5b1bbe9e7f89413db0893daa3e1", + "0x000000000000000000000000000000000013a53f08147e9fdd949c36fd604422", + "0x000000000000000000000000000000ba1d5d5d5ec9a29b2026e17bb36c1b8ad2", + "0x00000000000000000000000000000000002cf2d1a81f52e55ef9780dcfb26e42", + "0x0000000000000000000000000000000f5bc765b94d16705f5af5f02b2f0e654d", + "0x00000000000000000000000000000000000ccd3859f98c39b1cb87eb9c0f8ff5", "0x000000000000000000000000000000a1df7d029b9ff4ee2daa206366393a7f31", "0x00000000000000000000000000000000002a3f1db615617f2856ecabbfea3662", "0x00000000000000000000000000000008b2769342754a7fb7764ba017cc543239", @@ -6846,20 +6826,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000087fac46f68317daf575e010c825aa94d55", - "0x0000000000000000000000000000000000011305a51c8b42246bbf54965ef874", - "0x000000000000000000000000000000f335e9e286b2994a940db5dc928df97195", - "0x000000000000000000000000000000000027ac47d8ede5900974539d6c9051f6" + "0x000000000000000000000000000000fff36f8ccea8b5ceb24d4a57d19b1c07b2", + "0x00000000000000000000000000000000000e0605b702c108a513ad2c7f783778", + "0x0000000000000000000000000000004efe720c87f94a91f737e987d60f638aec", + "0x000000000000000000000000000000000010e16785834ac27c27b209c1c23762" ] -hash = "0x007b7897db2c228cf9ac161c205a0eecbcae5451d6365d3ccf61323f2710e747" +hash = "0x173010635bdfc5820e915b6da54d7a3feaac95748c678fc1e778cbff318ab385" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" sibling_path = [ - "0x180c796146fafa025ed66fd72bec570028abe91c7ad734541db133c9f4071ea9", - "0x2c005f8f725e63e5612b065f9e48839a33b29f9f5c268df1d21b7d2406141bc6", - "0x0e31294ddae4f4798f2bba4b55ed737d196e1624f73265772ffe5ccca88f2a5e", - "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", + "0x213fb9c7202198fffd4baec80885d5a42ffa329b5297936c925c3d68a05485be", + "0x0b96ae5c42feda18246b11b154c387f61f74ad75cad3ce35e77f33b25183fa6d", + "0x27a93963a3210199524c8dc79a8d1478e6d8aa4a22153c37eab1cb2c47d6fc2f", + "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml index 85995d089cda..320e3a16a37b 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml @@ -3,56 +3,56 @@ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000001" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" -accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000040ded132" -accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000001d2ab" +accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000036bc04ae" +accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000001b937" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" - protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" + vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" + protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" + root = "0x12d15aa5fc47bbe4dc364bd694d8f18bcd201582f3f8acaa8d2deb85a0157876" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c433" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" +root = "0x23b508d4455472453a68b04bf0a23397cd9a9b3aabd271827304fb773b7709f8" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x19d316424ed6bd56f3016f8dbb6db9a9671f5c9bf9b3507600751ffce4a4d227" +root = "0x0540ee5badb60213c4f2650a03ed63f7faee1fa6d3d719d262187bd926d95f24" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x07ca9f2bfbdd89f82d057d91ea89021e1400ae7700b2f372f73bd33696a55e5e" +root = "0x0d3efd3a30cd51ea23afaf0bc44cb39116683c5ee4e3454d83bb245a609a06f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" +root = "0x23b508d4455472453a68b04bf0a23397cd9a9b3aabd271827304fb773b7709f8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x1638127f0b085d1ccccff7f140acf3f91e154550ab9883c863a2f3d297e85c0f" +root = "0x16d2d03407651d0a4f59ce6983dc08b96763914023e0cb5c8c4bb06f8fb22749" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x264038ca78601a4472bd12b0052b2e3b3bc1f6382dddb319a5d8431adf6fa760" +root = "0x1b972880f210a5c72190ee2a6753a1a01e6249f6cd172521e0ca51f533fd409a" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] @@ -80,15 +80,15 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000021e19e0c9af62cbb236", - "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2", - "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" + "0x00000000000000000000000000000000000000000000021e19e0c9b0fce6cd00", + "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0", + "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1" ] state = [ - "0x2881762ad9363d07164b4adcd8fba0d34cac7324b5e6039eeb82a0daa1d7e98f", - "0x041e60c8e1d3f54f35a87c0b87f1a8f99d1814620b38ccc65eb74c795f795b35", - "0x17ce0454dabf60a6eb91b31bb316c45f7910ecdf748fce1b6b78af4c47c95d50", - "0x1f380d4eae917b0df150aa708ff1d825eedbebae0923e6bd7efbcc2c5b37cd77" + "0x2da49f424023cd16a5eccc756778ccc307836a1ffd44c5c1c08b22b0cb0a3cda", + "0x0deab06cdebfd3c70920b6a00629ab11a59489975d29093cba8010cf6690617c", + "0x254ec1f005dde9e9068d437ba828281f3268c5f817f6ba159d28c39deeb36a11", + "0x0561a3f993b86379782b5d7bf39d2eb90ddb64e9df12ebe4b61b8abdf92a2271" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false @@ -769,10 +769,10 @@ hash = "0x213fb9c7202198fffd4baec80885d5a42ffa329b5297936c925c3d68a05485be" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" sibling_path = [ - "0x007b7897db2c228cf9ac161c205a0eecbcae5451d6365d3ccf61323f2710e747", - "0x2c005f8f725e63e5612b065f9e48839a33b29f9f5c268df1d21b7d2406141bc6", - "0x0e31294ddae4f4798f2bba4b55ed737d196e1624f73265772ffe5ccca88f2a5e", - "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", + "0x173010635bdfc5820e915b6da54d7a3feaac95748c678fc1e778cbff318ab385", + "0x0b96ae5c42feda18246b11b154c387f61f74ad75cad3ce35e77f33b25183fa6d", + "0x27a93963a3210199524c8dc79a8d1478e6d8aa4a22153c37eab1cb2c47d6fc2f", + "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -782,56 +782,56 @@ sibling_path = [ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x000000000000000000000000000000000000000000000000000000000a524180" +accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000009360480" accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" - protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" + vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" + protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" + root = "0x12d15aa5fc47bbe4dc364bd694d8f18bcd201582f3f8acaa8d2deb85a0157876" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c433" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" +root = "0x23b508d4455472453a68b04bf0a23397cd9a9b3aabd271827304fb773b7709f8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x1638127f0b085d1ccccff7f140acf3f91e154550ab9883c863a2f3d297e85c0f" +root = "0x16d2d03407651d0a4f59ce6983dc08b96763914023e0cb5c8c4bb06f8fb22749" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x264038ca78601a4472bd12b0052b2e3b3bc1f6382dddb319a5d8431adf6fa760" +root = "0x1b972880f210a5c72190ee2a6753a1a01e6249f6cd172521e0ca51f533fd409a" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x2974c95d044b350c4ecbecd81e04f2209b53c87f1a82743d35501c53014aeafe" +root = "0x2e8c393f241b4f9e879a0ebb1a7aaec35b977bc246b3e30783c4160e541619b3" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x169e89387d7418d762567ed6f237578a00c8ebbfbef0a69bb636667dd7ca4ebd" +root = "0x2a97eead928dfb953bc8e9c734176efaf833fe22eb35ef906de12d4f4956723b" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x216e91eabfbf3f0c2d987353464d0c7b1c479d2d39682cf4709e10d758a7b0b3" +root = "0x185a6a6ab72b0c18df00298d716921d15d64c24462875349f276193ca244f187" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] @@ -840,15 +840,15 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000021e19e0c9af62cbb236", - "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2", - "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" + "0x00000000000000000000000000000000000000000000021e19e0c9b0fce6cd00", + "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0", + "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1" ] state = [ - "0x2881762ad9363d07164b4adcd8fba0d34cac7324b5e6039eeb82a0daa1d7e98f", - "0x041e60c8e1d3f54f35a87c0b87f1a8f99d1814620b38ccc65eb74c795f795b35", - "0x17ce0454dabf60a6eb91b31bb316c45f7910ecdf748fce1b6b78af4c47c95d50", - "0x1f380d4eae917b0df150aa708ff1d825eedbebae0923e6bd7efbcc2c5b37cd77" + "0x2da49f424023cd16a5eccc756778ccc307836a1ffd44c5c1c08b22b0cb0a3cda", + "0x0deab06cdebfd3c70920b6a00629ab11a59489975d29093cba8010cf6690617c", + "0x254ec1f005dde9e9068d437ba828281f3268c5f817f6ba159d28c39deeb36a11", + "0x0561a3f993b86379782b5d7bf39d2eb90ddb64e9df12ebe4b61b8abdf92a2271" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false @@ -859,15 +859,15 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x00af53dcbfbe40616c079981f43fdb0cf9f4b00a55589902f49e215c79d16d00", - "0x00be4d828be2d3f952ed4192c3e34fb2764dc1d341c518925ec914378ba0ed14", - "0x008a89f085d69862902f2228ce1b7fa696e9f1197cc7d230d2f4b7d8d7a00d3c" + "0x0047370477ac2afeaed310044e386bafc01de7563dacff0dc2a341ca28661996", + "0x0028db61262553bcf785e1d830ce17ca0456843c87d165b3000adba255629166", + "0x00430f93dd2be9f97ea7bf83fb3840a4d18f358a4ee62aa4920ded111f5bdf24" ] state = [ - "0x263a05e6e30b36d11aab75d1dda151e46d7307b2b6c36c7d9028dd24f3f42b17", - "0x0f80333c283d404ed13bbab6c7a005bb23ff49c4903d0c7aa97472e0e9d6b4df", - "0x2331e15236230041a7212e3d915c6963dd965391621d08358b07b2b9f7c3378f", - "0x11edebe728a94d62c283f5579123a21918c4149c50e4533c83a633ee05a705b6" + "0x14ca82f7b8877fa9a5e5ea260ec9b7b3ea1da6514e19e7b3da5060fb1420f17a", + "0x2814f5ab788535cc2034ed58b977fc4c0b9d0f16491052064a66b9bd1d1bff21", + "0x27f483707310519339a1c490ff693c1b810d0c4c188c7351cde45d3e67d1b736", + "0x00a811e7e0018fe279a112422f946cf35bd1a9fc4fd02579a3d8902af0d0357e" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -1434,99 +1434,90 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000042", "0x0000000000000000000000000000000000000000000000000000000000000043", "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x0000000000000000000000000000000000000000000000000000000000000045", - "0x0000000000000000000000000000000000000000000000000000000000000046", - "0x0000000000000000000000000000000000000000000000000000000000000047", - "0x0000000000000000000000000000000000000000000000000000000000000048", - "0x0000000000000000000000000000000000000000000000000000000000000049", - "0x000000000000000000000000000000000000000000000000000000000000004a", - "0x000000000000000000000000000000000000000000000000000000000000004b", - "0x000000000000000000000000000000000000000000000000000000000000004c", - "0x000000000000000000000000000000000000000000000000000000000000004d", - "0x000000000000000000000000000000c9644cf046fabe3b46186fd1d31e4a634f", - "0x00000000000000000000000000000000001ebdf04e02bcd06d38255557b14eae", - "0x0000000000000000000000000000004006cfca9230c8381544d42afd17e423bc", - "0x00000000000000000000000000000000000f4c11c73c96ba41968ab9176543d9", - "0x000000000000000000000000000000170a6b14b50a0ea346ea77adf33caeccc8", - "0x00000000000000000000000000000000000642abf751a0c3173c571987b81c76", - "0x00000000000000000000000000000022469b618010c2aa2cabcde9d518b44338", - "0x00000000000000000000000000000000001b599d876e394114714733a2bd9f4d", - "0x0000000000000000000000000000008b210c42e86aa5980fce568b226af34fe5", - "0x00000000000000000000000000000000000a158a4caad7266fbfc4f9a619d47c", - "0x00000000000000000000000000000076dfa11c8d99b2563c2cf697f6ac9ddd1e", - "0x0000000000000000000000000000000000135c76c9cbfc3083868f23cc098a2f", - "0x000000000000000000000000000000d2a52bdb84c0ee98dd0a15c0d53b7968fc", - "0x000000000000000000000000000000000004aa0de8c3735a18fd3903dddcbf86", - "0x00000000000000000000000000000036bedf4ce1b036e9cbc8ea1fbe2c30b5d0", - "0x00000000000000000000000000000000002f873548c191874848496b71a126e5", - "0x0000000000000000000000000000008a2b522df5d01aa5213a80861c6d4bcc09", - "0x00000000000000000000000000000000002d2473f32cf421d41cb7342396fbf0", - "0x000000000000000000000000000000fdf976f6610caf5313a88dcec941f95be7", - "0x00000000000000000000000000000000000a1c346ef53743e533a9885a5b3aab", - "0x00000000000000000000000000000009d953db2feaa4cbad7b95f78e5f73fd0f", - "0x00000000000000000000000000000000002609bfa75c22002b6bc5decda78eab", - "0x000000000000000000000000000000e0165044d08e48425a755224ce1e8862ec", - "0x00000000000000000000000000000000001e42cb2c93984db877aadbf6ca52f0", + "0x000000000000000000000000000000521b9d4f83c543b2d84cfdc2bd2a98fb40", + "0x00000000000000000000000000000000001339c78afbaf20ae75727c7b732af4", + "0x00000000000000000000000000000080022768f68ea22b61825c0c21bfb8ac3d", + "0x000000000000000000000000000000000015ff4c9ac04d118866917d85503b7e", + "0x00000000000000000000000000000070713038ce33770306927dd8ca492322b2", + "0x00000000000000000000000000000000002fee639887369cd3a83579202b79dc", + "0x00000000000000000000000000000061bab45392977e273d132d7cb7a44ff202", + "0x0000000000000000000000000000000000155170bb6e84f41b220e351ccccd36", + "0x000000000000000000000000000000d762b23206e8619049ccdc3d9d72db53e8", + "0x000000000000000000000000000000000027b2187681c7d7d762978a8699d1ad", + "0x000000000000000000000000000000fb6231cdcee4bf02adf80ab4f5b4e1b7f7", + "0x0000000000000000000000000000000000158ff5241a1461fb0a35fd985ec474", + "0x000000000000000000000000000000c4953b141659032c469ce6770f016b7980", + "0x000000000000000000000000000000000006920ab0aa6f66843372f54781ca2b", + "0x000000000000000000000000000000c7af0b22593cce863a4a8ca0b240d074ca", + "0x00000000000000000000000000000000000dfdc634e7b62976f6ce0549fe233a", + "0x000000000000000000000000000000c1d033ae709c039af90b2234226cb5c4f8", + "0x00000000000000000000000000000000002dc468919a1be7cbd81296c1733377", + "0x0000000000000000000000000000005d502fdc01a9736a9219cf912d9694a2e9", + "0x000000000000000000000000000000000021aafb24e110636d9df075e9bc6b86", + "0x000000000000000000000000000000a7d84e314ba33098291f60dea80b20d68f", + "0x0000000000000000000000000000000000217076933f7d213145d14d14915da8", + "0x000000000000000000000000000000a16d19f8a7acf7d489e6271afc1b954c20", + "0x00000000000000000000000000000000001c765879c0be34217b869c3b7a9a67", "0x000000000000000000000000000000e7bab6896d9724b5b46b796551dc5feed2", "0x00000000000000000000000000000000001fd93debdcf16cc93f99efd69e938d", "0x0000000000000000000000000000004b94434e1705c9bc2a4f5b2bc2a05c3c03", "0x00000000000000000000000000000000002a29d5563fd08e454dace1605a1aa5", - "0x000000000000000000000000000000e1fb3d427b73bab2c11dae5ce721223d21", - "0x00000000000000000000000000000000001f8588599ae47d5d086bb8e00f8625", - "0x00000000000000000000000000000010ecccfb7aed7cdc6b3e4893084d705ee0", - "0x00000000000000000000000000000000000c4e4d56e1ade9ae17f3bde878a1f9", - "0x000000000000000000000000000000c46228e4d0d2a2c307442a43bb23d2248c", - "0x0000000000000000000000000000000000038c5e48b5ec296511ee16e3291a65", - "0x0000000000000000000000000000007b486b588dd7c6052debd34eb27014799f", - "0x000000000000000000000000000000000012d3037964d4e49732fa5947f54064", - "0x00000000000000000000000000000057fbf4b6a01d9677544cba4473c4dc3049", - "0x00000000000000000000000000000000002bc0e9270588fac691096aaed3e938", - "0x0000000000000000000000000000001afd4bfacd4233aa89adce3da3b00a57b5", - "0x0000000000000000000000000000000000267c176e5eb60f5b09651dd89d660b", - "0x0000000000000000000000000000005dc29066e3fb49c245e0edeab4c1a10667", - "0x000000000000000000000000000000000014b76faaaa563f382cb1646dcc2133", - "0x00000000000000000000000000000038851ea92628726bfc7fde6e90c4e582c1", - "0x000000000000000000000000000000000011ed1c7854ffc4353472b49ea4c957", - "0x00000000000000000000000000000006d3223a49a4bae5f1b2c2cb6118926e70", - "0x00000000000000000000000000000000000d6c2b94668835dfa0495fd9d28079", - "0x0000000000000000000000000000009795078410ec9afd95b25d51b816e8dd88", - "0x000000000000000000000000000000000019682a7137a90539776fb277c7ba94", - "0x00000000000000000000000000000038b962e3fc459e36224dc9aae811b868d8", - "0x00000000000000000000000000000000000dd3285648305441ffcf70e0721765", - "0x000000000000000000000000000000b384879bd16132be7c7fb8f55608875db9", - "0x00000000000000000000000000000000002d896e8b4907522977e0d4da869f0d", - "0x000000000000000000000000000000e3b56fda82a6a02d77c1bf79b7a16442d0", - "0x0000000000000000000000000000000000303b0d9bc5c029d32661f6f39c9d4d", - "0x0000000000000000000000000000002c9a776cf3916dc6dad39ac873d282a869", - "0x000000000000000000000000000000000007e2fcc3c3af98d8e39b0fb76e1c30", - "0x0000000000000000000000000000004eba86e2011eae38bd144c381fd77f7a29", - "0x00000000000000000000000000000000002bd3d0ef45abc16269d086c7e6840f", - "0x0000000000000000000000000000007ac63f3982a80ed11fd18f949513c160c3", - "0x0000000000000000000000000000000000299f99527df26d098053dc77598cc3", - "0x000000000000000000000000000000cf59e5a4303332db258b8d2f2a420bf169", - "0x00000000000000000000000000000000000a3bc62d7b2d510f35637b5b012c94", - "0x0000000000000000000000000000006cc09361b66a9769c54d103fc3efc0e0e2", - "0x00000000000000000000000000000000002bf8041e7eec21e9bf162295b6c1ed", - "0x000000000000000000000000000000315b67face1c74c547a25a08b9137e2b32", - "0x00000000000000000000000000000000002963487d85991c1568ed9634dbc6d1", - "0x000000000000000000000000000000c17dc1513d94944ad4d9df3c06683150cc", - "0x0000000000000000000000000000000000123fdc940f065e30b6c62696f392f2", - "0x00000000000000000000000000000059591250216fa4d9c723b36ee12fa5ef8a", - "0x000000000000000000000000000000000016b55cfa9aeaaa536def8bae510187", - "0x000000000000000000000000000000977d28c3f102a61ea185d7cdcb0655e954", - "0x000000000000000000000000000000000025eb8938920663becd970934effd10", - "0x000000000000000000000000000000b3173103a6bacd94b858b50c3d3310e498", - "0x00000000000000000000000000000000002759da1caf883bfba5a9dc1f433b2b", - "0x00000000000000000000000000000005bb7abde3494dd7576eabc41de3b73a18", - "0x000000000000000000000000000000000023b5a3c6b9a923d1cd3365863343ab", - "0x00000000000000000000000000000025e903932df14f80bde37e97d59ca7593e", - "0x0000000000000000000000000000000000029740995cb8035b1400cf88d64064", - "0x000000000000000000000000000000355c42e08220f7560974d9329eacd303bd", - "0x00000000000000000000000000000000002074c250ac80711897db58ca60b01c", - "0x0000000000000000000000000000000e044a82560642d2c743ba1c752f9dd64d", - "0x00000000000000000000000000000000003023d831e86afbee59508fc7b768d6", - "0x000000000000000000000000000000d50965001f5628c37c0770164b9a0c3932", - "0x00000000000000000000000000000000002b180be1e4e7764825ab8ef53a0e7e", + "0x000000000000000000000000000000c605d0398cd0b2427c3c9c461bb8429b53", + "0x0000000000000000000000000000000000196952a7e4218337f71f1105909c3d", + "0x0000000000000000000000000000006cae2999b90655b65fb2612f6692e2adf9", + "0x00000000000000000000000000000000002dacb567e258b182d2aa0f0c2673e9", + "0x000000000000000000000000000000fa23b5130fb864af7b45be9abdfee90f81", + "0x00000000000000000000000000000000001b5f38c9b239993607e4bd64e1ec0e", + "0x000000000000000000000000000000bdd3479bd2de629e84156d2c0af3b2ef68", + "0x00000000000000000000000000000000001da27039bf77a359382fc0c56838d9", + "0x000000000000000000000000000000e7039a59b6348c66427f2c08e1b4a38415", + "0x00000000000000000000000000000000000d34616a91f79d7613bbfb94ed0d38", + "0x000000000000000000000000000000ffa72e0f4b9857447bc99abb6f83d42647", + "0x0000000000000000000000000000000000193a8bcc5d47c5f43e6cc581ac0eca", + "0x000000000000000000000000000000609f79166c04a86fef382541bd1c5ab9ee", + "0x00000000000000000000000000000000000db5fa9f0bd6341244daf0d59d7b4d", + "0x0000000000000000000000000000009d97a8c8a3a70077827e2478347af83d11", + "0x000000000000000000000000000000000014360d2aa26b853c45cc56f3ee4d6c", + "0x00000000000000000000000000000037daba742d12aec1b27f76d1d8eb3a1604", + "0x000000000000000000000000000000000010c19122bb08b25208f5814a2d9813", + "0x000000000000000000000000000000be2d452540b2e3de92b42c11ac9e70887d", + "0x000000000000000000000000000000000003735685535ef50a290d4f0f8ed48a", + "0x000000000000000000000000000000c3aa132938397ac9298dc4c631930c2bc1", + "0x000000000000000000000000000000000006842deb4d313e699e597b702ee51f", + "0x000000000000000000000000000000de052dfd6c354afef2580b20acf839687b", + "0x000000000000000000000000000000000029a034fd3752a404c9c1d34be06c6d", + "0x000000000000000000000000000000d1760e3a79672913c859049adbc670838c", + "0x00000000000000000000000000000000000e49d5809084137fc7bc71ba11ae4c", + "0x00000000000000000000000000000018da3c85d452ca91d4c8ae233f3d0ca0cb", + "0x00000000000000000000000000000000002c681b077e84d38c1602e9f572a11b", + "0x000000000000000000000000000000c3d40a67c4190b20133a492d8f79fbbc55", + "0x00000000000000000000000000000000002974c1b596b95212c42728a3f49557", + "0x000000000000000000000000000000f79eef4973eea5c82bd426545a37c7ed2d", + "0x00000000000000000000000000000000001ba2cfcf9b6a183c6c6657d58479ee", + "0x0000000000000000000000000000000e0432dd54f4992443978a547a3553f2bc", + "0x0000000000000000000000000000000000257ed05f3910112f34e3a6132c0f1a", + "0x000000000000000000000000000000febd659aed367ed7407b257704072b88ae", + "0x000000000000000000000000000000000019758526889ecf9801abc067968aeb", + "0x000000000000000000000000000000a3f503fe809fcdea4f4c89790ee9476c07", + "0x0000000000000000000000000000000000054ca4d7b7aef2ff8d05cd828cc7e8", + "0x00000000000000000000000000000082e978a687f226b9d9f6c475d76ad7d0f2", + "0x0000000000000000000000000000000000170d4cfd2d18c54304a6d903bf1a0f", + "0x0000000000000000000000000000006fa34ea411efa79fa5ead29b0692bf2b77", + "0x0000000000000000000000000000000000019bf1e5985e2e1a266a8864a7a581", + "0x00000000000000000000000000000024284a91b4778943659263b48bbdb337ea", + "0x00000000000000000000000000000000002fb6187962b45dd22bcb08a54d2f9f", + "0x0000000000000000000000000000000eded336e987654dfa087268cadec1569b", + "0x00000000000000000000000000000000001f1b47740cf8487a80c45c4609935b", + "0x0000000000000000000000000000000eee28b9fc49c81a286626062375e866a8", + "0x000000000000000000000000000000000011e1f7acbb598eb1167aa3ae001439", + "0x000000000000000000000000000000afd2eac7b63630be51019a6bf88b5d2641", + "0x00000000000000000000000000000000002488ee8880b7c23776f33c1f1078eb", + "0x0000000000000000000000000000002275b7c90182400ba595c7685146405aad", + "0x0000000000000000000000000000000000263a1385b1d49c3dbac85c2b943a14", + "0x00000000000000000000000000000099b6b8028401bdf9add9b6a3e9f3f16f1d", + "0x00000000000000000000000000000000002c92c0237e464563a30456b3e0b917", + "0x000000000000000000000000000000f9cf12c30ec2f4e80b51e603a07fa28f2e", + "0x000000000000000000000000000000000025f210d401c32dcfdd334443a6745a", "0x000000000000000000000000000000e97fb648fc1ff99f9988a73de181e0de22", "0x000000000000000000000000000000000024cae2d5d2c4daefe858889eeb01b8", "0x000000000000000000000000000000e072297115d09425f5612d626dc82f1002", @@ -1547,20 +1538,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000002c43f224fcf543b4690c3decf428df16c8", - "0x0000000000000000000000000000000000034a80aee11994ad8003b85f40b762", - "0x0000000000000000000000000000006e75b36384f2b35a1ecec355bd4a90c9a1", - "0x000000000000000000000000000000000022b417745523169cd4e273a17216c6" + "0x000000000000000000000000000000df09a35ec29cb8b8e65d374b7ee4b958e4", + "0x00000000000000000000000000000000002a4f5048b3b3a1f217328f560fbb64", + "0x000000000000000000000000000000d05ec9df459e02b89c2805cd568a2f3522", + "0x000000000000000000000000000000000015775347bfde9959a7eeca6a09dded" ] -hash = "0x2105487deb54ac9c459b3050270ea0b48ac21bc057a48da073c3fb56dea06740" +hash = "0x2ef0677eced88cf91ef001e856c0e3e649ab915b579ddcede447fa49fcbc0e2c" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" sibling_path = [ - "0x0cae9a18e830901d937e8150200d55d6b97b58f12cbe0a8f24c0e50c8bda66ff", - "0x1a8ceec79a52f0cadbada4e0362dfd6ef1f2af334809c9bc837825b657cec6a1", + "0x14caa5816578cf92f252792e62335331c3c7b3aba456597e9d2ec7131722bdfe", + "0x0f410eb6e69a2497aabc2f1686a1bdf90876c704621e028ec62c0341f74560ec", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", + "0x17121585aa6800bb9d9b7250898bbbd170b2458884f8738cd2fdbaa3442b0f62", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -1604,9 +1595,9 @@ l1_to_l2_message_subtree_sibling_path = [ "0x21849764e1aa64b83a69e39d27eedaec2a8f97066e5ddb74634ffdb11388dd9a" ] previous_archive_sibling_path = [ - "0x192af59986de97a21bb9942e27b303b63cfc8278ec924eb84709bb0976ad7549", - "0x2be2e0b5247d27d4aa1436c8ddb5f63ec56e9d8a0c0d295750b1bb90cb6d7343", - "0x1e96066120e8194f7cffe64e70af687163885eed70669e9707b1a00cede7cb81", + "0x00317272f50ecc957afd7a6b705283535d5d988ef3cd6f8a1aeaf14d5e93553d", + "0x21f2fe9ec6e7a0b21b6e661df9d3e80eb18c05948b461620bf6391ade3a2fb76", + "0x2c3abd803a29dc4ef7199f08fead4e3db201d441b433b1d194764b1314077474", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", @@ -1638,7 +1629,7 @@ new_archive_sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", - "0x1dcf1f62394c44e20c9be64b8d04cd65aabe973bc5a65a4fe490c0e8b47791d9", + "0x1e1bb2c4e3cc147a71129cfa1ce3e38c49e2d60664918d96b2e62e156dff34a9", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -1670,9 +1661,9 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.data.l1_to_l2_roots] vk_path = [ "0x2d133f1353a0c1bd24faab6cc05696677d88a24d4e2767b77446437451fb7ce4", - "0x180dee67e547c248a94710c09ce1aed8c5e78884da885f61ac041381acb7bb7e", - "0x249e51fc196c78b39e44c75f2cd9bb14e5841d3ec9e6c4354257673559a0c3c2", - "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", + "0x275ebb2212fa9c1e6d9c5b27dff8af8c958c5ce6a74dcdd09990493d3304fc44", + "0x2339fe400f4ac82a211804552b46c722be6b91b84dda89485e57efc554f2711a", + "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -2273,19 +2264,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.data.l1_to_l2_roots.public_inputs] sha_root = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" converted_root = "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e" - vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" + vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" [inputs.data.previous_block_header] - total_fees = "0x000000000000000000000000000000000000000000000000000000000a524180" + total_fees = "0x0000000000000000000000000000000000000000000000000000000009360480" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.data.previous_block_header.last_archive] - root = "0x15b96c203874595fa1e623ce8e239e955f35474630ab7ecefaf9186f6de51778" + root = "0x093f4c35cf257cc90e68975b9de88b6f52de68d95962d6cba74cd635996c7e07" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.data.previous_block_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" - blobs_hash = "0x0064ab7c96161b0ed1c0209cd3d833c7c4fd199cbb8cc611d9dddf5a2e861fb5" + blobs_hash = "0x00e1070f835f9d392b0941124724d738f17df32a056363f69cf06f49e3a2b97e" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2294,128 +2285,128 @@ root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000070" [inputs.data.previous_block_header.state.partial.note_hash_tree] -root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" +root = "0x23b508d4455472453a68b04bf0a23397cd9a9b3aabd271827304fb773b7709f8" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" [inputs.data.previous_block_header.state.partial.nullifier_tree] -root = "0x19d316424ed6bd56f3016f8dbb6db9a9671f5c9bf9b3507600751ffce4a4d227" +root = "0x0540ee5badb60213c4f2650a03ed63f7faee1fa6d3d719d262187bd926d95f24" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.data.previous_block_header.state.partial.public_data_tree] -root = "0x07ca9f2bfbdd89f82d057d91ea89021e1400ae7700b2f372f73bd33696a55e5e" +root = "0x0d3efd3a30cd51ea23afaf0bc44cb39116683c5ee4e3454d83bb245a609a06f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.data.previous_block_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f25" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c41b" [inputs.data.previous_block_header.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.data.previous_block_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.data.previous_block_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [inputs.blob_data] blobs_fields = [ "0x000000000000000000000000000000000074785f737461727400000c00010000", - "0x01a22ec4be49f6045e5959b16107fbe027e5163328570d0a2238b42e90854bad", - "0x000200000000000000000000000000000000000000000000000000002bf4a9a4", + "0x1bbb113d6320a99e3b5beed857942beacb2fbbcaf49b23e0f3fa1b6313d1c6c4", + "0x00020000000000000000000000000000000000000000000000000000241887f0", "0x0000000000000000000000000000000000000000000000000000000004000001", - "0x2eb682626c01a7093bb878315b15ae2912a01573f217945f796384a1527c33c3", + "0x2fad19f6707c9fe99dd324709af981e6798112dffcde05540856d8b31e752b8b", "0x0000000000000000000000000000000000000000000000000000000006000006", - "0x006dfd7adf426a182b417c95f4827bd707e73020aaf74cd0ad9c55b6d249ef84", + "0x0546b03e5358a619370fe558c8b69a155a028bb596fa2d447f67645d890e6865", "0x0000000000000000000000000000000000000000000000000000000000002328", - "0x0ea327809af29f9262161a3968d72cc01506b8f8cdf044e5137c36f5f3819bc0", + "0x2ac90dc34164a18105a42c907cae7412e3b45a0aafddb205b165d189bbafad02", "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d", - "0x00000000000000000000000000000000000000000000021e19e0c9af77b5d9c4", + "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1", + "0x00000000000000000000000000000000000000000000021e19e0c9b10f8a49be", "0x000000000000000000000000000000000074785f737461727400000a00010000", - "0x0f2b017e95ccfaa73f79da9b99a7313addfbeaea5137e04caa7381572c482c35", - "0x0002000000000000000000000000000000000000000000000000000014ea278e", + "0x2071712337f4d5298de5426c70a3fea405e6d81c8cc8aee0cce6d26355df3e48", + "0x0002000000000000000000000000000000000000000000000000000012a37cbe", "0x0000000000000000000000000000000000000000000000000000000004000001", - "0x25f9b7fe66cd8d44587d49495460a3197586360ca1d8a4c67986ed009014837c", + "0x2d1eac1e42d7c3c439aa13c046607afffc3fff61484ab9ca6d3cdfa4c0fdd7b7", "0x0000000000000000000000000000000000000000000000000000000006000004", - "0x0f51803a7b1f8417db27e66800d5d17bea83d68ef0b3ac2789dca7609a5c2714", - "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2", - "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d", - "0x00000000000000000000000000000000000000000000021e19e0c9af62cbb236", + "0x25b6f91dcd3f6ddcdfba8a48b4579c2eb345daeadac01b3384cbfc824be226b4", + "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0", + "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1", + "0x00000000000000000000000000000000000000000000021e19e0c9b0fce6cd00", "0x000000000000000000000000000000000074785f737461727400004600010000", - "0x213e8c2d4e24eb31225718a7bc377e7ad4cb1386facc97da323552af33a4022a", - "0x000200000000000000000000000000000000000000000000000000000a524180", + "0x300c547b551ccc470622bd0b6309069279b1ac27827fd54ea911bdda828dc523", + "0x0002000000000000000000000000000000000000000000000000000009360480", "0x0000000000000000000000000000000000000000000000000000000003000002", - "0x1d59027a04b6d8722da2f6682a3952b2c7e36f33a4277aae37d2154dccc37fa8", - "0x0193d7e7bcf2ed193edcf2a5e67f3b3cc3612c31aa813d70a7cf10bfb833c587", + "0x10c6d19a0cd4edb937b547c085011e232e01fcddf920a0169e8fcf7728409c94", + "0x270cb9b3b95897c3df8b4f613a9381e420cc41bb8838788d13d882c8e02c9d6c", "0x0000000000000000000000000000000000000000000000000000000004000002", - "0x199c3591dfc143ada897739f620077e33bee4d0f066157b6ef3214e8027e983d", - "0x0f6984e215f59086cd7e14a7b38a2cb6d111980094fff53fe0eef0704d324e6a", + "0x24d034edf050c4e950b470c2a927ef8e8d87cee6956ab2eaa88d99da11e418c3", + "0x0a70dac40b742ffe383638a40b8833c4542a8c760b09de34e4438ae1ca8f2ca5", "0x0000000000000000000000000000000000000000000000000000000006000002", - "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d", - "0x00000000000000000000000000000000000000000000021e19e0c9af587970b6", + "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1", + "0x00000000000000000000000000000000000000000000021e19e0c9b0f3b0c880", "0x0000000000000000000000000000000000000000000000000000000007000039", "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x02b411799c5ad79db3fd514b02fb51c1f49dd8be5621c46bf160f4a3dc7d0ffc", - "0x1c3f0a787cfb9072724e7834859b0386f084645878dbc643cc630d4252356517", - "0x0001b8069f641741f03cba22ea69687c8b761cc5c9aa962a0279f26d88a25f12", - "0x00312c43ba0ea39a27fc6dbe0d519a83f0d567551482914eecb6070cecf32552", - "0x00d207b40a160299917442f76d657454b58b7ca4de8d54b77345594119451d89", - "0x008761c94d42b721ca9c6b996f646a3141e38c27bdf0f4b20bfd8a548e31d53a", - "0x00e3aadea7c78883f09b337e7fc9b0a33d07e784df87627d4ad76de26977fe38", - "0x009c836fdf3ee1c3d777884b9d6c792863fe19a3ddeb6cdcdde6630ff375b242", - "0x00548a28eeb58cbfa41258bac6a9777199f228a5af8f9d4dc93f0e949b33f12c", - "0x000c309601a8189012c3d5922156220a0b03d0da71a5d3b6be0598c4295f8446", - "0x00911ce39ba02a48cc557cc35f8fbd512f63b0eb25241d25fb7265170429e7b4", - "0x00b783b163131c673c5d2a27ef22adbddde875c7b8c86647b56a198cde1e4b9c", - "0x003f7233ee14e5b50d8ac0c8455d9a5f7ea253c1ea0931ccd0585e5116bd5c31", - "0x00710228ce335215d56a61c231b320a9f67d14d15ed2ecd54dc1111d5fd9c704", - "0x0056738c53d342f7405702ead275607e6c9d1635de94cbab5360a7245f8f8d94", - "0x001e8bc8032e724b119485ff1ce6a90b43c00982cf6ca86c113a891ddd02ee38", - "0x00332d23ab997028189a3cbacfd6e3a1b4ce8290765fd51dd91b0cfbc23e351b", - "0x0072e4c322183891fd4cb5fcd362d7ad298483726128a17f38f8a4666e10d2b2", + "0x2ef2f0966e925458626b1092dee031c1e8f44268e2c68040844cfcf184454a2c", + "0x0fed111dc6d67f2331aa9596a0a303179e152f88424d013dc149e4a0ced95c12", + "0x000183ae526182288e7c495bd769407c8f199363992b1b018a37c908848c89d2", + "0x00b2efd0120d28b14f5226ddb1b6848c3f21748c7bac410b8b4b8494616d90d3", + "0x00ce17f438e2f73b779c76f357d1e48c3d8cb0a32585777096af43b2fcda351c", + "0x0033a1bc5c1e7bc0bb6da58da35e7939ab632452814c619c96c61c3929942133", + "0x0050be3444243de8fa56e98a4800d289071e21e2b903f921b141913440a80ed4", + "0x00da79c2a2a9130418fa1c4be4dc02c6526bd0382c32a7ccea24e5983ad4b9ea", + "0x0082a09bcd8045bc58afa1d82a360d30819170bc18dccfa8401045a812756af1", + "0x007b3fb82d901ed69a6609abdff5b404ced6fd0ab3821d899b6bd89ff7c16755", + "0x00014a758cf688bdcfd26d123834ad4389df831f16ee88cf880c9d79a8599b58", + "0x001dcfb4db568d420f7a9dee83d97a721eb32ac8b9e407c79a8663b85c01ddf6", + "0x000f20aad3ad17eae39a67418af6a0ead8f9e5ecf3da56cd36480806ab9261ba", + "0x005335e67d65896b288e120db0db3c06d94e04cab74a89e62f8b8d8c36feab65", + "0x0025b0fb5bc675d1c92abd7207c19f581ff1f2878e847457d62d1ab39848cf93", + "0x0025ea3e644c64b7e3cc3db9c43bad2597b565f960af48616f378e74e9a51c60", + "0x007513c07849604c32db759363ccbc17018bc07b77661ea678b9217e99880b7e", + "0x00a33848206f14fd7feb1f6089982b56ebe5c55bae16ca9cbe4fd6ad5650ad4b", "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x11eedde76ab269afb20c92e33ea1cff613d3a0451efa3ee9e62402475fe47e6e", - "0x1e4458b12b705c33280717eedd2e6d4c4391ce17a7be78b0fac770db851e0f17", - "0x0000424028bf907b7542712d02cb2ea529737f4cea2e44b26c06bdcac325e211", - "0x000e76c26606a75d1f09c48e2283673a39bae77f23cfd23eb57df0cc2b45085c", - "0x0080170634cd20da16b4230faf71d0a454fb777e28361ddd7522a95427d71e71", - "0x00452f146c8a66b7a4b2c5d72a0d4f938845da0cb3e61e51a73559dca278a7c1", - "0x00b1e659c5294a33827419a0d46fcd67933d0190316a2078644d454727d9aabe", - "0x00fc0658cc5965e5e40f780645b09bc0abfb387a9da02384e1ed4e4e83aef2ab", - "0x00a5987cda13351be669609ec55e942964dea9b153d6ade75aee7b2da232e230", - "0x0039d90f1d387610b0aa69c768a3faae5e7f3feaf3e9b13a47de08b47ab11e45", - "0x002d79646cbdb01953f8a8ec21931934bee0f8422997f2318d63d593b28856a8", - "0x008c97eb440524e2d2ac31902b95f001e22dc8e2bcc88fe8a90d4e90e7babc07", - "0x004428e5ec1912a69ef9380f4aa0684b33fe96f3139db39c888ac6ca2606f452", - "0x00b8daeebe88d6973636184e0fbb8ad8b21d49de7cf6d4c8fcc95c77ce7057ad", - "0x00fa36c8ae9e92c4570039cbfd73ddfa019ee45fbafeb4109e5e0e9204a82c13", - "0x002633aec59551949872b213e2a64df81eb18122d04fbc9c217d0c497fbc55ef", - "0x000fed0a7f7244b5a02c12b4d1e77d10a9078683cf04274d766b2442210f3166", - "0x00abb48f5415a8de8075a41879aaaa9a3cb2577f4c14a131bd0230af64cad504", + "0x12adabf6794d638d1130f1646625da2525e481334b01a126529aca1d2b636932", + "0x0d2eebf1ee16cea2e649348c6b85317379129eadb3e3390fe7165385fb65bffa", + "0x00018ac71a593d3e4c3c6860fda842925eaa7f63715750f3a03d0e1455f0074b", + "0x0083ae538b2e4be96a995f8e7211f065179883a8135cd1b151b3816b50b31a81", + "0x00e3af379e025ef4b65c8eec1d0be683a508c037c8620a18cde2bf8a047cca65", + "0x005139f578102d188b42ff2c44f21b2261a422ee4f968fd602a54c9352b866d3", + "0x00679fb7bd5da6cbe1b7ab291ca7c373c89cee08bed6d1452e28354564d6f4ef", + "0x001e75a6d8af18a043ce4bd75b083c85eedb64ca6d6cf4702e84f57e3d68a55c", + "0x0057dd8e36c3ceb6c01a89ea9ba3d8929bf8c9f98acd6499ffee640929608469", + "0x001336f10b949138baeb8801f65f23a270df8ea636cd98bd03229f0889453676", + "0x00ccf40be6b766d244ed8cb3ba7773f18e61765ee828f64b08ca20a873709999", + "0x009f3e0c90772c8e50c67f0c4fb2109a55848ac89af71d304abad4e938691307", + "0x00956e27e5d27d77e3cb8248097013716bd7817da725b4723731c1b18b3b1672", + "0x00db86f09ebb5bb3f10e0604884f8e0b3dc118aaa0a51a9a6aa806b15513dadf", + "0x00f3ea37702e40123a57e17b08515367a4cccd87537e84050cb5a87ca04329b3", + "0x005efa2826b332ddaf6ee5d8d72e3c317314972d8f4a8cc90fac5948f8d115fb", + "0x00cb9c913d00b996698eccb0810f3c76f2487291b772ee78cbee130c7cb5cbac", + "0x00c1c311200aa33497d9e7089ba27a168e50ef54edbe46ec427d518cef8a8a75", "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x0790f12116d7e4d9f0259341202c9c5aa13c881b29ac54f8c812f8a86869b9a6", - "0x19b56c5876b3a9bfb55edf9cb38a2e056fc7fb4eefc826a85ad1be40c595a30e", - "0x00003885733851f093b8a537c516b47b6005e85ce53428267baa915332b78916", - "0x0098312de8c3cbbdeae424edacaddaeba77f228d03961b33291567c64d1caf17", - "0x009d4fd7d530f2ed393be03504dad9c01ca0af698f52d9a119b6bf91ad41567a", - "0x0054f2aa223853743ecc10cc3060c87dc167d421d6076015f93304331523107f", - "0x00c7631a3dd7183ee272425a76e8c8a660778426ac8ad64613ba8f4865b72391", - "0x00af1cc986f63aae6c81ec602aee2e187386a80e2e3130b8201c2bc1fa511cfe", - "0x00e82e356895baceefec7439267f7de383ffdc49984b199b781733b598d0aca1", - "0x005b4de81e0e67debcf822a835c403ecc7be601de5adcd11cfe577e19aaa8600", - "0x0055ab0963d72b3a1884f1170118765b3eddd0928e826aa0f5957940966bef14", - "0x003f89d05b013942a8bbef0c73cd0af9fa8c3b5692f1a4c405444aab4b8671d3", - "0x0092fac88e94a3218121393320215a0599cad8d75597710c3786c2c5f097e895", - "0x0065b0bd8d67f0478a312a08c8d89d901b07a18410d15d95cb9409f26ad7d0d8", - "0x001483c9da3b6bc997c8c0626ef61055116fc2cf9214934c7b6fe894808cdc50", - "0x008a89f085d69862902f2228ce1b7fa696e9f1197cc7d230d2f4b7d8d7a00d3c", - "0x00af53dcbfbe40616c079981f43fdb0cf9f4b00a55589902f49e215c79d16d00", - "0x00be4d828be2d3f952ed4192c3e34fb2764dc1d341c518925ec914378ba0ed14", + "0x0dce44966d2d66e8329d8af8a06abc45938abb7e1f700e17fc2c45452359d7df", + "0x2d380e60be05ee92f163b2d39fc0d6284331afec88d6ef9a7b5d020aa2cf4e4b", + "0x0001365ffaed431373d312a24fca8b98afc6d9a68e945decec24b750888f487b", + "0x0054c78e1d12b4f5a0ff11d61d055c1dd4c03414fec58d339dae33f05189cafa", + "0x00100d9af6a86350e4b32543331d74d04c43430c8fc6657dba933baf8dbb0541", + "0x000d179071114b32fce70ea5300461c4ebab2380033c0b9839c5e58cb64f7ddc", + "0x00cfba48371531ff104eb7813c6ed3b27a11b57c6a28fac8241ee959251b7f24", + "0x0081ffacfe0d3006e1e753d497ee11a905d4c565581b0e08c49cee817de6de7b", + "0x00ded3c30dfa27837c1ed7bd0545bb069254c4d97eac53334d5d273b1da43272", + "0x00e80e3ccf9ceb8b859f24c211cc598665ad2a0e0e1063e1f3f8c1b2c103d6c9", + "0x004a7bf7cadb2f444ad5d1ccd7b73182f601a8a09a0ee1f1c027589bd7283959", + "0x00a5b1649c2918837ab939612a38f0cc65dec9c16d7f0d2bd5f5d7c6f314711b", + "0x00853174cf8ba4dfdce1bd7e1077670b85356e3782fb616534e9257319d0a0bb", + "0x00765b900dfffabcf0c25512863022d94e20ffcc39a8fd5e67a11bcc25902049", + "0x00d4643d2b64ad36769c8c5ab66dbf0600e39c4966870f4777438dbddde4c595", + "0x00430f93dd2be9f97ea7bf83fb3840a4d18f358a4ee62aa4920ded111f5bdf24", + "0x0047370477ac2afeaed310044e386bafc01de7563dacff0dc2a341ca28661996", + "0x0028db61262553bcf785e1d830ce17ca0456843c87d165b3000adba255629166", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -14613,12 +14604,12 @@ blobs_fields = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -blobs_hash = "0x0074c51b4329d9da5da68499ab14af02451bf4ed00d52efd057db5d53e6f1431" +blobs_hash = "0x008219bbbbd1f06459f889e2b6c7c20ca10bec6940c6a61c703ae0982d8f8983" [[inputs.blob_data.blob_commitments]] inner = [ - "0x0080fc98f548e26e38084ad23a25b1756ff9a218d289f7ae7404f5d35017fad1", - "0x0000000000000000000000000000000e43b628bf9cc36e41a23048021d58a084" + "0x008e3e966f1e3ed6ff0ceb4a53ea83c4a44951f7e2ee414aa74955db2fbd7e9e", + "0x000000000000000000000000000000309ebd9dc47d9362f35c40d0c80518e6a5" ] [[inputs.blob_data.blob_commitments]] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml index 811144ca7f89..334b43dd15f9 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml @@ -3,56 +3,56 @@ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x000000000000000000000000000000000000000000000000000000002bf4a9a4" -accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000013c36" +accumulated_fees = "0x00000000000000000000000000000000000000000000000000000000241887f0" +accumulated_mana_used = "0x00000000000000000000000000000000000000000000000000000000000122f8" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" - protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" + vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" + protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" + root = "0x12d15aa5fc47bbe4dc364bd694d8f18bcd201582f3f8acaa8d2deb85a0157876" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c433" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" +root = "0x23b508d4455472453a68b04bf0a23397cd9a9b3aabd271827304fb773b7709f8" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000001c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x19d316424ed6bd56f3016f8dbb6db9a9671f5c9bf9b3507600751ffce4a4d227" +root = "0x0540ee5badb60213c4f2650a03ed63f7faee1fa6d3d719d262187bd926d95f24" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x07ca9f2bfbdd89f82d057d91ea89021e1400ae7700b2f372f73bd33696a55e5e" +root = "0x0d3efd3a30cd51ea23afaf0bc44cb39116683c5ee4e3454d83bb245a609a06f7" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008e" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" +root = "0x23b508d4455472453a68b04bf0a23397cd9a9b3aabd271827304fb773b7709f8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x17e6de2c211925553d72e019641834a07e6a736ae1abc90a00400ce021e5c703" +root = "0x0f9db5b590fc9ce3b0d46e37da50c63204f2f2f76a3e440d6bcb41d322cc01a5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x197eb345e67372c12909358c4178af8299b9dd3d6a197a1d0ce6999f26c52ea8" +root = "0x196778869f861bcb4811a2a68ca142be905d298a9e2f66f078eea1e4ab8409d8" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] @@ -81,14 +81,14 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d", - "0x00000000000000000000000000000000000000000000021e19e0c9af77b5d9c4" + "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1", + "0x00000000000000000000000000000000000000000000021e19e0c9b10f8a49be" ] state = [ - "0x20f339cb5d0146fb675875e3192aef07bb9aabc88b1b0782d20462311b4ffe1a", - "0x02199d7af84fb789e1d58b4cb0b2662b620d6bf56bdae3891d8bc1ca5b883faa", - "0x17c38189dfec26828207773508780e147f7048b1040f0201d74273ef06aa83d0", - "0x005561318da097c32dff4bbd09e34a9e1aaa8cf6fc3c72b48a59cc133c84bb15" + "0x1acc4f2d34eec3c2cf2054d250a3eec93dc0ea9ee611ec0a416f1bf950aed432", + "0x0817b8c5d8a2e1190ed7d49f54d3e4f1aa80e32ec012a6031ff93b82e5647650", + "0x0bb7395282f88ed7aec9ce85e9703a32d764b812a553d3e12ca263b730d33ca9", + "0x23a02cd65ff3aa7b46cbabadbccf27cc2db9b565467f7730d3dc7b5b440835ac" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" squeeze_mode = false @@ -654,101 +654,91 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000041", "0x0000000000000000000000000000000000000000000000000000000000000042", "0x0000000000000000000000000000000000000000000000000000000000000043", - "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x0000000000000000000000000000000000000000000000000000000000000045", - "0x0000000000000000000000000000000000000000000000000000000000000046", - "0x0000000000000000000000000000000000000000000000000000000000000047", - "0x0000000000000000000000000000000000000000000000000000000000000048", - "0x0000000000000000000000000000000000000000000000000000000000000049", - "0x000000000000000000000000000000000000000000000000000000000000004a", - "0x000000000000000000000000000000000000000000000000000000000000004b", - "0x000000000000000000000000000000000000000000000000000000000000004c", - "0x000000000000000000000000000000000000000000000000000000000000004d", - "0x0000000000000000000000000000002b6175f3c2d13fefa852197a9e2c1ef43a", - "0x00000000000000000000000000000000002f757ec74e1efc65699cbf84c0c932", - "0x000000000000000000000000000000e696919dd11693741079c5f5dc31eaa606", - "0x000000000000000000000000000000000029a584f282ffbaf879b2e98e9c6d1f", - "0x0000000000000000000000000000000e0ecb5505aceda7d182bb0d8233b62abb", - "0x00000000000000000000000000000000002fc1534f08e1a31feb184dcca0e5a8", - "0x0000000000000000000000000000003429c14c7fc9ca2ba50d3575f6289650ec", - "0x0000000000000000000000000000000000213865498316e80d91f45716363c7b", - "0x00000000000000000000000000000066e3382a53311b8961b6164bfff9de5fda", - "0x00000000000000000000000000000000002b256cdd48a80074a1e977d5787114", - "0x000000000000000000000000000000ec8c6556756066c63462d030dad0f04a24", - "0x0000000000000000000000000000000000103236f5e8396a3dfd3313f4b863f0", - "0x00000000000000000000000000000061e35814c22e7fb118094876a02122ead1", - "0x00000000000000000000000000000000001f3fac6355d8ea84bec274abfcd055", - "0x000000000000000000000000000000c3f8047edbcdc2f5a62cd5d73e39b0042d", - "0x0000000000000000000000000000000000245a096371cf6c925176a147c37814", - "0x000000000000000000000000000000b075107c5961c379bed15f2fd241cc989f", - "0x0000000000000000000000000000000000187f95acf56b4f583054e3ea03103c", - "0x00000000000000000000000000000096a7bf259b81ceb4d1d447844c7b98cf2f", - "0x00000000000000000000000000000000001fdf4d64bfe977846272f1bc45ca2f", - "0x00000000000000000000000000000035d93826436a59665e1b02efd2617f91f0", - "0x00000000000000000000000000000000002823bca05aa8856d0a0e1073161a26", - "0x000000000000000000000000000000eadd571871d32b3dd0836dbd236cd53e21", - "0x000000000000000000000000000000000024e3e3e65acc31decea46ba97d7157", + "0x000000000000000000000000000000307f5b8d76dd2a6510221d72ef2af872de", + "0x000000000000000000000000000000000021c674ae84acf95641d459aaeebf73", + "0x0000000000000000000000000000002e1d308105f1ae6bed2310a0f6f3554c6d", + "0x00000000000000000000000000000000001645f93a33f9454bd3a48f0435ab7c", + "0x000000000000000000000000000000f9514ed6fb8f36b60052b4a7ee87b58891", + "0x0000000000000000000000000000000000236c0e98f540a52818d53063f80ab3", + "0x000000000000000000000000000000093d4fb792c433f8a3f78651fbd00154bf", + "0x000000000000000000000000000000000015fef1f8ac1fa0afe6d4b86d0703fd", + "0x000000000000000000000000000000f3f1d5db5cd86529eb4be793a1c09c90d0", + "0x00000000000000000000000000000000002b1c0b1b6e6ff40a1db0d56b92e48c", + "0x000000000000000000000000000000c87448ac0aa0ac0289540732c0be55a27c", + "0x00000000000000000000000000000000001d4b1bb612a4e03e99d6a34eb8a19c", + "0x000000000000000000000000000000653b6a66eb5f828a305feebcc32e6c4991", + "0x000000000000000000000000000000000022cb8bb34f30da3b2cafa6bed058d2", + "0x000000000000000000000000000000cf167ec9502aef45bcc3e9532e0c35213d", + "0x0000000000000000000000000000000000089988b259ea79bc7e5279a584fcca", + "0x000000000000000000000000000000559ea843cb44625df56c97d84fd431af08", + "0x000000000000000000000000000000000007419e3e6e97977939958acc8a257a", + "0x000000000000000000000000000000a5db67870c6c3fcc896f2837fe8861abf1", + "0x0000000000000000000000000000000000104e397c72db51d5e8ef949bc4a736", + "0x00000000000000000000000000000018728c390bc83fa2ac2ecd34989b3200c3", + "0x00000000000000000000000000000000001fc6ff9c5f27febaa9bfa3efa16c42", + "0x000000000000000000000000000000ace95fb022b84dd977890e6b4b6e2f02ff", + "0x000000000000000000000000000000000007d5e1c80a25150fcc9d4e5069a8bd", "0x000000000000000000000000000000e7bab6896d9724b5b46b796551dc5feed2", "0x00000000000000000000000000000000001fd93debdcf16cc93f99efd69e938d", "0x0000000000000000000000000000004b94434e1705c9bc2a4f5b2bc2a05c3c03", "0x00000000000000000000000000000000002a29d5563fd08e454dace1605a1aa5", - "0x000000000000000000000000000000ff5bbb821de840dc75415302e866c12765", - "0x0000000000000000000000000000000000067f5c980beecdf7117440a823869c", - "0x00000000000000000000000000000090aa429aaf305122ace1e0a27b94e3ed4e", - "0x000000000000000000000000000000000028ca011224355213d944fbbb130741", - "0x00000000000000000000000000000034a42c54dd6a7a50b984a13fb422e625b1", - "0x000000000000000000000000000000000010b5fb9abe61da63f98f2752b47065", - "0x000000000000000000000000000000fa8d9f0907a53c565c1ba2ba66a5c7b33c", - "0x00000000000000000000000000000000001a262e490e796976138cf749a5ceec", - "0x00000000000000000000000000000075ad9a3c0f8b394772b8abebcbc06cee90", - "0x00000000000000000000000000000000000a422140cad0bbddca8e9534fd8ece", - "0x0000000000000000000000000000009ec0bd708235c4ece4608a194e140d3a51", - "0x00000000000000000000000000000000002d93f3acbef1f2fa962d72944d88c8", - "0x0000000000000000000000000000008ad2b73ccaed536cd01a61db28c988a752", - "0x00000000000000000000000000000000002c274a3e097fd93dd757923f5953a2", - "0x0000000000000000000000000000000806a009e1e23e35b764bd023c6b7b1107", - "0x0000000000000000000000000000000000114aa08086af1c1a480a5bb8c81d7e", - "0x000000000000000000000000000000ea3c78865aa82bf7671761ec907fcd2376", - "0x000000000000000000000000000000000028f54754322b38ac5d5cdc8ad37f6a", - "0x000000000000000000000000000000e7ba887ff58001b4d1e7447d82810c26ca", - "0x000000000000000000000000000000000000f158075638c4b079d9693433b046", - "0x00000000000000000000000000000059e018fa8ec807afc030291f549e713cb8", - "0x00000000000000000000000000000000001e6adcb9fa3319214663536d0b17d3", - "0x000000000000000000000000000000a6771cc12bb10502caf47d1bba993cfaff", - "0x00000000000000000000000000000000002116eea84a66a9bf9613532362ec70", - "0x0000000000000000000000000000005839a8c2c4e9766bc1bb18f79c046be6f3", - "0x00000000000000000000000000000000002c4b1591f622a8c27f241d567390d8", - "0x000000000000000000000000000000f547cba6d2dbd12dc3f8a1859291015a6c", - "0x00000000000000000000000000000000002cdcf706bcef5db9663125c0353535", - "0x000000000000000000000000000000ca8a488cd9d8d5287df55cb19997f20c3e", - "0x000000000000000000000000000000000020d8ea36ab67611f4048dc8bf31456", - "0x000000000000000000000000000000a1c551a28f70af0cd4084be71f9483b6fc", - "0x000000000000000000000000000000000019272a54f448f2483657b5ea18ae2f", - "0x000000000000000000000000000000a0ad7e19dc43911db3307e671126cf0544", - "0x00000000000000000000000000000000002938a45db30a1b0c5cb1052ec938b9", - "0x00000000000000000000000000000075266396925b7fc0abf3fd39bbedfed21e", - "0x00000000000000000000000000000000000037bd03045c5c5a92483be3dd7866", - "0x0000000000000000000000000000002ad127759a8da66ac9e6760e700fa7008b", - "0x000000000000000000000000000000000008bcd4eb5135596c29ade1cfceb11c", - "0x0000000000000000000000000000008ca6f75ca729ce3c2bb6a6a24adb6c4697", - "0x00000000000000000000000000000000000b77d25c1b8a06cdbb3c6a0103cb54", - "0x000000000000000000000000000000d5ef2ccb938f0a93755a3eca92fbb9fa6f", - "0x00000000000000000000000000000000000d22ac2d9c3d4fc672f645d38a017c", - "0x000000000000000000000000000000fd421654e64dfbfea05dc01c334d2427ca", - "0x00000000000000000000000000000000001795d96cd79d7fe8e7282876a72768", - "0x0000000000000000000000000000003bf630bba4a42f3f3fb78a202600cc259e", - "0x000000000000000000000000000000000012c87f63ba30ca463150e9220bf281", - "0x00000000000000000000000000000003e0f898de5dfcc0049b0933abc8695d5c", - "0x000000000000000000000000000000000002ec14c4e2663cf563a812cc207605", - "0x000000000000000000000000000000369c65a86c716967d647ee9b48f7e1ee26", - "0x00000000000000000000000000000000000f244cf31bf8de7bf56ff2c798455e", - "0x000000000000000000000000000000d07a5a3819cd5209a4af69fbfd903051a8", - "0x00000000000000000000000000000000000827cddaed840173510b6d02135867", - "0x0000000000000000000000000000002d88bd0a6a7c35e1d811d62d218f6778bb", - "0x000000000000000000000000000000000019e4acfadd45da7f2e0b79e51d6b9b", - "0x0000000000000000000000000000002344cf0ad2c40fdd81b060071782bec289", - "0x000000000000000000000000000000000019717740651cd7db4dee1d8a3d51e6", + "0x00000000000000000000000000000001ff2ac57b1c52fd3a5589a5ef3ef608cc", + "0x00000000000000000000000000000000000ae1f6d097efb73837c888206b5627", + "0x0000000000000000000000000000006a94cb27951e584fc7f6a77c685ad6b3d6", + "0x000000000000000000000000000000000019033c84dd0600c909bb8890907b6c", + "0x0000000000000000000000000000002f797ff83a0322e549a331c3e371e42317", + "0x000000000000000000000000000000000001682d1c02a03f8a86ecf633d68035", + "0x000000000000000000000000000000264c49167f0708052d371dbd0b9db133f9", + "0x00000000000000000000000000000000000def14918ebd1ec70252b1aa4f2f30", + "0x0000000000000000000000000000005a0ea3aa1dcb16c1e378a12776139175e6", + "0x00000000000000000000000000000000002230ef6d2bbfa1e43387c54053acda", + "0x0000000000000000000000000000002eba4a74542fcfc0d0c9f20f4266c29be2", + "0x0000000000000000000000000000000000122782fec208fa2da7a3806b3f0411", + "0x000000000000000000000000000000e47cd90b2766343c427897b438440f85f0", + "0x000000000000000000000000000000000001843b9079a49fdcd73c16b776afce", + "0x00000000000000000000000000000053362ad18d8713df3273e67f27a98bc375", + "0x00000000000000000000000000000000001a78a3a8232eb885f480c958fe96b3", + "0x0000000000000000000000000000007d034f697037899c24c6eff17ec8ec99b3", + "0x0000000000000000000000000000000000237adf05233c7587b7816cc71e1206", + "0x00000000000000000000000000000083d2a090d67772f3c78797cee894b1563f", + "0x00000000000000000000000000000000001b6075b87892de831d14dba4b42ca1", + "0x0000000000000000000000000000009e67d900ce38bc0a8ba4ba574627e95535", + "0x000000000000000000000000000000000023a12ad8dc157995bee182a1984bba", + "0x000000000000000000000000000000f8611d968082bab97c4caff11d8504e7b2", + "0x000000000000000000000000000000000023747bf4d19033795b66878bc77504", + "0x0000000000000000000000000000007012d641797376834f136a3cc9239b1922", + "0x00000000000000000000000000000000000bc4036aff2fd78afa72b53d26ea9a", + "0x0000000000000000000000000000009f79a73ba8c460801141cfef6a699f52bd", + "0x000000000000000000000000000000000011c13766ad192df4ddada5b412b0e0", + "0x00000000000000000000000000000057079418ae7686eb442cc4a9e4fa08a908", + "0x00000000000000000000000000000000002ae5e170f3e228b1ea2bbcbd277f42", + "0x000000000000000000000000000000da3cef02586fd7acdb2868edec4cde83c7", + "0x000000000000000000000000000000000001e2d8a35f8d8d85af2f433537c377", + "0x000000000000000000000000000000f9e997bb1718df60f3f958a827db0eea9e", + "0x000000000000000000000000000000000021fdeb56e87b959d2e0d48dfc5517b", + "0x000000000000000000000000000000d5110e9037e70d55d6c726a7608703009c", + "0x000000000000000000000000000000000012d7b7a753bffe46b32fbf04299da3", + "0x000000000000000000000000000000d33100f3a27346c959de3636e67373bad0", + "0x00000000000000000000000000000000002ea5a3a3baec5d0f9ace2c6400d566", + "0x0000000000000000000000000000006562dea7d8149e7e1b43fc816fd8eacbe7", + "0x000000000000000000000000000000000019b679db1fbc606804a344b7c338b9", + "0x0000000000000000000000000000002cb02cc09d5c9dc19cc3a089bf6027f0c0", + "0x00000000000000000000000000000000002959370c7abaefcf98ee27bf19313f", + "0x0000000000000000000000000000001592dcd3bb305e32b40619d9135153f03b", + "0x0000000000000000000000000000000000282d2b2c5f2bf993517721fd2d2b1f", + "0x0000000000000000000000000000001acd10314f56403d936c89faaf382c46c0", + "0x000000000000000000000000000000000009b9d53924cf543750b6d278659b6f", + "0x00000000000000000000000000000094f08329658951cbed51f33549fe64ab5f", + "0x0000000000000000000000000000000000164697c899d232d842f48ce348f492", + "0x000000000000000000000000000000afd86924f1e86aa270ad8c6da8343f4a77", + "0x00000000000000000000000000000000000314a4b080634c56931653166fbabf", + "0x000000000000000000000000000000eb1246f4419815e47f1d5ae8d6dba6d962", + "0x00000000000000000000000000000000001f313c2da4433c6c54d4af0d2b2b17", + "0x000000000000000000000000000000236795d1eebaf06bfbdb1493a682637d52", + "0x000000000000000000000000000000000011b0eeaa05e3097cd5da0a34873236", + "0x000000000000000000000000000000dad932f24983ce4571cd0ead65267e8e7b", + "0x000000000000000000000000000000000015240dde6f5f8790cc86a5fc2fb794", "0x000000000000000000000000000000e97fb648fc1ff99f9988a73de181e0de22", "0x000000000000000000000000000000000024cae2d5d2c4daefe858889eeb01b8", "0x000000000000000000000000000000e072297115d09425f5612d626dc82f1002", @@ -769,20 +759,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000794f339b4095c6201d34f6eea0fd61fdea", - "0x00000000000000000000000000000000000f54fb9da59f4d7420cf3c8356980e", - "0x000000000000000000000000000000da824040aaaf923948c05378dbd9cbe4ff", - "0x00000000000000000000000000000000000a7b02f4a8af2e5b64311b27e4c6fc" + "0x0000000000000000000000000000001567f3f96a0c53ad32d96de09ac1cae126", + "0x000000000000000000000000000000000026baae0f0d8505282894f5ada72223", + "0x00000000000000000000000000000011679c6c956cae3c86d399a00bb3aa46de", + "0x00000000000000000000000000000000001bd9f4cdafea960e099cb8afad8a8a" ] -hash = "0x0cae9a18e830901d937e8150200d55d6b97b58f12cbe0a8f24c0e50c8bda66ff" +hash = "0x14caa5816578cf92f252792e62335331c3c7b3aba456597e9d2ec7131722bdfe" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" sibling_path = [ - "0x2105487deb54ac9c459b3050270ea0b48ac21bc057a48da073c3fb56dea06740", - "0x1a8ceec79a52f0cadbada4e0362dfd6ef1f2af334809c9bc837825b657cec6a1", + "0x2ef0677eced88cf91ef001e856c0e3e649ab915b579ddcede447fa49fcbc0e2c", + "0x0f410eb6e69a2497aabc2f1686a1bdf90876c704621e028ec62c0341f74560ec", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", + "0x17121585aa6800bb9d9b7250898bbbd170b2458884f8738cd2fdbaa3442b0f62", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -792,56 +782,56 @@ sibling_path = [ rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000014ea278e" -accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000009675" +accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000012a37cbe" +accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000000963f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" - protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" + vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" + protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x1070a4c3e55713c7b4edfb7f2e6a72b93d4572ed8505e2301df36a4bae7f0a96" + root = "0x12d15aa5fc47bbe4dc364bd694d8f18bcd201582f3f8acaa8d2deb85a0157876" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c433" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" +root = "0x23b508d4455472453a68b04bf0a23397cd9a9b3aabd271827304fb773b7709f8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000200" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x17e6de2c211925553d72e019641834a07e6a736ae1abc90a00400ce021e5c703" +root = "0x0f9db5b590fc9ce3b0d46e37da50c63204f2f2f76a3e440d6bcb41d322cc01a5" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x197eb345e67372c12909358c4178af8299b9dd3d6a197a1d0ce6999f26c52ea8" +root = "0x196778869f861bcb4811a2a68ca142be905d298a9e2f66f078eea1e4ab8409d8" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x00fec9702bf49e53078f3b3c896422e73c419867c8b26c90cffda556d29d2a27" +root = "0x23b508d4455472453a68b04bf0a23397cd9a9b3aabd271827304fb773b7709f8" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000240" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x1638127f0b085d1ccccff7f140acf3f91e154550ab9883c863a2f3d297e85c0f" +root = "0x16d2d03407651d0a4f59ce6983dc08b96763914023e0cb5c8c4bb06f8fb22749" next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000002c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x264038ca78601a4472bd12b0052b2e3b3bc1f6382dddb319a5d8431adf6fa760" +root = "0x1b972880f210a5c72190ee2a6753a1a01e6249f6cd172521e0ca51f533fd409a" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000008f" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] @@ -851,14 +841,14 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] cache = [ "0x00000000000000000000000000000000000000000000000000000000000003e8", - "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d", - "0x00000000000000000000000000000000000000000000021e19e0c9af77b5d9c4" + "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1", + "0x00000000000000000000000000000000000000000000021e19e0c9b10f8a49be" ] state = [ - "0x20f339cb5d0146fb675875e3192aef07bb9aabc88b1b0782d20462311b4ffe1a", - "0x02199d7af84fb789e1d58b4cb0b2662b620d6bf56bdae3891d8bc1ca5b883faa", - "0x17c38189dfec26828207773508780e147f7048b1040f0201d74273ef06aa83d0", - "0x005561318da097c32dff4bbd09e34a9e1aaa8cf6fc3c72b48a59cc133c84bb15" + "0x1acc4f2d34eec3c2cf2054d250a3eec93dc0ea9ee611ec0a416f1bf950aed432", + "0x0817b8c5d8a2e1190ed7d49f54d3e4f1aa80e32ec012a6031ff93b82e5647650", + "0x0bb7395282f88ed7aec9ce85e9703a32d764b812a553d3e12ca263b730d33ca9", + "0x23a02cd65ff3aa7b46cbabadbccf27cc2db9b565467f7730d3dc7b5b440835ac" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" squeeze_mode = false @@ -869,15 +859,15 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] cache = [ - "0x00000000000000000000000000000000000000000000021e19e0c9af62cbb236", - "0x2f8a9a7c205fd425506be3ccc4465ae5ce869bb49e59f7e87c24e8694e4718d2", - "0x15de35241ef612130cadf4f9a195c6e08d559c22baa86ca6013e910aa962565d" + "0x00000000000000000000000000000000000000000000021e19e0c9b0fce6cd00", + "0x025f845f99bd290ccfc251ecb488b21c1f879a82e47897e82796547149f187a0", + "0x25915006bc0c184e560c2aef71290d358cc40c30e201f737e08daa98745f59c1" ] state = [ - "0x2881762ad9363d07164b4adcd8fba0d34cac7324b5e6039eeb82a0daa1d7e98f", - "0x041e60c8e1d3f54f35a87c0b87f1a8f99d1814620b38ccc65eb74c795f795b35", - "0x17ce0454dabf60a6eb91b31bb316c45f7910ecdf748fce1b6b78af4c47c95d50", - "0x1f380d4eae917b0df150aa708ff1d825eedbebae0923e6bd7efbcc2c5b37cd77" + "0x2da49f424023cd16a5eccc756778ccc307836a1ffd44c5c1c08b22b0cb0a3cda", + "0x0deab06cdebfd3c70920b6a00629ab11a59489975d29093cba8010cf6690617c", + "0x254ec1f005dde9e9068d437ba828281f3268c5f817f6ba159d28c39deeb36a11", + "0x0561a3f993b86379782b5d7bf39d2eb90ddb64e9df12ebe4b61b8abdf92a2271" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false @@ -1444,90 +1434,90 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000042", "0x0000000000000000000000000000000000000000000000000000000000000043", "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x000000000000000000000000000000521b9d4f83c543b2d84cfdc2bd2a98fb40", - "0x00000000000000000000000000000000001339c78afbaf20ae75727c7b732af4", - "0x00000000000000000000000000000080022768f68ea22b61825c0c21bfb8ac3d", - "0x000000000000000000000000000000000015ff4c9ac04d118866917d85503b7e", - "0x00000000000000000000000000000070713038ce33770306927dd8ca492322b2", - "0x00000000000000000000000000000000002fee639887369cd3a83579202b79dc", - "0x00000000000000000000000000000061bab45392977e273d132d7cb7a44ff202", - "0x0000000000000000000000000000000000155170bb6e84f41b220e351ccccd36", - "0x000000000000000000000000000000d762b23206e8619049ccdc3d9d72db53e8", - "0x000000000000000000000000000000000027b2187681c7d7d762978a8699d1ad", - "0x000000000000000000000000000000fb6231cdcee4bf02adf80ab4f5b4e1b7f7", - "0x0000000000000000000000000000000000158ff5241a1461fb0a35fd985ec474", - "0x000000000000000000000000000000c4953b141659032c469ce6770f016b7980", - "0x000000000000000000000000000000000006920ab0aa6f66843372f54781ca2b", - "0x000000000000000000000000000000c7af0b22593cce863a4a8ca0b240d074ca", - "0x00000000000000000000000000000000000dfdc634e7b62976f6ce0549fe233a", - "0x000000000000000000000000000000c1d033ae709c039af90b2234226cb5c4f8", - "0x00000000000000000000000000000000002dc468919a1be7cbd81296c1733377", - "0x0000000000000000000000000000005d502fdc01a9736a9219cf912d9694a2e9", - "0x000000000000000000000000000000000021aafb24e110636d9df075e9bc6b86", - "0x000000000000000000000000000000a7d84e314ba33098291f60dea80b20d68f", - "0x0000000000000000000000000000000000217076933f7d213145d14d14915da8", - "0x000000000000000000000000000000a16d19f8a7acf7d489e6271afc1b954c20", - "0x00000000000000000000000000000000001c765879c0be34217b869c3b7a9a67", + "0x000000000000000000000000000000307f5b8d76dd2a6510221d72ef2af872de", + "0x000000000000000000000000000000000021c674ae84acf95641d459aaeebf73", + "0x0000000000000000000000000000002e1d308105f1ae6bed2310a0f6f3554c6d", + "0x00000000000000000000000000000000001645f93a33f9454bd3a48f0435ab7c", + "0x000000000000000000000000000000f9514ed6fb8f36b60052b4a7ee87b58891", + "0x0000000000000000000000000000000000236c0e98f540a52818d53063f80ab3", + "0x000000000000000000000000000000093d4fb792c433f8a3f78651fbd00154bf", + "0x000000000000000000000000000000000015fef1f8ac1fa0afe6d4b86d0703fd", + "0x000000000000000000000000000000f3f1d5db5cd86529eb4be793a1c09c90d0", + "0x00000000000000000000000000000000002b1c0b1b6e6ff40a1db0d56b92e48c", + "0x000000000000000000000000000000c87448ac0aa0ac0289540732c0be55a27c", + "0x00000000000000000000000000000000001d4b1bb612a4e03e99d6a34eb8a19c", + "0x000000000000000000000000000000653b6a66eb5f828a305feebcc32e6c4991", + "0x000000000000000000000000000000000022cb8bb34f30da3b2cafa6bed058d2", + "0x000000000000000000000000000000cf167ec9502aef45bcc3e9532e0c35213d", + "0x0000000000000000000000000000000000089988b259ea79bc7e5279a584fcca", + "0x000000000000000000000000000000559ea843cb44625df56c97d84fd431af08", + "0x000000000000000000000000000000000007419e3e6e97977939958acc8a257a", + "0x000000000000000000000000000000a5db67870c6c3fcc896f2837fe8861abf1", + "0x0000000000000000000000000000000000104e397c72db51d5e8ef949bc4a736", + "0x00000000000000000000000000000018728c390bc83fa2ac2ecd34989b3200c3", + "0x00000000000000000000000000000000001fc6ff9c5f27febaa9bfa3efa16c42", + "0x000000000000000000000000000000ace95fb022b84dd977890e6b4b6e2f02ff", + "0x000000000000000000000000000000000007d5e1c80a25150fcc9d4e5069a8bd", "0x000000000000000000000000000000e7bab6896d9724b5b46b796551dc5feed2", "0x00000000000000000000000000000000001fd93debdcf16cc93f99efd69e938d", "0x0000000000000000000000000000004b94434e1705c9bc2a4f5b2bc2a05c3c03", "0x00000000000000000000000000000000002a29d5563fd08e454dace1605a1aa5", - "0x000000000000000000000000000000c605d0398cd0b2427c3c9c461bb8429b53", - "0x0000000000000000000000000000000000196952a7e4218337f71f1105909c3d", - "0x0000000000000000000000000000006cae2999b90655b65fb2612f6692e2adf9", - "0x00000000000000000000000000000000002dacb567e258b182d2aa0f0c2673e9", - "0x000000000000000000000000000000fa23b5130fb864af7b45be9abdfee90f81", - "0x00000000000000000000000000000000001b5f38c9b239993607e4bd64e1ec0e", - "0x000000000000000000000000000000bdd3479bd2de629e84156d2c0af3b2ef68", - "0x00000000000000000000000000000000001da27039bf77a359382fc0c56838d9", - "0x000000000000000000000000000000e7039a59b6348c66427f2c08e1b4a38415", - "0x00000000000000000000000000000000000d34616a91f79d7613bbfb94ed0d38", - "0x000000000000000000000000000000ffa72e0f4b9857447bc99abb6f83d42647", - "0x0000000000000000000000000000000000193a8bcc5d47c5f43e6cc581ac0eca", - "0x000000000000000000000000000000609f79166c04a86fef382541bd1c5ab9ee", - "0x00000000000000000000000000000000000db5fa9f0bd6341244daf0d59d7b4d", - "0x0000000000000000000000000000009d97a8c8a3a70077827e2478347af83d11", - "0x000000000000000000000000000000000014360d2aa26b853c45cc56f3ee4d6c", - "0x00000000000000000000000000000037daba742d12aec1b27f76d1d8eb3a1604", - "0x000000000000000000000000000000000010c19122bb08b25208f5814a2d9813", - "0x000000000000000000000000000000be2d452540b2e3de92b42c11ac9e70887d", - "0x000000000000000000000000000000000003735685535ef50a290d4f0f8ed48a", - "0x000000000000000000000000000000c3aa132938397ac9298dc4c631930c2bc1", - "0x000000000000000000000000000000000006842deb4d313e699e597b702ee51f", - "0x000000000000000000000000000000de052dfd6c354afef2580b20acf839687b", - "0x000000000000000000000000000000000029a034fd3752a404c9c1d34be06c6d", - "0x000000000000000000000000000000d1760e3a79672913c859049adbc670838c", - "0x00000000000000000000000000000000000e49d5809084137fc7bc71ba11ae4c", - "0x00000000000000000000000000000018da3c85d452ca91d4c8ae233f3d0ca0cb", - "0x00000000000000000000000000000000002c681b077e84d38c1602e9f572a11b", - "0x000000000000000000000000000000c3d40a67c4190b20133a492d8f79fbbc55", - "0x00000000000000000000000000000000002974c1b596b95212c42728a3f49557", - "0x000000000000000000000000000000f79eef4973eea5c82bd426545a37c7ed2d", - "0x00000000000000000000000000000000001ba2cfcf9b6a183c6c6657d58479ee", - "0x0000000000000000000000000000000e0432dd54f4992443978a547a3553f2bc", - "0x0000000000000000000000000000000000257ed05f3910112f34e3a6132c0f1a", - "0x000000000000000000000000000000febd659aed367ed7407b257704072b88ae", - "0x000000000000000000000000000000000019758526889ecf9801abc067968aeb", - "0x000000000000000000000000000000a3f503fe809fcdea4f4c89790ee9476c07", - "0x0000000000000000000000000000000000054ca4d7b7aef2ff8d05cd828cc7e8", - "0x00000000000000000000000000000082e978a687f226b9d9f6c475d76ad7d0f2", - "0x0000000000000000000000000000000000170d4cfd2d18c54304a6d903bf1a0f", - "0x0000000000000000000000000000006fa34ea411efa79fa5ead29b0692bf2b77", - "0x0000000000000000000000000000000000019bf1e5985e2e1a266a8864a7a581", - "0x00000000000000000000000000000024284a91b4778943659263b48bbdb337ea", - "0x00000000000000000000000000000000002fb6187962b45dd22bcb08a54d2f9f", - "0x0000000000000000000000000000000eded336e987654dfa087268cadec1569b", - "0x00000000000000000000000000000000001f1b47740cf8487a80c45c4609935b", - "0x0000000000000000000000000000000eee28b9fc49c81a286626062375e866a8", - "0x000000000000000000000000000000000011e1f7acbb598eb1167aa3ae001439", - "0x000000000000000000000000000000afd2eac7b63630be51019a6bf88b5d2641", - "0x00000000000000000000000000000000002488ee8880b7c23776f33c1f1078eb", - "0x0000000000000000000000000000002275b7c90182400ba595c7685146405aad", - "0x0000000000000000000000000000000000263a1385b1d49c3dbac85c2b943a14", - "0x00000000000000000000000000000099b6b8028401bdf9add9b6a3e9f3f16f1d", - "0x00000000000000000000000000000000002c92c0237e464563a30456b3e0b917", - "0x000000000000000000000000000000f9cf12c30ec2f4e80b51e603a07fa28f2e", - "0x000000000000000000000000000000000025f210d401c32dcfdd334443a6745a", + "0x00000000000000000000000000000001ff2ac57b1c52fd3a5589a5ef3ef608cc", + "0x00000000000000000000000000000000000ae1f6d097efb73837c888206b5627", + "0x0000000000000000000000000000006a94cb27951e584fc7f6a77c685ad6b3d6", + "0x000000000000000000000000000000000019033c84dd0600c909bb8890907b6c", + "0x0000000000000000000000000000002f797ff83a0322e549a331c3e371e42317", + "0x000000000000000000000000000000000001682d1c02a03f8a86ecf633d68035", + "0x000000000000000000000000000000264c49167f0708052d371dbd0b9db133f9", + "0x00000000000000000000000000000000000def14918ebd1ec70252b1aa4f2f30", + "0x0000000000000000000000000000005a0ea3aa1dcb16c1e378a12776139175e6", + "0x00000000000000000000000000000000002230ef6d2bbfa1e43387c54053acda", + "0x0000000000000000000000000000002eba4a74542fcfc0d0c9f20f4266c29be2", + "0x0000000000000000000000000000000000122782fec208fa2da7a3806b3f0411", + "0x000000000000000000000000000000e47cd90b2766343c427897b438440f85f0", + "0x000000000000000000000000000000000001843b9079a49fdcd73c16b776afce", + "0x00000000000000000000000000000053362ad18d8713df3273e67f27a98bc375", + "0x00000000000000000000000000000000001a78a3a8232eb885f480c958fe96b3", + "0x0000000000000000000000000000007d034f697037899c24c6eff17ec8ec99b3", + "0x0000000000000000000000000000000000237adf05233c7587b7816cc71e1206", + "0x00000000000000000000000000000083d2a090d67772f3c78797cee894b1563f", + "0x00000000000000000000000000000000001b6075b87892de831d14dba4b42ca1", + "0x0000000000000000000000000000009e67d900ce38bc0a8ba4ba574627e95535", + "0x000000000000000000000000000000000023a12ad8dc157995bee182a1984bba", + "0x000000000000000000000000000000f8611d968082bab97c4caff11d8504e7b2", + "0x000000000000000000000000000000000023747bf4d19033795b66878bc77504", + "0x0000000000000000000000000000007012d641797376834f136a3cc9239b1922", + "0x00000000000000000000000000000000000bc4036aff2fd78afa72b53d26ea9a", + "0x0000000000000000000000000000009f79a73ba8c460801141cfef6a699f52bd", + "0x000000000000000000000000000000000011c13766ad192df4ddada5b412b0e0", + "0x00000000000000000000000000000057079418ae7686eb442cc4a9e4fa08a908", + "0x00000000000000000000000000000000002ae5e170f3e228b1ea2bbcbd277f42", + "0x000000000000000000000000000000da3cef02586fd7acdb2868edec4cde83c7", + "0x000000000000000000000000000000000001e2d8a35f8d8d85af2f433537c377", + "0x000000000000000000000000000000f9e997bb1718df60f3f958a827db0eea9e", + "0x000000000000000000000000000000000021fdeb56e87b959d2e0d48dfc5517b", + "0x000000000000000000000000000000d5110e9037e70d55d6c726a7608703009c", + "0x000000000000000000000000000000000012d7b7a753bffe46b32fbf04299da3", + "0x000000000000000000000000000000d33100f3a27346c959de3636e67373bad0", + "0x00000000000000000000000000000000002ea5a3a3baec5d0f9ace2c6400d566", + "0x0000000000000000000000000000006562dea7d8149e7e1b43fc816fd8eacbe7", + "0x000000000000000000000000000000000019b679db1fbc606804a344b7c338b9", + "0x0000000000000000000000000000002cb02cc09d5c9dc19cc3a089bf6027f0c0", + "0x00000000000000000000000000000000002959370c7abaefcf98ee27bf19313f", + "0x0000000000000000000000000000001592dcd3bb305e32b40619d9135153f03b", + "0x0000000000000000000000000000000000282d2b2c5f2bf993517721fd2d2b1f", + "0x0000000000000000000000000000001acd10314f56403d936c89faaf382c46c0", + "0x000000000000000000000000000000000009b9d53924cf543750b6d278659b6f", + "0x00000000000000000000000000000094f08329658951cbed51f33549fe64ab5f", + "0x0000000000000000000000000000000000164697c899d232d842f48ce348f492", + "0x000000000000000000000000000000afd86924f1e86aa270ad8c6da8343f4a77", + "0x00000000000000000000000000000000000314a4b080634c56931653166fbabf", + "0x000000000000000000000000000000eb1246f4419815e47f1d5ae8d6dba6d962", + "0x00000000000000000000000000000000001f313c2da4433c6c54d4af0d2b2b17", + "0x000000000000000000000000000000236795d1eebaf06bfbdb1493a682637d52", + "0x000000000000000000000000000000000011b0eeaa05e3097cd5da0a34873236", + "0x000000000000000000000000000000dad932f24983ce4571cd0ead65267e8e7b", + "0x000000000000000000000000000000000015240dde6f5f8790cc86a5fc2fb794", "0x000000000000000000000000000000e97fb648fc1ff99f9988a73de181e0de22", "0x000000000000000000000000000000000024cae2d5d2c4daefe858889eeb01b8", "0x000000000000000000000000000000e072297115d09425f5612d626dc82f1002", @@ -1548,20 +1538,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000df09a35ec29cb8b8e65d374b7ee4b958e4", - "0x00000000000000000000000000000000002a4f5048b3b3a1f217328f560fbb64", - "0x000000000000000000000000000000d05ec9df459e02b89c2805cd568a2f3522", - "0x000000000000000000000000000000000015775347bfde9959a7eeca6a09dded" + "0x0000000000000000000000000000001567f3f96a0c53ad32d96de09ac1cae126", + "0x000000000000000000000000000000000026baae0f0d8505282894f5ada72223", + "0x00000000000000000000000000000011679c6c956cae3c86d399a00bb3aa46de", + "0x00000000000000000000000000000000001bd9f4cdafea960e099cb8afad8a8a" ] -hash = "0x2ef0677eced88cf91ef001e856c0e3e649ab915b579ddcede447fa49fcbc0e2c" +hash = "0x14caa5816578cf92f252792e62335331c3c7b3aba456597e9d2ec7131722bdfe" [inputs.previous_rollup_data.vk_witness] -leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" +leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" sibling_path = [ - "0x14caa5816578cf92f252792e62335331c3c7b3aba456597e9d2ec7131722bdfe", + "0x2ef0677eced88cf91ef001e856c0e3e649ab915b579ddcede447fa49fcbc0e2c", "0x0f410eb6e69a2497aabc2f1686a1bdf90876c704621e028ec62c0341f74560ec", "0x07c008584a3bc294cfed5d5a726d88e5ce8be9a34100232e67e6b790e0a2905e", - "0x1e0cad572bae17a2df76452142b1c240610655ff2d9acb63c96d99c2b03a7b5b", + "0x17121585aa6800bb9d9b7250898bbbd170b2458884f8738cd2fdbaa3442b0f62", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml index fd5770040dfa..d74461d67262 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml @@ -5,8 +5,8 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x00201496223ba670899c10fa0b2a2d65993893162620515ed5d2f6fc25dba2d4" proposed_block_header_hashes = [ - "0x007f01080db85061d9a8f4c700757c51a956538d32ba6c0f289b5222b00f9902", - "0x008cd6b70a977ddb5b158d0fbef9040329d8eadf7f5699be23d72060db634191", + "0x00d6925fb4cf7254e2ee66b40898572b174dbdf302edcf1aaf83aa51df941456", + "0x009469d542322f34a70990065c7e9c00d1fbec31149e60fc12e1b888d41964c7", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -54,63 +54,63 @@ proposed_block_header_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" -protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" +vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" +protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x15b96c203874595fa1e623ce8e239e955f35474630ab7ecefaf9186f6de51778" + root = "0x093f4c35cf257cc90e68975b9de88b6f52de68d95962d6cba74cd635996c7e07" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x2654086cd6d89561f4e67ddcb44940715de36e827be817fbc8617a2e0c02e0d4" + root = "0x1e00091bbbada4c141e65a4b9f6bcc2b33fdf0010ba11a61b9c5b29e8ea4b6f4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000012" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f25" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c41b" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f3d" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c433" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000002396" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001fc2" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x000000000000000000000000000000000000000000000000000000000a524180" + value = "0x0000000000000000000000000000000000000000000000000000000009360480" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x000000000000000000000000000000000000000000000000000000004b3112b2" + value = "0x000000000000000000000000000000000000000000000000000000003ff2092e" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -390,19 +390,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x001841f73fb11082921a49c10432e66ccccdd5607d6da1f5b02c83db3abdfcfd" +z = "0x11684c90ca33ff3152b6813c62d26301a0f547cda2155b84d838ac1b87068cfd" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0x1c60371acabfe17d5bde1152a6d5bf", - "0x182f215cd91016a553edacfe0899a0", - "0x603d" + "0xe80b330a43fc7e1244f512d0bed854", + "0x36de537974575fc03e56983bf95ec0", + "0x5476" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x008b4729283581281f60e84226de54260b2f4b54020a984f38dbc105c8ecd367", - "0x000000000000000000000000000000ddc329f725352424fa4d448a72e3c84f5a" + "0x0084705dfc95733a865ad64569d46d5691066780309edfdda7c8b89643e186ce", + "0x000000000000000000000000000000780889e1f2765774317a5557732881fbe0" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -439,19 +439,19 @@ z = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x2340a66742e66b43f5ecad8af2115647f1701c8595468cff31373853ad0cc86c" +z = "0x05f9b9f01ecfc5d655d08dfebe51a5e175ef30fbb05dd9f36b81fecf985590c3" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0xdcde22002fd28444ac3319fe5b97f7", - "0xfb95b391f75023e9656ae83f9c1831", - "0x2238" + "0x49cf92e06f7f3a6a42a55cf1523554", + "0x6aa399d75935d1b4071bbf90b380d8", + "0x0f27" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x0080fc98f548e26e38084ad23a25b1756ff9a218d289f7ae7404f5d35017fad1", - "0x0000000000000000000000000000000e43b628bf9cc36e41a23048021d58a084" + "0x008e3e966f1e3ed6ff0ceb4a53ea83c4a44951f7e2ee414aa74955db2fbd7e9e", + "0x000000000000000000000000000000309ebd9dc47d9362f35c40d0c80518e6a5" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -3301,101 +3301,91 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000417", "0x0000000000000000000000000000000000000000000000000000000000000418", "0x0000000000000000000000000000000000000000000000000000000000000419", - "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000000000000000000000000000000000000000041a", - "0x000000000000000000000000000000000000000000000000000000000000041b", - "0x000000000000000000000000000000000000000000000000000000000000041c", - "0x000000000000000000000000000000000000000000000000000000000000041d", - "0x000000000000000000000000000000000000000000000000000000000000041e", - "0x000000000000000000000000000000000000000000000000000000000000041f", - "0x0000000000000000000000000000000000000000000000000000000000000420", - "0x0000000000000000000000000000000000000000000000000000000000000421", - "0x0000000000000000000000000000000000000000000000000000000000000422", - "0x0000000000000000000000000000000000000000000000000000000000000423", - "0x0000000000000000000000000000006f2c1a5f17e10178fd03876b3927d8d590", - "0x0000000000000000000000000000000000038c6a1882482227deae88837b904c", - "0x0000000000000000000000000000009f8c32eaf66be9b90ef7ec59051222553d", - "0x00000000000000000000000000000000000d160053e69c78a3596d94e78c94b5", - "0x000000000000000000000000000000eab66dcccbfa174ba0bb4b06f9f17f9fdb", - "0x00000000000000000000000000000000001ff9367cbe604913def51c62d28162", - "0x00000000000000000000000000000064a7ea628a1d020099320bdfc3bbadbc6c", - "0x00000000000000000000000000000000000c9c4babd758fb244ab625e1911171", - "0x00000000000000000000000000000057a3289267c296e58d5cd0d9b82fa3ebab", - "0x00000000000000000000000000000000002c6d00f970a6739a2cd5ae7b97fb27", - "0x000000000000000000000000000000a3990aa32999e7b89aca4c960f1afcc769", - "0x0000000000000000000000000000000000145ee11723c05fea68b17466f55b69", - "0x0000000000000000000000000000002480b02b6d18c475b4e311d017623ccad2", - "0x00000000000000000000000000000000001b3ab53eddfcd6f19263e4cbebe70a", - "0x000000000000000000000000000000a750128d42194ced60b694fec0a56cdfb7", - "0x00000000000000000000000000000000000803e75a27708af6b2248a6d809f63", - "0x000000000000000000000000000000cd6a1b310426e829174a696fbdecbf7f3a", - "0x00000000000000000000000000000000000f00d69b12523082cfbaa9836a8ba5", - "0x0000000000000000000000000000001314e9ff4cfd67a18c1150604e4a685ab4", - "0x000000000000000000000000000000000021dc7eaf4968e0df2bf16dcc714e77", - "0x00000000000000000000000000000021fe9475c92e443e605fc459cf5d49deea", - "0x0000000000000000000000000000000000055257a691bbcd3cb073eb7113f751", - "0x000000000000000000000000000000d425f9ca1bdd28463d5c859c3bf2f56e85", - "0x0000000000000000000000000000000000128b6cd6eca6a4263d051b9bdf0dc8", + "0x000000000000000000000000000000d3bd011c16d4ffdf038a0da461c68a4628", + "0x00000000000000000000000000000000001f7de1cec6421c48566f08a7d8adce", + "0x000000000000000000000000000000707b7dbccc846d9920262b44d9390964db", + "0x000000000000000000000000000000000007dec2c99fb18e1a4a9c989a8c921b", + "0x000000000000000000000000000000069b9fb690cea8cc70a75fc134fea4501c", + "0x000000000000000000000000000000000029318e5528f82dedee463580e5fd66", + "0x0000000000000000000000000000004225621f7bf2038c8ff8f2e3f6201f0328", + "0x00000000000000000000000000000000001cad4f24c5f4decc8ef6fd064bf1b9", + "0x0000000000000000000000000000002a54cc0822e39bd232bf32e30bc9b1f391", + "0x00000000000000000000000000000000000fbe7b5341b2caa2053651aa2f4c51", + "0x0000000000000000000000000000009bb19c8f150b311acf7a0b2995eca38373", + "0x00000000000000000000000000000000002901a7a7774a844d4717028efb6972", + "0x000000000000000000000000000000f51a2dccfd4ca6d63409a1061c4d480623", + "0x00000000000000000000000000000000000eba9cf3d6c2b43dc56a0d22d9109c", + "0x000000000000000000000000000000c534b712d17155e9ca4ca52fb6f4f2dc22", + "0x00000000000000000000000000000000001d368529b9c4decce4883d2d8baa91", + "0x00000000000000000000000000000092ea27c8fd63c3c481968f207b3d8e3514", + "0x000000000000000000000000000000000019bf58e648449af44e78c2516325c5", + "0x00000000000000000000000000000075b2d8ef074eb9957d1c933d5c5a88f433", + "0x00000000000000000000000000000000002eff81d0eb9fb7914e8e6df9a68fe4", + "0x0000000000000000000000000000006207f3eedf70f7a9d9a51e7b1566884364", + "0x00000000000000000000000000000000000c404d7ed5ba5e0254f06c0e35ba62", + "0x000000000000000000000000000000f0096235bf5e1c0f826ad93e64723fb244", + "0x0000000000000000000000000000000000249500ab7b16ca4345c6cad11b64c4", "0x0000000000000000000000000000009eed1a82f362a2a849e30ca0f07978c836", "0x000000000000000000000000000000000013a2ac032c0d52256af7c1a95feba6", "0x000000000000000000000000000000c7f1ab3a9d5e56fa19af7d20fdeb3b9ef3", "0x0000000000000000000000000000000000303115523841b191d7bfdcc5ac091a", - "0x0000000000000000000000000000006105d709a56662a679d3867e6a4e1b1dae", - "0x00000000000000000000000000000000000a2b1e72deff551e043d17eb301add", - "0x000000000000000000000000000000e8e4b6f1166fbefb571cfc9d1a365364a6", - "0x00000000000000000000000000000000000512a6d47a1e558b9738df7c2100b5", - "0x000000000000000000000000000000273ac8fd5f1d4f68e0a572fc18dbbc70d0", - "0x00000000000000000000000000000000002b28fcd301311a0abaed857561e843", - "0x00000000000000000000000000000032e240d36b086891dfaa8318cbcfd86a40", - "0x000000000000000000000000000000000024a0d0bbbaff12ff90ca32af1c156b", - "0x0000000000000000000000000000009b3ca336d5abd053d1d5b55ba29446bd79", - "0x00000000000000000000000000000000001de19f7805815091fc1bf489db091b", - "0x000000000000000000000000000000ee5b251e834fd6241ee53f6e665a081228", - "0x00000000000000000000000000000000000b86276c537a5b5d937fcdee838038", - "0x0000000000000000000000000000005da475a297452bf3a0453dd6301e9f053b", - "0x00000000000000000000000000000000001a79686e5d3bf13dfde124155b3501", - "0x000000000000000000000000000000a8fb46a3d217dd183040c0a420f54649fe", - "0x000000000000000000000000000000000015108dca36800442db63806f1c9b19", - "0x000000000000000000000000000000af4859dccff5f93286b74860b655c71376", - "0x000000000000000000000000000000000005a5ce520320b866c6d37d4962af24", - "0x0000000000000000000000000000007db1b957341c2a7496ead2d49066a0b331", - "0x00000000000000000000000000000000001854c7b36211f9e9b65d5a800fb604", - "0x000000000000000000000000000000da6d43e2c508510d3ebd0f7e7a91e58a40", - "0x000000000000000000000000000000000004e91f8363e7f2ec8a6ae41aaa0e8a", - "0x000000000000000000000000000000e5ca598eb67bf08a0e88b7b8c7e3ec23ed", - "0x000000000000000000000000000000000023f8870979bebb93dcaae39a9fe880", - "0x0000000000000000000000000000007188b11478d31faf9f3f53c79b0b4eb007", - "0x000000000000000000000000000000000023c01e14e65c5bc0adc136bbd36f9a", - "0x00000000000000000000000000000041402cc166246548658a916b809e297c32", - "0x000000000000000000000000000000000017c729281b78764f3035c03da9c41d", - "0x000000000000000000000000000000f5eabc1b8b41f53712ddbd594e27d7cbdb", - "0x000000000000000000000000000000000011b7af6b4d7f687a65dd1dae5b9e9c", - "0x000000000000000000000000000000e391c21e04488af8a1abdfc3c9e40c8b3e", - "0x0000000000000000000000000000000000183f706f268a264f93c255fd3ea7ec", - "0x0000000000000000000000000000008637553d54b02636b2855901661dd89da2", - "0x00000000000000000000000000000000000cdc7c75092651d411275a56d3a7a0", - "0x0000000000000000000000000000003bed8d5d87019a541af2ea960ce5d73c8b", - "0x000000000000000000000000000000000016b79cf274c4e13cb4b14cfb205ea1", - "0x000000000000000000000000000000f0dc25fd64cdc1840d8b42d03578b67b8b", - "0x0000000000000000000000000000000000143f69cdbc51ee6de5d0a214d007ed", - "0x000000000000000000000000000000e7663bcada731239fd1d8a9bf4ac43b128", - "0x000000000000000000000000000000000019d1f073d0629455a80a12736b922e", - "0x0000000000000000000000000000006e08f35a3702f7c44d4ef0c3235a229443", - "0x0000000000000000000000000000000000260673c9ce86a3dc158a4c82e30aca", - "0x0000000000000000000000000000002efe53bd197aec991d4304d3d7d1a694b7", - "0x000000000000000000000000000000000017ab46824df67b87ebbc5a7c3b17d4", - "0x000000000000000000000000000000db62d0db94f203c8ab06500512bbcd5476", - "0x00000000000000000000000000000000000743695dc78ee45319540d30f9b102", - "0x0000000000000000000000000000005fcadc6ef378ca26afec63e4d13df68135", - "0x000000000000000000000000000000000029c5af5b83ec224bc453f30fa69391", - "0x00000000000000000000000000000026972e0e925c8bb0325896dec74149a72d", - "0x00000000000000000000000000000000000a17c59d59622ab3aad866ac318028", - "0x0000000000000000000000000000004c00fe576a546165a4b1467ff95195727b", - "0x000000000000000000000000000000000024bc3d77af740d09edec2c3a1262d4", - "0x000000000000000000000000000000193d373e484e5877e340115ba577796d6e", - "0x000000000000000000000000000000000027d1fc6b31099eb8a6780c1da6833b", - "0x0000000000000000000000000000006faa0399cb92977e2c9c391e252dafc060", - "0x00000000000000000000000000000000001f68e275c8b0575ef239b54178c65a", + "0x0000000000000000000000000000009c4c79d947280d7af0a362b2380bddf4d0", + "0x000000000000000000000000000000000007c20dffc7df1e6f8c2cd444d35745", + "0x00000000000000000000000000000049c1418ccb40ea4e7dde2f6a378d90ebb1", + "0x00000000000000000000000000000000000fe28d75a526d206b2585e9ad3b47c", + "0x000000000000000000000000000000f47795ca59f93cbd856768c14d1be65702", + "0x0000000000000000000000000000000000049c1976105b76506b40313f879a9d", + "0x000000000000000000000000000000c9a25fb7214726da56e2faa831a848ebbf", + "0x00000000000000000000000000000000002aa786394b6b7db23bda864a074ff2", + "0x00000000000000000000000000000077067df7888f30d7ce721d61f8501f4ccf", + "0x000000000000000000000000000000000016a59c51e14107bdd69af088fc33df", + "0x000000000000000000000000000000050ecec567f92547d40e585d3ff894c062", + "0x00000000000000000000000000000000001f69fad77c4c814e9e9ef0a466ef1c", + "0x0000000000000000000000000000001a52f0db02203784de8529c14cedf3f68d", + "0x0000000000000000000000000000000000163b167ddd89fcb1745c0273ede47b", + "0x0000000000000000000000000000007c7d0b9c694a23e0dfe30ad38fc19698c2", + "0x00000000000000000000000000000000002c4347582315af07e872ecc2fefe6f", + "0x000000000000000000000000000000e5945cb7e781d00ac72dc920fc94195813", + "0x00000000000000000000000000000000001c9f029772eb0c24aeffffac0cf800", + "0x0000000000000000000000000000009151ca5ad340132c3507b2094b893fe7b6", + "0x00000000000000000000000000000000001fc469386e0ec916d92e77829ce11c", + "0x0000000000000000000000000000003d7369f7cfc9efd510bd3e4421897414e0", + "0x000000000000000000000000000000000021ae8fc5ebf6625d540ff65fc94afb", + "0x00000000000000000000000000000011057d5cb45dd9770d04a228099f6c40a6", + "0x0000000000000000000000000000000000073f3c488d6000f3032914b52460cb", + "0x00000000000000000000000000000041624fc4998739b886e4295b4471e6904c", + "0x00000000000000000000000000000000000c0ded922adea602758d9baca447c3", + "0x00000000000000000000000000000012ecd3269b16d690cee303ba49a9d72fe9", + "0x0000000000000000000000000000000000046112dca30ba531969690135c88bc", + "0x000000000000000000000000000000748e126a084d42cde03a78bb3d95c88b1d", + "0x000000000000000000000000000000000027d5b1029bd73b03cc2dd5b2637fd5", + "0x000000000000000000000000000000d6fce2f27f11e132176cae43b26c17e64a", + "0x00000000000000000000000000000000000157b3afe50cd4172e5764a1fec5eb", + "0x0000000000000000000000000000002c1a8afaaf0ef073cb61c030cd868ee59a", + "0x000000000000000000000000000000000003066e36e8212795e9a3bacec4c36e", + "0x00000000000000000000000000000032ecf45b0c8b285366ac2b38fce8ac7f28", + "0x00000000000000000000000000000000000d1d7de4dee1b98a43bdf355de4088", + "0x00000000000000000000000000000070803dfea16c8d32f91abf33a8c5ff8acc", + "0x0000000000000000000000000000000000058d381ef7932c5e8088f7945d5c53", + "0x000000000000000000000000000000cec5f59fea57808f649ea1127dc98bf210", + "0x000000000000000000000000000000000026a28826530c37961efa4292f66de9", + "0x000000000000000000000000000000118411fa03b94b1a31206914b748d13379", + "0x00000000000000000000000000000000000cc4f595564bb022cfa92d7a414263", + "0x00000000000000000000000000000092695b7f263c0d597d80d44bb15ce25f16", + "0x000000000000000000000000000000000011655773299f76172d64ab0aec2167", + "0x000000000000000000000000000000237502be9b06d22d874ae61bb68402eb4b", + "0x000000000000000000000000000000000025b67536948e6b1fb9305a6a0902d4", + "0x00000000000000000000000000000012a36607d014772f5fd17aa88cb7b42ce7", + "0x00000000000000000000000000000000000e9b8600784be3afabf902c36f66f9", + "0x000000000000000000000000000000fcdf86fec8cdfd7c21fdd3b4b34ca12c40", + "0x00000000000000000000000000000000001ec4196d23340945d0cc30da70f1bb", + "0x000000000000000000000000000000adea23527367396044e4e4c96de84eecd8", + "0x000000000000000000000000000000000018b5deda083c782e0955cafede3851", + "0x0000000000000000000000000000006a07bae3afb77a499b81325862ccd68281", + "0x000000000000000000000000000000000011607dde0619a7463b6132e4c51726", + "0x000000000000000000000000000000a4a433368ee709376e3d8bc8e91b8ce970", + "0x000000000000000000000000000000000014becfbeb18e2d7af5ee3819ca3024", "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", @@ -3416,20 +3406,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000d6451a224359e4510a9e02c50b8d158c52", - "0x00000000000000000000000000000000001b42817827c52d29eff99a39666a03", - "0x000000000000000000000000000000ef96661fcfffe2e9229066de0840009ccb", - "0x00000000000000000000000000000000000ded6ee6ba8aaebe01db4735dd2227" + "0x000000000000000000000000000000f8f190c905b7dfaf62cad7c148721999fb", + "0x0000000000000000000000000000000000184661b6c009d78b44dbfcfde2d00a", + "0x0000000000000000000000000000001043ebef3aeea60c4faf4bdf5f099f1d6d", + "0x000000000000000000000000000000000009bb1c7fd18424241b3408a35df3da" ] -hash = "0x1ced82df3d28148a6a3e5932a3e53a59ff4586330848598468395247ff3d6816" +hash = "0x2706201fc8dba36cc5653c2bd36302765d7ed67d42d661f6173921e7485ecb31" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000c" sibling_path = [ - "0x22ba62216a3bf8ded6a6dc7a6f8c764d51d644b90d9777fa002d146e7b2fe83c", + "0x0f4c5af5e1ab7d60cf7c45e3b1a5aa3534bea31672a24d4d5e5d99d9aa630052", "0x0a60cb44548a4dff391b54c00c5c4d8a0e5e2c3bd8382d0681bfea37b8b62284", - "0x249e51fc196c78b39e44c75f2cd9bb14e5841d3ec9e6c4354257673559a0c3c2", - "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", + "0x2339fe400f4ac82a211804552b46c722be6b91b84dda89485e57efc554f2711a", + "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] @@ -3438,7 +3428,7 @@ sibling_path = [ [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" proposed_block_header_hashes = [ - "0x0056f0be48311f2adc146bd4b44cf33f533fe8f15e35a8442db01df65cd47424", + "0x00f33f0a0750ec39f2f347432fdce7d490c61aa03871a19d644f5f1396edcf3b", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -3487,57 +3477,57 @@ proposed_block_header_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -vk_tree_root = "0x12878b84466fe942a84a7bc3f577ab17b41ca58c22f5bea881a35a534aa0f229" -protocol_contract_tree_root = "0x071f2e01b58eff84ebe1608c9eccf21bf2d51ac74cac3816a3dee8372cdb0b7d" +vk_tree_root = "0x23d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3" +protocol_contract_tree_root = "0x236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df4" prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x2654086cd6d89561f4e67ddcb44940715de36e827be817fbc8617a2e0c02e0d4" + root = "0x1e00091bbbada4c141e65a4b9f6bcc2b33fdf0010ba11a61b9c5b29e8ea4b6f4" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x1ca09ee30647c33c85fabf3888e16716ad663338352387ed22471c3d14f9f62a" + root = "0x21fa91c35c515d1b58836741c616ecf4d548e5f373a342705157b1ea6bf51898" next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f55" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c44b" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001694" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001450" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x00000000000000000000000000000000000000000000000000000000d349f245" + version = "0x000000000000000000000000000000000000000000000000000000006481dcd7" block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" - timestamp = "0x0000000000000000000000000000000000000000000000000000000068018f55" + timestamp = "0x000000000000000000000000000000000000000000000000000000006807c44b" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001694" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000001450" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x000000000000000000000000000000000000000000000000000000001be37338" + value = "0x0000000000000000000000000000000000000000000000000000000017164d80" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000005184b100fc70bf588bc8a361c6cf18f7707d545d" + inner = "0x000000000000000000000000b34fdc90d2f227121b685b449604ec70737032ec" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3823,19 +3813,19 @@ prover_id = "0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] -z = "0x2267a5ab920dd8ce1c19f3ef6a875c273df6eed2b7fac0e75103da7fc05a8ed4" +z = "0x2f6f2ad67c7f0c2f6491be58f0f55b6e6ac67b19a80ba8a6fd6af8cc7d4b5098" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] limbs = [ - "0x29e213c2b239c658307376b6edae9b", - "0x10f9e0d4577b124b73416989515d5f", - "0x10a5" + "0xfc3e1cd2fa75b7f6383240a98190db", + "0xc0087d4a28f0e2553e3bd6bba9e5f9", + "0x5559" ] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] inner = [ - "0x00a51561616d7f4f6826bd6c6331819c75a7a0210c714e6602173aeec9867ce6", - "0x00000000000000000000000000000098611fa5e18539ac5584cb76aef93f970d" + "0x00a1c67bbb489acfdb9a3ddcdcd5fa313aaeb46b3ba0f6c0213880cc083c90f5", + "0x0000000000000000000000000000007bad5d95ad9a68a4af93de09d1029b6ede" ] [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] @@ -6734,101 +6724,91 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000417", "0x0000000000000000000000000000000000000000000000000000000000000418", "0x0000000000000000000000000000000000000000000000000000000000000419", - "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000000000000000000000000000000000000000041a", - "0x000000000000000000000000000000000000000000000000000000000000041b", - "0x000000000000000000000000000000000000000000000000000000000000041c", - "0x000000000000000000000000000000000000000000000000000000000000041d", - "0x000000000000000000000000000000000000000000000000000000000000041e", - "0x000000000000000000000000000000000000000000000000000000000000041f", - "0x0000000000000000000000000000000000000000000000000000000000000420", - "0x0000000000000000000000000000000000000000000000000000000000000421", - "0x0000000000000000000000000000000000000000000000000000000000000422", - "0x0000000000000000000000000000000000000000000000000000000000000423", - "0x000000000000000000000000000000419e7449b6adf1fd85a2c257e0393cd204", - "0x0000000000000000000000000000000000199570e259755453396fdcf92bed76", - "0x000000000000000000000000000000dfe17d35601509209d3c794ce7590de703", - "0x00000000000000000000000000000000001e4dc2db4651fbcab36a253964d094", - "0x0000000000000000000000000000009fa10a4dc7242aeeeefa528721c64be971", - "0x0000000000000000000000000000000000169ae254b0abd0ec6ed10a748c06b0", - "0x000000000000000000000000000000fa0cc8d50135f79336d2e9943147f1fdcc", - "0x000000000000000000000000000000000020202ba9736558aa72db82a7371261", - "0x0000000000000000000000000000007e4be0963c1aee7065ebcae1a24287bf1e", - "0x00000000000000000000000000000000001b3af4930768449cd6219753816230", - "0x0000000000000000000000000000001fc531939cc1eb6071e1fa3de4ba0da873", - "0x000000000000000000000000000000000009feed0c8ed731c4dcf1c2ab3633f9", - "0x0000000000000000000000000000001596fb9abffd61d5766dc34a1c60a1ce54", - "0x00000000000000000000000000000000002e62cec2dd81d0d25d7a999049523b", - "0x00000000000000000000000000000052376060fe0a0a4340a74ab9820cb5f3dc", - "0x00000000000000000000000000000000002b78ef38a40c841751c0a570cea133", - "0x000000000000000000000000000000baf35b01257782bc47d1004fa51bc145b4", - "0x00000000000000000000000000000000001da608e92e07ad96f1425ae4afa39c", - "0x000000000000000000000000000000757fdf0fa2cec6b71b56e08f25d9b03073", - "0x000000000000000000000000000000000012fc126fe069812e0e46908deae457", - "0x00000000000000000000000000000025a63a2310119e032062edf2748af3935d", - "0x00000000000000000000000000000000002a6b4b83a0c773df436ac08d125a6f", - "0x000000000000000000000000000000fbd36b80ea33b7685b16be6db694499bd5", - "0x000000000000000000000000000000000020ffa122ec5c8303dedc2e14f8bc4f", + "0x0000000000000000000000000000004db99b364800b7a85c672fd6d0968d0434", + "0x0000000000000000000000000000000000238c05b4bf9a30ae410f0042df956c", + "0x000000000000000000000000000000dcc69be08706a7e17ec0acef55bed99bbe", + "0x00000000000000000000000000000000001addfe9d3b68c6d22fe6bad676ace2", + "0x000000000000000000000000000000d22dad2ca35320d94c77874a3a0cd6a2ba", + "0x000000000000000000000000000000000007d83238194f89e79458b2dfa167cc", + "0x0000000000000000000000000000005a3f31d38c94a443e29eafc9dea7c2d30d", + "0x00000000000000000000000000000000002f7c1b8113fe51b31a3fcfef95f933", + "0x0000000000000000000000000000002b7342e402912626e9b1162b1ea3ef940f", + "0x000000000000000000000000000000000024a9a6e0e27c27e659e1d0c12bcb05", + "0x000000000000000000000000000000fd2c0eacf720f68f93857b349b1d6c0084", + "0x000000000000000000000000000000000014e535e96755e887290c5e80247de6", + "0x000000000000000000000000000000d6fbb437d62bbfd148ca9a6a92fb25f51b", + "0x000000000000000000000000000000000025f3c4c8a955669d5bb17dfdc16c4a", + "0x00000000000000000000000000000065fec974d2356371fb5c819baa4fb83d17", + "0x000000000000000000000000000000000010f9fd5aa8794e368b913c3815b037", + "0x0000000000000000000000000000004894d5d9e1dcfae902ecd1d780f90153ab", + "0x00000000000000000000000000000000002517a3eb5e950b121ef89df64885a7", + "0x000000000000000000000000000000008bcf6451f291699694c70630c796e74b", + "0x00000000000000000000000000000000000bb0beef6b6da14177198e018fa470", + "0x0000000000000000000000000000005f9e8b4e84768de4da0200b9b8a98fa3b6", + "0x000000000000000000000000000000000007ef289f757043b752930e89d33f45", + "0x000000000000000000000000000000e2f55c81c9aaa0ee73090c1692342e2776", + "0x0000000000000000000000000000000000110b118e29d250cde0838bb8ebb52b", "0x000000000000000000000000000000e6bee501455201368d829cd1ce79087f61", "0x0000000000000000000000000000000000200a6916f2e94e0de862bccb7c66e9", "0x000000000000000000000000000000ce79b607a7f0f58208394dd5ae4ed88772", "0x0000000000000000000000000000000000289dbe505abab4d4613cf578f4ee04", - "0x000000000000000000000000000000f345237557f2315bbf1c292e85cb1fcf84", - "0x00000000000000000000000000000000001d8dbd5043a6b4f045dba7e0d93a43", - "0x000000000000000000000000000000ad875e883b75687701b4b45373ae00b679", - "0x00000000000000000000000000000000001489f0a865e17b3c308ce2eced6040", - "0x000000000000000000000000000000dd45e6eed7ea285daaba2ae39c138d788f", - "0x0000000000000000000000000000000000008ddaab4a5bb998c41add978ad528", - "0x0000000000000000000000000000006a2a99308f13dd548edeecc6f8f5fd1d52", - "0x00000000000000000000000000000000000c78f4679dddc6650c1bf822dfbd0d", - "0x000000000000000000000000000000e430f1bf59328f1e2163d9edf2c6c29499", - "0x0000000000000000000000000000000000038d703475a6e55a48b307018d79c8", - "0x00000000000000000000000000000061d31b3687253f7c0a17a0bee920440ed7", - "0x00000000000000000000000000000000000876d7518b158a5826caa989a42f28", - "0x00000000000000000000000000000065e5753e3f96ad88571b2d305e7514d6c2", - "0x000000000000000000000000000000000023e2f0a345aa338df5b1d0e06f7f37", - "0x0000000000000000000000000000003af39bf2395f7544eaf12190cc6829ccf8", - "0x00000000000000000000000000000000000ab85ba63d1e2ffad75cef9be15145", - "0x000000000000000000000000000000bd35b8821f75beffd500853d52d20f1ebb", - "0x0000000000000000000000000000000000140fc1c97352554613cd1fd993a523", - "0x000000000000000000000000000000c2300bdcfc58eb11e22caceb21d164cf92", - "0x00000000000000000000000000000000000c6eb88a70d96c66e624a4ca8668f8", - "0x000000000000000000000000000000f140ed8677a314751991c7bb4b554d62ff", - "0x0000000000000000000000000000000000143df52054703b6bce2e9e9162c55a", - "0x0000000000000000000000000000009ebb9c8cb9f9efafc2f66be4f937babbfa", - "0x000000000000000000000000000000000022f2a9fc5f19f76566c397cd4baf10", - "0x0000000000000000000000000000003f93ec368741fa6240a16cfe7262aad4e8", - "0x0000000000000000000000000000000000083c3852d51611baaaf92207fcb167", - "0x00000000000000000000000000000049534804e747421f647a7a45795a0ba234", - "0x000000000000000000000000000000000007e0aa0df42602fad1ef2d10afbc61", - "0x00000000000000000000000000000085a5c35aeeb20075af017e107f68003c4a", - "0x00000000000000000000000000000000000559648c7be59a7ed631465912a370", - "0x00000000000000000000000000000002514b8f30ecd8691d51e8f05fd685116b", - "0x00000000000000000000000000000000000751ba882f3f85aff0c3708330fdba", - "0x000000000000000000000000000000b43c8d31b3a552fd6ccdc3d8478dcec28e", - "0x000000000000000000000000000000000011717cbd0ce268c10c4d84dec84d4f", - "0x0000000000000000000000000000007278923f22cfde811f1b66a9d7db2e7fa2", - "0x00000000000000000000000000000000001361da9446af9c98d59b49eaa1b357", - "0x000000000000000000000000000000ea30012fb09431a85d92a00263ef987eef", - "0x000000000000000000000000000000000029bca370a46f8f354ac5e49f6ca59f", - "0x000000000000000000000000000000fb9f6ccce672614ed9333a44024e2a0be6", - "0x00000000000000000000000000000000000dfb388286f15e852482e237a50d51", - "0x0000000000000000000000000000005fc56c6b0c13b7db749137119a48f5b3b7", - "0x0000000000000000000000000000000000205834f9ac179adc772061d7bcd8dc", - "0x00000000000000000000000000000075ed56b4cb2557df3fabb2f89eb789c119", - "0x00000000000000000000000000000000002f04a7542161079050a92ea07fd5cc", - "0x000000000000000000000000000000323203d6d39cf766b9823232f8dd624fd9", - "0x00000000000000000000000000000000002df1d38173d8713f1047284cf4f2d6", - "0x00000000000000000000000000000005a53dd9bada258725818e67b9c1103d10", - "0x00000000000000000000000000000000000e8059f2acd119d92a3412731b93a3", - "0x0000000000000000000000000000007ce14852270ecb1c2a86349b1a7b61828c", - "0x0000000000000000000000000000000000156194d8ad86978a8dd6b8b4d3a1e6", - "0x000000000000000000000000000000651e9c17397afdea3f138092bc0fea2972", - "0x00000000000000000000000000000000001bf1c9d51814f099d4544e7675da2a", - "0x000000000000000000000000000000daa21cc9d5e8175c08a69118b766845c76", - "0x00000000000000000000000000000000002e7da3f77177a2d86c0b8450b1bf23", - "0x000000000000000000000000000000ad8581a81ee364d5238cd1f591801c9ded", - "0x000000000000000000000000000000000026049e5b956065ef9d897a0cfb6268", + "0x0000000000000000000000000000007964afed4f508b27ea8e57d9f0334fed98", + "0x000000000000000000000000000000000029e379a9f635b22da749b22b4e7ebe", + "0x000000000000000000000000000000074fe54006905a44d2bb242e40ef6ae2ac", + "0x0000000000000000000000000000000000095ecef5c9ebaefa5f5a1436083101", + "0x00000000000000000000000000000064c1ed5670d6c3d0f6253c93f744dfa163", + "0x000000000000000000000000000000000002e4c6f010ac5c8617f4864e16f833", + "0x0000000000000000000000000000007b4d6848e7858d6f0331dfa4edb9895741", + "0x0000000000000000000000000000000000179cec7e12b2d4d84bf09d2bb37ff5", + "0x0000000000000000000000000000004de42569c8a9c1bebb429bde46f503f3ea", + "0x000000000000000000000000000000000014c5d960e3aaece7ef138fca6d53ee", + "0x000000000000000000000000000000d144bba721bb2a734b2fab0fa1ef1df04a", + "0x00000000000000000000000000000000000793ce7f9ce422c68fe6538359b69a", + "0x0000000000000000000000000000003c1c2ff288f3342c98d418b50057732aa5", + "0x0000000000000000000000000000000000071e3f30bd28a58c25585ff02dd319", + "0x000000000000000000000000000000519f655b3320133fb448a3353482ddf3ce", + "0x00000000000000000000000000000000000a946af4f531031c7579d6020d63da", + "0x000000000000000000000000000000efa7055c9e26a7aa7093d4a0eed3932514", + "0x0000000000000000000000000000000000036c616f1ecd313deb4368abd19782", + "0x00000000000000000000000000000096ac5e9bfc75ce873cfc4018921f57f179", + "0x00000000000000000000000000000000001ecf52f34471a039224b08d658ff78", + "0x000000000000000000000000000000ae4b4ad07e32c8e3b206bf310cd2952d42", + "0x000000000000000000000000000000000022ddf383789ec91aa2833107fc2dc9", + "0x000000000000000000000000000000c064e20a76c8e8c7dffea461ed828305ce", + "0x0000000000000000000000000000000000037152d9938dc4dd5ebdafc7d0f06b", + "0x000000000000000000000000000000d26d9f61f730187eabb55386044f7a0672", + "0x000000000000000000000000000000000000b70fd56b880c3b4f07f9c924eb62", + "0x00000000000000000000000000000082be859369a51f91982329b1bf3d1166f7", + "0x000000000000000000000000000000000030481188f6dc3549bdb9107ce3b6a2", + "0x00000000000000000000000000000061e7717994c5775d336935478c131d88e0", + "0x00000000000000000000000000000000001f31a8985e00356bfd8958e3a0eb91", + "0x000000000000000000000000000000ed7ac635e69ff3ff76e2dad4e654adda36", + "0x00000000000000000000000000000000002ab313ffb51c6b23b6f093de444b1b", + "0x0000000000000000000000000000005596d05e7164e381a7bd7c9d4f33dcce44", + "0x00000000000000000000000000000000002a6c1437647dd04374262fcde314a1", + "0x000000000000000000000000000000db4b37dbe7a2ee2e4051e8818b56ddfbac", + "0x00000000000000000000000000000000002dd5619d267b0e7a382fed853cc935", + "0x000000000000000000000000000000fd29f38ac3e998987e6ee5f9e4080d994a", + "0x00000000000000000000000000000000001e26f51c4ad9ff46dc8273c5cbe3ab", + "0x000000000000000000000000000000570b7413d57af4931fc2bc7774272c473d", + "0x000000000000000000000000000000000015a96b35734bbdf010b80d3f277d25", + "0x000000000000000000000000000000c3d297fe778b7098db7d742b0f9504d884", + "0x0000000000000000000000000000000000118e332e021c24c1d4fb9bd79461f5", + "0x00000000000000000000000000000030789e7e2745c3177a90ca3b05935f6a75", + "0x00000000000000000000000000000000001db1e7ee3db43abedf81959740c6a5", + "0x000000000000000000000000000000ef103c6d28edbaddc7605d955cf2305bd6", + "0x00000000000000000000000000000000001c657e8dc242cc57c122f6fa6ceed4", + "0x000000000000000000000000000000dececd6d2172612a0d18b5e3288d8c520a", + "0x00000000000000000000000000000000000ff13bb37eebb057bf3c7c077cd285", + "0x0000000000000000000000000000003e820226ae4cd1928241a7e36ffe47342c", + "0x00000000000000000000000000000000000887fae51a65f26d443ead25b20b0a", + "0x0000000000000000000000000000008693f6237bbb3bdaab02461b17f0f1ee49", + "0x000000000000000000000000000000000008a422099cdc6913ad8a4f74d3224f", + "0x000000000000000000000000000000588b71cf6b0020cbdd22e319f1bf94fc3b", + "0x00000000000000000000000000000000001a1998e29c5de9a9dc38fc2a0ad7af", + "0x000000000000000000000000000000793bca6b1691483b63bb411fec004c75bc", + "0x00000000000000000000000000000000001e357440f73411be0fe783fc7dc888", "0x000000000000000000000000000000751a63b41218c33ae5d641c130f060ce34", "0x000000000000000000000000000000000018a3d787ef1ec164dc62244409c559", "0x000000000000000000000000000000a0340f3ea930787df40d68fdd647a9f7d0", @@ -6849,20 +6829,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000fd205e3cbb08bf3732f42f8f7394513ac4", - "0x000000000000000000000000000000000010325670ecb08d1c1ad20f04d5749c", - "0x000000000000000000000000000000f2d889b901e3e7247fdf4893478d31c904", - "0x0000000000000000000000000000000000170cf314533d4667f535487be8b352" + "0x000000000000000000000000000000634bdbe2dc3a87f50e42c085ce2fa085b5", + "0x0000000000000000000000000000000000156320261a35ead512bd21eec6f7b2", + "0x000000000000000000000000000000ab522ee89126420cba620e0408461be4d2", + "0x00000000000000000000000000000000002e6dfcf7835db3e09c81793a4602b8" ] -hash = "0x12190b990be64e0a871c4995d6d4091f4fe34e7c392416e0949f7fa849dec5d5" +hash = "0x2510a690018b1f8eef089cce0f0b88859afea3439ebf5df20e3b18d59f1f11f3" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" sibling_path = [ - "0x0efa1bf9873f28b2b90fd97b3aa86f81792b62ff852383f1f161ff2185513cfc", - "0x1f8a29ac619adc9528879eb5f86632217299fbbf54784da57b8259f454a2e59e", - "0x0e31294ddae4f4798f2bba4b55ed737d196e1624f73265772ffe5ccca88f2a5e", - "0x0e3b41ae0c61b2201c7ddad14a74a90a9e8447d5394e3487069a6b7bafe107af", + "0x21a94f20d20374f72f45547e295343e13ca88b3c332e3b5f7fe12f355b711f2c", + "0x00cf68b26c3307dd549e4da1198defd7abe5f06c946c4ff31e0617e9a0681f86", + "0x27a93963a3210199524c8dc79a8d1478e6d8aa4a22153c37eab1cb2c47d6fc2f", + "0x2f5f0e8285b051021accb7ac271d2a103f043226b5eaf3597a23e6535bd9eb97", "0x0d8e4232c3e1214b1a72ee04016dd919308ecb6b01e871bdcdc36248ab044711", "0x2fd02310a424f73ae3709cf4ff9d507e920407534ba3e965a5542a138b815675" ] From c4541a3bd0f54ce2ad082915d38003cea7d08ecd Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Wed, 23 Apr 2025 13:40:28 +0000 Subject: [PATCH 05/10] Include state reference in propose args. --- l1-contracts/src/core/RollupCore.sol | 5 +-- l1-contracts/src/core/interfaces/IRollup.sol | 3 +- .../src/core/libraries/rollup/ProposeLib.sol | 7 ++++ l1-contracts/test/Rollup.t.sol | 18 +++++--- l1-contracts/test/base/RollupBase.sol | 3 +- l1-contracts/test/benchmark/happy.t.sol | 6 +-- l1-contracts/test/fees/FeeRollup.t.sol | 8 ++-- .../ValidatorSelection.t.sol | 6 ++- .../archiver/src/archiver/archiver.test.ts | 3 +- .../archiver/src/archiver/data_retrieval.ts | 41 +++++++++++-------- .../src/mem_pools/attestation_pool/mocks.ts | 2 +- .../src/publisher/sequencer-publisher.test.ts | 2 +- .../src/publisher/sequencer-publisher.ts | 12 +++--- .../src/sequencer/sequencer.test.ts | 10 +---- .../src/sequencer/sequencer.ts | 1 + .../stdlib/src/p2p/consensus_payload.ts | 34 ++++++++++----- yarn-project/stdlib/src/tests/mocks.ts | 14 ++++++- .../src/duties/validation_service.test.ts | 4 +- .../src/duties/validation_service.ts | 5 ++- .../validator-client/src/validator.test.ts | 1 + .../validator-client/src/validator.ts | 12 +++++- 21 files changed, 122 insertions(+), 75 deletions(-) diff --git a/l1-contracts/src/core/RollupCore.sol b/l1-contracts/src/core/RollupCore.sol index 7ac4e852dfc6..20dc0daf00f7 100644 --- a/l1-contracts/src/core/RollupCore.sol +++ b/l1-contracts/src/core/RollupCore.sol @@ -210,10 +210,7 @@ contract RollupCore is function propose( ProposeArgs calldata _args, Signature[] memory _signatures, - bytes calldata _blobInput, - // TODO: Temporary sending it as calldata so that the block source can reconstruct the full block header. - // Should be removed once the block source can refer to the world state to access the state reference. - bytes calldata _stateReference + bytes calldata _blobInput ) external override(IRollupCore) { ExtRollupLib.propose(_args, _signatures, _blobInput, checkBlob); } diff --git a/l1-contracts/src/core/interfaces/IRollup.sol b/l1-contracts/src/core/interfaces/IRollup.sol index 633e9647d934..d6aae2158955 100644 --- a/l1-contracts/src/core/interfaces/IRollup.sol +++ b/l1-contracts/src/core/interfaces/IRollup.sol @@ -147,8 +147,7 @@ interface IRollupCore { function propose( ProposeArgs calldata _args, Signature[] memory _signatures, - bytes calldata _blobInput, - bytes calldata _stateReference + bytes calldata _blobInput ) external; function submitEpochRootProof(SubmitEpochRootProofArgs calldata _args) external; diff --git a/l1-contracts/src/core/libraries/rollup/ProposeLib.sol b/l1-contracts/src/core/libraries/rollup/ProposeLib.sol index 308b3b028e0c..21717af2ad91 100644 --- a/l1-contracts/src/core/libraries/rollup/ProposeLib.sol +++ b/l1-contracts/src/core/libraries/rollup/ProposeLib.sol @@ -23,6 +23,11 @@ import {STFLib} from "./STFLib.sol"; struct ProposeArgs { bytes32 archive; + // Including stateReference here so that the archiver can reconstruct the full block header. + // It doesn't need to be in the proposed header as the values are not used in propose() and they are committed to + // by the last archive and blobs hash. + // It can be removed if the archiver can refer to world state for the updated roots. + bytes stateReference; OracleInput oracleInput; bytes header; bytes32[] txHashes; @@ -30,6 +35,7 @@ struct ProposeArgs { struct ProposePayload { bytes32 archive; + bytes stateReference; OracleInput oracleInput; bytes32 headerHash; bytes32[] txHashes; @@ -108,6 +114,7 @@ library ProposeLib { digest: digest( ProposePayload({ archive: _args.archive, + stateReference: _args.stateReference, oracleInput: _args.oracleInput, headerHash: v.headerHash, txHashes: _args.txHashes diff --git a/l1-contracts/test/Rollup.t.sol b/l1-contracts/test/Rollup.t.sol index 58d7db00010f..864420b19e99 100644 --- a/l1-contracts/test/Rollup.t.sol +++ b/l1-contracts/test/Rollup.t.sol @@ -212,11 +212,12 @@ contract RollupTest is RollupBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobHash.selector, blobHashes[0])); - rollup.propose(args, signatures, data.blobInputs, new bytes(0)); + rollup.propose(args, signatures, data.blobInputs); } function testInvalidBlobProof() public setUpFor("mixed_block_1") { @@ -239,11 +240,12 @@ contract RollupTest is RollupBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobProof.selector, blobHashes[0])); - rollup.propose(args, signatures, blobInput, new bytes(0)); + rollup.propose(args, signatures, blobInput); } function testRevertPrune() public setUpFor("mixed_block_1") { @@ -303,10 +305,11 @@ contract RollupTest is RollupBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: txHashes }); - rollup.propose(args, signatures, data.blobInputs, new bytes(0)); + rollup.propose(args, signatures, data.blobInputs); } function testInvalidL2Fee() public setUpFor("mixed_block_1") { @@ -332,10 +335,11 @@ contract RollupTest is RollupBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: txHashes }); - rollup.propose(args, signatures, data.blobInputs, new bytes(0)); + rollup.propose(args, signatures, data.blobInputs); } function testProvingFeeUpdates() public setUpFor("mixed_block_1") { @@ -408,10 +412,11 @@ contract RollupTest is RollupBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); - rollup.propose(args, signatures, data.blobInputs, new bytes(0)); + rollup.propose(args, signatures, data.blobInputs); assertEq(testERC20.balanceOf(data.decodedHeader.coinbase), 0, "invalid coinbase balance"); } @@ -675,10 +680,11 @@ contract RollupTest is RollupBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: txHashes }); - rollup.propose(args, signatures, new bytes(144), new bytes(0)); + rollup.propose(args, signatures, new bytes(144)); } function testSubmitProofNonExistentBlock() public setUpFor("empty_block_1") { diff --git a/l1-contracts/test/base/RollupBase.sol b/l1-contracts/test/base/RollupBase.sol index 0a7e503d46e2..e04699ae9cf4 100644 --- a/l1-contracts/test/base/RollupBase.sol +++ b/l1-contracts/test/base/RollupBase.sol @@ -183,6 +183,7 @@ contract RollupBase is DecoderBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: full.block.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: new bytes32[](0) }); @@ -190,7 +191,7 @@ contract RollupBase is DecoderBase { if (_revertMsg.length > 0) { vm.expectRevert(_revertMsg); } - rollup.propose(args, signatures, blobInputs, new bytes(0)); + rollup.propose(args, signatures, blobInputs); if (_revertMsg.length > 0) { return; diff --git a/l1-contracts/test/benchmark/happy.t.sol b/l1-contracts/test/benchmark/happy.t.sol index 6f416d838b5b..5f423d6370e2 100644 --- a/l1-contracts/test/benchmark/happy.t.sol +++ b/l1-contracts/test/benchmark/happy.t.sol @@ -236,6 +236,7 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { ProposeArgs memory proposeArgs = ProposeArgs({ header: header, archive: archiveRoot, + stateReference: new bytes(0), oracleInput: OracleInput({feeAssetPriceModifier: point.oracle_input.fee_asset_price_modifier}), txHashes: txHashes }); @@ -251,6 +252,7 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { ProposePayload memory proposePayload = ProposePayload({ archive: proposeArgs.archive, + stateReference: proposeArgs.stateReference, oracleInput: proposeArgs.oracleInput, headerHash: headerHash, txHashes: proposeArgs.txHashes @@ -319,9 +321,7 @@ contract BenchmarkRollupTest is FeeModelTestPoints, DecoderBase { targets[0] = address(rollup); bytes[] memory data = new bytes[](1); - data[0] = abi.encodeCall( - IRollupCore.propose, (b.proposeArgs, b.signatures, b.blobInputs, new bytes(0)) - ); + data[0] = abi.encodeCall(IRollupCore.propose, (b.proposeArgs, b.signatures, b.blobInputs)); address caller = proposerToAttester[proposer]; vm.prank(caller); diff --git a/l1-contracts/test/fees/FeeRollup.t.sol b/l1-contracts/test/fees/FeeRollup.t.sol index 12085be6901a..3862be1f56da 100644 --- a/l1-contracts/test/fees/FeeRollup.t.sol +++ b/l1-contracts/test/fees/FeeRollup.t.sol @@ -216,14 +216,14 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { ProposeArgs({ header: b.header, archive: b.archive, + stateReference: new bytes(0), oracleInput: OracleInput({ feeAssetPriceModifier: point.oracle_input.fee_asset_price_modifier }), txHashes: b.txHashes }), b.signatures, - b.blobInputs, - new bytes(0) + b.blobInputs ); nextSlot = nextSlot + Slot.wrap(1); } @@ -319,14 +319,14 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { ProposeArgs({ header: b.header, archive: b.archive, + stateReference: new bytes(0), oracleInput: OracleInput({ feeAssetPriceModifier: point.oracle_input.fee_asset_price_modifier }), txHashes: b.txHashes }), b.signatures, - b.blobInputs, - new bytes(0) + b.blobInputs ); FeeHeader memory feeHeader = rollup.getFeeHeader(nextSlot.unwrap()); diff --git a/l1-contracts/test/validator-selection/ValidatorSelection.t.sol b/l1-contracts/test/validator-selection/ValidatorSelection.t.sol index 3982818e0e48..b94b62cd5bd8 100644 --- a/l1-contracts/test/validator-selection/ValidatorSelection.t.sol +++ b/l1-contracts/test/validator-selection/ValidatorSelection.t.sol @@ -292,6 +292,7 @@ contract ValidatorSelectionTest is DecoderBase { ProposeArgs memory args = ProposeArgs({ header: header, archive: full.block.archive, + stateReference: new bytes(0), oracleInput: OracleInput(0), txHashes: txHashes }); @@ -304,6 +305,7 @@ contract ValidatorSelectionTest is DecoderBase { ProposePayload memory proposePayload = ProposePayload({ archive: args.archive, + stateReference: args.stateReference, oracleInput: args.oracleInput, headerHash: HeaderLib.hash(header), txHashes: args.txHashes @@ -345,14 +347,14 @@ contract ValidatorSelectionTest is DecoderBase { emit log("Time to propose"); vm.prank(ree.proposer); - rollup.propose(args, signatures, full.block.blobInputs, new bytes(0)); + rollup.propose(args, signatures, full.block.blobInputs); if (ree.shouldRevert) { return; } } else { Signature[] memory signatures = new Signature[](0); - rollup.propose(args, signatures, full.block.blobInputs, new bytes(0)); + rollup.propose(args, signatures, full.block.blobInputs); } assertEq(_expectRevert, ree.shouldRevert, "Does not match revert expectation"); diff --git a/yarn-project/archiver/src/archiver/archiver.test.ts b/yarn-project/archiver/src/archiver/archiver.test.ts index 4b055973da0e..db090f702806 100644 --- a/yarn-project/archiver/src/archiver/archiver.test.ts +++ b/yarn-project/archiver/src/archiver/archiver.test.ts @@ -613,6 +613,7 @@ async function makeRollupTx(l2Block: L2Block) { const header = toHex(l2Block.header.toPropose().toBuffer()); const blobInput = Blob.getEthBlobEvaluationInputs(await Blob.getBlobs(l2Block.body.toBlobFields())); const archive = toHex(l2Block.archive.root.toBuffer()); + const stateReference = toHex(l2Block.header.state.toBuffer()); const rollupInput = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', @@ -620,12 +621,12 @@ async function makeRollupTx(l2Block: L2Block) { { header, archive, + stateReference, oracleInput: { feeAssetPriceModifier: 0n }, txHashes: [], }, [], blobInput, - toHex(l2Block.header.state.toBuffer()), ], }); diff --git a/yarn-project/archiver/src/archiver/data_retrieval.ts b/yarn-project/archiver/src/archiver/data_retrieval.ts index fe11c3987597..b376e0bc1c8e 100644 --- a/yarn-project/archiver/src/archiver/data_retrieval.ts +++ b/yarn-project/archiver/src/archiver/data_retrieval.ts @@ -6,7 +6,6 @@ import type { EthAddress } from '@aztec/foundation/eth-address'; import { Signature, type ViemSignature } from '@aztec/foundation/eth-signature'; import { Fr } from '@aztec/foundation/fields'; import { type Logger, createLogger } from '@aztec/foundation/log'; -import { numToUInt32BE } from '@aztec/foundation/serialize'; import { ForwarderAbi, type InboxAbi, RollupAbi } from '@aztec/l1-artifacts'; import { Body, L2Block } from '@aztec/stdlib/block'; import { InboxLeaf } from '@aztec/stdlib/messaging'; @@ -29,20 +28,33 @@ import type { L1PublishedData, PublishedL2Block } from './structs/published.js'; export type RetrievedL2Block = { l2BlockNumber: bigint; - archive: AppendOnlyTreeSnapshot; + archiveRoot: Fr; + stateReference: StateReference; header: ProposedBlockHeader; body: Body; l1: L1PublishedData; chainId: Fr; version: Fr; signatures: Signature[]; - // TODO: Remove stateReference from calldata and fetch it from the updated world state. - stateReference: StateReference; }; export function retrievedBlockToPublishedL2Block(retrievedBlock: RetrievedL2Block): PublishedL2Block { - const { l2BlockNumber, l1, body, archive, stateReference, chainId, version, signatures } = retrievedBlock; - const proposedHeader = retrievedBlock.header; + const { + l2BlockNumber, + archiveRoot, + stateReference, + header: proposedHeader, + body, + l1, + chainId, + version, + signatures, + } = retrievedBlock; + + const archive = new AppendOnlyTreeSnapshot( + archiveRoot, + Number(l2BlockNumber + 1n), // nextAvailableLeafIndex + ); const globalVariables = GlobalVariables.from({ chainId, @@ -276,10 +288,11 @@ async function getBlockFromRollupTx( throw new Error(`Unexpected rollup method called ${rollupFunctionName}`); } - const [decodedArgs, signatures, _blobInput, stateReferenceHex] = rollupArgs! as readonly [ + const [decodedArgs, signatures, _blobInput] = rollupArgs! as readonly [ { header: Hex; archive: Hex; + stateReference: Hex; blockHash: Hex; oracleInput: { feeAssetPriceModifier: bigint; @@ -288,7 +301,6 @@ async function getBlockFromRollupTx( }, ViemSignature[], Hex, - Hex, ]; const header = ProposedBlockHeader.fromBuffer(Buffer.from(hexToBytes(decodedArgs.header))); @@ -312,21 +324,16 @@ async function getBlockFromRollupTx( // The blob source gives us blockFields, and we must construct the body from them: const body = Body.fromBlobFields(blockFields); - const archive = AppendOnlyTreeSnapshot.fromBuffer( - Buffer.concat([ - Buffer.from(hexToBytes(decodedArgs.archive)), // L2Block.archive.root - numToUInt32BE(Number(l2BlockNumber + 1n)), // L2Block.archive.nextAvailableLeafIndex - ]), - ); + const archiveRoot = new Fr(Buffer.from(hexToBytes(decodedArgs.archive)).readUInt32BE(0)); - const stateReference = StateReference.fromBuffer(Buffer.from(hexToBytes(stateReferenceHex))); + const stateReference = StateReference.fromBuffer(Buffer.from(hexToBytes(decodedArgs.stateReference))); return { l2BlockNumber, - archive, + archiveRoot, + stateReference, header, body, - stateReference, signatures: signatures.map(Signature.fromViemSignature), }; } diff --git a/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts b/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts index 5abe69aa865b..7b044a4cf173 100644 --- a/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts +++ b/yarn-project/p2p/src/mem_pools/attestation_pool/mocks.ts @@ -35,7 +35,7 @@ export const mockAttestation = ( ): BlockAttestation => { // Use arbitrary numbers for all other than slot const header = makeHeader(1, 2, slot); - const payload = new ConsensusPayload(header.toPropose(), archive, txs); + const payload = new ConsensusPayload(header.toPropose(), archive, header.state, txs); const hash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation); const signature = signer.sign(hash); diff --git a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts index c94dc17bca03..19d38eccae89 100644 --- a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts +++ b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.test.ts @@ -217,6 +217,7 @@ describe('SequencerPublisher', () => { { header: toHex(header), archive: toHex(archive), + stateReference: toHex(l2Block.header.state.toBuffer()), blockHash: toHex(blockHash), oracleInput: { feeAssetPriceModifier: 0n, @@ -225,7 +226,6 @@ describe('SequencerPublisher', () => { }, [], blobInput, - toHex(l2Block.header.state.toBuffer()), ] as const; expect(forwarder.forward).toHaveBeenCalledWith( [ diff --git a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts index 92e63b453f12..44cbd0f1eb38 100644 --- a/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/sequencer-publisher.ts @@ -26,7 +26,7 @@ import { Timer } from '@aztec/foundation/timer'; import { ForwarderAbi, RollupAbi } from '@aztec/l1-artifacts'; import { ConsensusPayload, SignatureDomainSeparator, getHashedSignaturePayload } from '@aztec/stdlib/p2p'; import type { L1PublishBlockStats } from '@aztec/stdlib/stats'; -import { type ProposedBlockHeader, StateReference, TxHash } from '@aztec/stdlib/tx'; +import { type ProposedBlockHeader, TxHash } from '@aztec/stdlib/tx'; import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client'; import pick from 'lodash.pick'; @@ -41,14 +41,14 @@ type L1ProcessArgs = { header: Buffer; /** A root of the archive tree after the L2 block is applied. */ archive: Buffer; + /** State reference after the L2 block is applied. */ + stateReference: Buffer; /** L2 block blobs containing all tx effects. */ blobs: Blob[]; /** L2 block tx hashes */ txHashes: TxHash[]; /** Attestations */ attestations?: Signature[]; - /** State reference */ - stateReference: StateReference; }; export enum VoteType { @@ -410,19 +410,19 @@ export class SequencerPublisher { opts: { txTimeoutAt?: Date } = {}, ): Promise { const proposedBlockHeader = block.header.toPropose(); - const consensusPayload = new ConsensusPayload(proposedBlockHeader, block.archive.root, txHashes ?? []); + const consensusPayload = ConsensusPayload.fromBlock(block); const digest = getHashedSignaturePayload(consensusPayload, SignatureDomainSeparator.blockAttestation); const blobs = await Blob.getBlobs(block.body.toBlobFields()); const proposeTxArgs = { header: proposedBlockHeader.toBuffer(), archive: block.archive.root.toBuffer(), + stateReference: block.header.state.toBuffer(), body: block.body.toBuffer(), blobs, attestations, txHashes: txHashes ?? [], - stateReference: block.header.state, }; // @note This will make sure that we are passing the checks for our header ASSUMING that the data is also made available @@ -491,6 +491,7 @@ export class SequencerPublisher { { header: toHex(encodedData.header), archive: toHex(encodedData.archive), + stateReference: toHex(encodedData.stateReference), oracleInput: { // We are currently not modifying these. See #9963 feeAssetPriceModifier: 0n, @@ -499,7 +500,6 @@ export class SequencerPublisher { }, attestations, blobInput, - toHex(encodedData.stateReference.toBuffer()), ] as const; const rollupData = encodeFunctionData({ diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts index dc89e9f8dbc9..ffe1a35bb75b 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts @@ -77,8 +77,6 @@ describe('sequencer', () => { let feeRecipient: AztecAddress; const gasFees = GasFees.empty(); - const archive = Fr.random(); - const mockedSig = new Signature(Buffer32.fromField(Fr.random()), Buffer32.fromField(Fr.random()), 27); const committee = [EthAddress.random()]; @@ -87,7 +85,7 @@ describe('sequencer', () => { const getAttestations = () => { const attestation = new BlockAttestation( block.header.globalVariables.blockNumber, - new ConsensusPayload(block.header.toPropose(), archive, []), + ConsensusPayload.fromBlock(block), mockedSig, ); (attestation as any).sender = committee[0]; @@ -95,11 +93,7 @@ describe('sequencer', () => { }; const createBlockProposal = () => { - return new BlockProposal( - block.header.globalVariables.blockNumber, - new ConsensusPayload(block.header.toPropose(), archive, [TxHash.random()]), - mockedSig, - ); + return new BlockProposal(block.header.globalVariables.blockNumber, ConsensusPayload.fromBlock(block), mockedSig); }; const processTxs = async (txs: Tx[]) => { diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.ts index 963b30b73255..0ad02ca5d210 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.ts @@ -686,6 +686,7 @@ export class Sequencer { block.header.globalVariables.blockNumber, block.header.toPropose(), block.archive.root, + block.header.state, txHashes, ); if (!proposal) { diff --git a/yarn-project/stdlib/src/p2p/consensus_payload.ts b/yarn-project/stdlib/src/p2p/consensus_payload.ts index f2cb6558c353..bd590cb45e60 100644 --- a/yarn-project/stdlib/src/p2p/consensus_payload.ts +++ b/yarn-project/stdlib/src/p2p/consensus_payload.ts @@ -4,12 +4,11 @@ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { hexToBuffer } from '@aztec/foundation/string'; import type { FieldsOf } from '@aztec/foundation/types'; -import { encodeAbiParameters, parseAbiParameters } from 'viem'; +import { encodeAbiParameters, parseAbiParameters, toHex } from 'viem'; import { z } from 'zod'; import type { L2Block } from '../block/l2_block.js'; -import { ProposedBlockHeader } from '../tx/index.js'; -import { TxHash } from '../tx/tx_hash.js'; +import { ProposedBlockHeader, StateReference, TxHash } from '../tx/index.js'; import type { Signable, SignatureDomainSeparator } from './signature_utils.js'; export class ConsensusPayload implements Signable { @@ -18,8 +17,10 @@ export class ConsensusPayload implements Signable { constructor( /** The proposed block header the attestation is made over */ public readonly header: ProposedBlockHeader, - // TODO(https://github.com/AztecProtocol/aztec-packages/pull/7727#discussion_r1713670830): temporary + /** The archive root after the block is added */ public readonly archive: Fr, + /** The state reference after the block is added */ + public readonly stateReference: StateReference, /** The sequence of transactions in the block */ public readonly txHashes: TxHash[], ) {} @@ -29,29 +30,38 @@ export class ConsensusPayload implements Signable { .object({ header: ProposedBlockHeader.schema, archive: schemas.Fr, + stateReference: StateReference.schema, txHashes: z.array(TxHash.schema), }) - .transform(obj => new ConsensusPayload(obj.header, obj.archive, obj.txHashes)); + .transform(obj => new ConsensusPayload(obj.header, obj.archive, obj.stateReference, obj.txHashes)); } static getFields(fields: FieldsOf) { - return [fields.header, fields.archive, fields.txHashes] as const; + return [fields.header, fields.archive, fields.stateReference, fields.txHashes] as const; } getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer { - const abi = parseAbiParameters('uint8, (bytes32, (uint256), bytes32, bytes32[])'); + const abi = parseAbiParameters('uint8, (bytes32, bytes, (uint256), bytes32, bytes32[])'); + const archiveRoot = this.archive.toString(); + const stateReference = toHex(this.stateReference.toBuffer()); const headerHash = this.header.hash().toString(); const txArray = this.txHashes.map(tx => tx.toString()); const encodedData = encodeAbiParameters(abi, [ domainSeparator, - [this.archive.toString(), [0n] /* @todo See #9963 */, headerHash, txArray], + [archiveRoot, stateReference, [0n] /* @todo See #9963 */, headerHash, txArray], ] as const); return hexToBuffer(encodedData); } toBuffer(): Buffer { - const buffer = serializeToBuffer([this.header, this.archive, this.txHashes.length, this.txHashes]); + const buffer = serializeToBuffer([ + this.header, + this.archive, + this.stateReference, + this.txHashes.length, + this.txHashes, + ]); this.size = buffer.length; return buffer; } @@ -61,24 +71,26 @@ export class ConsensusPayload implements Signable { return new ConsensusPayload( reader.readObject(ProposedBlockHeader), reader.readObject(Fr), + reader.readObject(StateReference), reader.readArray(reader.readNumber(), TxHash), ); } static fromFields(fields: FieldsOf): ConsensusPayload { - return new ConsensusPayload(fields.header, fields.archive, fields.txHashes); + return new ConsensusPayload(fields.header, fields.archive, fields.stateReference, fields.txHashes); } static fromBlock(block: L2Block): ConsensusPayload { return new ConsensusPayload( block.header.toPropose(), block.archive.root, + block.header.state, block.body.txEffects.map(tx => tx.txHash), ); } static empty(): ConsensusPayload { - return new ConsensusPayload(ProposedBlockHeader.empty(), Fr.ZERO, []); + return new ConsensusPayload(ProposedBlockHeader.empty(), Fr.ZERO, StateReference.empty(), []); } /** diff --git a/yarn-project/stdlib/src/tests/mocks.ts b/yarn-project/stdlib/src/tests/mocks.ts index 7245fa92a085..84dd062dd9c3 100644 --- a/yarn-project/stdlib/src/tests/mocks.ts +++ b/yarn-project/stdlib/src/tests/mocks.ts @@ -25,7 +25,14 @@ import { BlockProposal } from '../p2p/block_proposal.js'; import { ConsensusPayload } from '../p2p/consensus_payload.js'; import { SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '../p2p/signature_utils.js'; import { ClientIvcProof } from '../proofs/client_ivc_proof.js'; -import { BlockHeader, HashedValues, PrivateCallExecutionResult, PrivateExecutionResult, Tx } from '../tx/index.js'; +import { + BlockHeader, + HashedValues, + PrivateCallExecutionResult, + PrivateExecutionResult, + StateReference, + Tx, +} from '../tx/index.js'; import { PublicSimulationOutput } from '../tx/public_simulation_output.js'; import { TxSimulationResult, accumulatePrivateReturnValues } from '../tx/simulated_tx.js'; import { TxEffect } from '../tx/tx_effect.js'; @@ -218,6 +225,7 @@ export interface MakeConsensusPayloadOptions { signer?: Secp256k1Signer; header?: BlockHeader; archive?: Fr; + stateReference?: StateReference; txHashes?: TxHash[]; } @@ -225,16 +233,18 @@ const makeAndSignConsensusPayload = ( domainSeparator: SignatureDomainSeparator, options?: MakeConsensusPayloadOptions, ) => { + const header = options?.header ?? makeHeader(1); const { signer = Secp256k1Signer.random(), - header = makeHeader(1), archive = Fr.random(), + stateReference = header.state, txHashes = [0, 1, 2, 3, 4, 5].map(() => TxHash.random()), } = options ?? {}; const payload = ConsensusPayload.fromFields({ header: header.toPropose(), archive, + stateReference, txHashes, }); diff --git a/yarn-project/validator-client/src/duties/validation_service.test.ts b/yarn-project/validator-client/src/duties/validation_service.test.ts index d557251a51af..fdf10130dbf2 100644 --- a/yarn-project/validator-client/src/duties/validation_service.test.ts +++ b/yarn-project/validator-client/src/duties/validation_service.test.ts @@ -20,9 +20,9 @@ describe('ValidationService', () => { it('creates a proposal', async () => { const { blockNumber, - payload: { header, archive, txHashes }, + payload: { header, archive, stateReference, txHashes }, } = makeBlockProposal(); - const proposal = await service.createBlockProposal(blockNumber, header, archive, txHashes); + const proposal = await service.createBlockProposal(blockNumber, header, archive, stateReference, txHashes); expect(proposal.getSender()).toEqual(store.getAddress()); }); diff --git a/yarn-project/validator-client/src/duties/validation_service.ts b/yarn-project/validator-client/src/duties/validation_service.ts index f60f8bc03236..9deb1412fca9 100644 --- a/yarn-project/validator-client/src/duties/validation_service.ts +++ b/yarn-project/validator-client/src/duties/validation_service.ts @@ -2,7 +2,7 @@ import { Buffer32 } from '@aztec/foundation/buffer'; import { keccak256 } from '@aztec/foundation/crypto'; import type { Fr } from '@aztec/foundation/fields'; import { BlockAttestation, BlockProposal, ConsensusPayload, SignatureDomainSeparator } from '@aztec/stdlib/p2p'; -import type { ProposedBlockHeader, TxHash } from '@aztec/stdlib/tx'; +import type { ProposedBlockHeader, StateReference, TxHash } from '@aztec/stdlib/tx'; import type { ValidatorKeyStore } from '../key_store/interface.js'; @@ -23,13 +23,14 @@ export class ValidationService { blockNumber: Fr, header: ProposedBlockHeader, archive: Fr, + stateReference: StateReference, txs: TxHash[], ): Promise { const payloadSigner = (payload: Buffer32) => this.keyStore.signMessage(payload); return BlockProposal.createProposalFromSigner( blockNumber, - new ConsensusPayload(header, archive, txs), + new ConsensusPayload(header, archive, stateReference, txs), payloadSigner, ); } diff --git a/yarn-project/validator-client/src/validator.test.ts b/yarn-project/validator-client/src/validator.test.ts index 075f5489ac0a..fb35246fd3ba 100644 --- a/yarn-project/validator-client/src/validator.test.ts +++ b/yarn-project/validator-client/src/validator.test.ts @@ -72,6 +72,7 @@ describe('ValidationService', () => { header.globalVariables.blockNumber, header.toPropose(), archive, + header.state, txs, ); diff --git a/yarn-project/validator-client/src/validator.ts b/yarn-project/validator-client/src/validator.ts index c8fe33ae1796..02b61261b58f 100644 --- a/yarn-project/validator-client/src/validator.ts +++ b/yarn-project/validator-client/src/validator.ts @@ -10,7 +10,7 @@ import type { P2P } from '@aztec/p2p'; import { BlockProposalValidator } from '@aztec/p2p/msg_validators'; import type { L2Block } from '@aztec/stdlib/block'; import type { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p'; -import type { ProposedBlockHeader, Tx, TxHash } from '@aztec/stdlib/tx'; +import type { ProposedBlockHeader, StateReference, Tx, TxHash } from '@aztec/stdlib/tx'; import { type TelemetryClient, WithTracer, getTelemetryClient } from '@aztec/telemetry-client'; import type { ValidatorClientConfig } from './config.js'; @@ -56,6 +56,7 @@ export interface Validator { blockNumber: Fr, header: ProposedBlockHeader, archive: Fr, + stateReference: StateReference, txs: TxHash[], ): Promise; attestToProposal(proposal: BlockProposal): void; @@ -319,6 +320,7 @@ export class ValidatorClient extends WithTracer implements Validator { blockNumber: Fr, header: ProposedBlockHeader, archive: Fr, + stateReference: StateReference, txs: TxHash[], ): Promise { if (this.previousProposal?.slotNumber.equals(header.slotNumber)) { @@ -326,7 +328,13 @@ export class ValidatorClient extends WithTracer implements Validator { return Promise.resolve(undefined); } - const newProposal = await this.validationService.createBlockProposal(blockNumber, header, archive, txs); + const newProposal = await this.validationService.createBlockProposal( + blockNumber, + header, + archive, + stateReference, + txs, + ); this.previousProposal = newProposal; return newProposal; } From 9defcf538dab0112e59c615fc468d5092ae080b1 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Wed, 23 Apr 2025 14:20:20 +0000 Subject: [PATCH 06/10] Lint. --- .../end-to-end/src/composed/integration_l1_publisher.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts index 39d61718b05e..f589f089815c 100644 --- a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts @@ -458,6 +458,7 @@ describe('L1Publisher integration', () => { { header: `0x${block.header.toPropose().toBuffer().toString('hex')}`, archive: `0x${block.archive.root.toBuffer().toString('hex')}`, + stateReference: `0x${block.header.state.toBuffer().toString('hex')}`, oracleInput: { feeAssetPriceModifier: 0n, }, @@ -465,7 +466,6 @@ describe('L1Publisher integration', () => { }, [], Blob.getEthBlobEvaluationInputs(blobs), - `0x${block.header.state.toBuffer().toString('hex')}`, ], }); const expectedData = encodeFunctionData({ From 294e61c64d1cb8e3add1f3fda5451220f8abf84a Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Wed, 23 Apr 2025 16:55:01 +0000 Subject: [PATCH 07/10] Fix. --- yarn-project/archiver/src/archiver/data_retrieval.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn-project/archiver/src/archiver/data_retrieval.ts b/yarn-project/archiver/src/archiver/data_retrieval.ts index b376e0bc1c8e..69f2c6023bbe 100644 --- a/yarn-project/archiver/src/archiver/data_retrieval.ts +++ b/yarn-project/archiver/src/archiver/data_retrieval.ts @@ -324,7 +324,7 @@ async function getBlockFromRollupTx( // The blob source gives us blockFields, and we must construct the body from them: const body = Body.fromBlobFields(blockFields); - const archiveRoot = new Fr(Buffer.from(hexToBytes(decodedArgs.archive)).readUInt32BE(0)); + const archiveRoot = new Fr(Buffer.from(hexToBytes(decodedArgs.archive))); const stateReference = StateReference.fromBuffer(Buffer.from(hexToBytes(decodedArgs.stateReference))); From dae8c98dee33d4e0481b02b81c7d1ebc60305bbd Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Wed, 23 Apr 2025 17:08:32 +0000 Subject: [PATCH 08/10] Fix. --- yarn-project/bb-prover/src/verifier/bb_verifier.ts | 14 ++++++++++++-- .../integration_proof_verification.test.ts | 6 +++++- .../src/fixtures/dumps/epoch_proof_result.json | 2 +- .../src/test/bb_prover_full_rollup.test.ts | 6 +++++- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/yarn-project/bb-prover/src/verifier/bb_verifier.ts b/yarn-project/bb-prover/src/verifier/bb_verifier.ts index 1597284396b0..4e2fdea445f1 100644 --- a/yarn-project/bb-prover/src/verifier/bb_verifier.ts +++ b/yarn-project/bb-prover/src/verifier/bb_verifier.ts @@ -12,7 +12,14 @@ import { promises as fs } from 'fs'; import * as path from 'path'; import { fileURLToPath } from 'url'; -import { BB_RESULT, PROOF_FILENAME, VK_FILENAME, verifyClientIvcProof, verifyProof } from '../bb/execute.js'; +import { + BB_RESULT, + PROOF_FILENAME, + PUBLIC_INPUTS_FILENAME, + VK_FILENAME, + verifyClientIvcProof, + verifyProof, +} from '../bb/execute.js'; import type { BBConfig } from '../config.js'; import { getUltraHonkFlavorForCircuit } from '../honk.js'; import { writeClientIVCProofToOutputDirectory } from '../prover/proof_utils.js'; @@ -42,13 +49,16 @@ export class BBCircuitVerifier implements ClientProtocolCircuitVerifier { public async verifyProofForCircuit(circuit: ServerProtocolArtifact, proof: Proof) { const operation = async (bbWorkingDirectory: string) => { + const publicInputsFileName = path.join(bbWorkingDirectory, PUBLIC_INPUTS_FILENAME); const proofFileName = path.join(bbWorkingDirectory, PROOF_FILENAME); const verificationKeyPath = path.join(bbWorkingDirectory, VK_FILENAME); const verificationKey = this.getVerificationKeyData(circuit); this.logger.debug(`${circuit} Verifying with key: ${verificationKey.keyAsFields.hash.toString()}`); - await fs.writeFile(proofFileName, proof.buffer); + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/13189): Put this proof parsing logic in the proof class. + await fs.writeFile(publicInputsFileName, proof.buffer.slice(0, proof.numPublicInputs * 32)); + await fs.writeFile(proofFileName, proof.buffer.slice(proof.numPublicInputs * 32)); await fs.writeFile(verificationKeyPath, verificationKey.keyAsBytes); const result = await verifyProof( diff --git a/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts b/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts index 18bbe77faeed..336c4c232835 100644 --- a/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_proof_verification.test.ts @@ -1,5 +1,6 @@ import { fileURLToPath } from '@aztec/aztec.js'; import { BBCircuitVerifier } from '@aztec/bb-prover'; +import { AGGREGATION_OBJECT_LENGTH } from '@aztec/constants'; import { type ViemPublicClient, type ViemWalletClient, createL1Clients, deployL1Contract } from '@aztec/ethereum'; import type { Logger } from '@aztec/foundation/log'; import { HonkVerifierAbi, HonkVerifierBytecode, IVerifierAbi } from '@aztec/l1-artifacts'; @@ -93,7 +94,10 @@ describe('proof_verification', () => { describe('bb', () => { it('verifies proof', async () => { - await expect(circuitVerifier.verifyProofForCircuit('RootRollupArtifact', proof)).resolves.toBeUndefined(); + // TODO(https://github.com/AztecProtocol/aztec-packages/issues/13188): Handle the pairing point object without these hacks. + const modifiedProof = Proof.fromString(proof.toString()); + modifiedProof.numPublicInputs -= AGGREGATION_OBJECT_LENGTH; + await expect(circuitVerifier.verifyProofForCircuit('RootRollupArtifact', modifiedProof)).resolves.toBeUndefined(); }); }); diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index 0aa2277b4265..616ea38696b2 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"0x0000b2e400000597000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000003dc00000000000000000000000000000000000000000000000000000000000000010237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000000000000000000000000000000000000000000000000000000000000010d479a9973afca679d8246d894b92f79675c4ebe01db6d6f1b20e98368a4129500000000000000000000000000000000000000000000000000000000000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef7506d1612daf507b160ff518e5f0df28014966c7a498e474e1e88ab9813389fe0e000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000183a8619af9f5968db6aef510e527aae5927e5df6092d9498f183f4bc2afc5b115c4ba754a1c246494577702f41a1f2f87b62dd22356c3e52e041870e8b1ebfc00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000103d54df615ab5d910000000000000000000000000000000000000000000000010c09879420f63ed50000000000000000000000000000000000000000000000067b948ec6de78969a00000000000000000000000000000000000000000000000000002fb9983cc784000000000000000000000000000000000000000000000004d25138948fa1019900000000000000000000000000000000000000000000000cc0c2e95f2338bd20000000000000000000000000000000000000000000000001bd2764d36be817ac0000000000000000000000000000000000000000000000000002896033c7c1ea00000000000000000000000000000000000000000000000e1327bcb74ac3c5380000000000000000000000000000000000000000000000091fbbaa38ae5f649f00000000000000000000000000000000000000000000000df26374cda4a95f5f00000000000000000000000000000000000000000000000000017b91fe4fa5cd00000000000000000000000000000000000000000000000298d35be6962d2c0300000000000000000000000000000000000000000000000f04c15652d7c8d78700000000000000000000000000000000000000000000000d7139f74133c70f060000000000000000000000000000000000000000000000000001f80f2550fd16000000000000000000000000000000f3a0d88e7ec5bdbd558467d44c604fa1c70000000000000000000000000000000000027234bba8ff5b1fbc7a7259ecae1e0000000000000000000000000000006f121e44201caef92676331ccbe126fd3a00000000000000000000000000000000001ff94ff7f6a76697a3fe6c88f8df23000000000000000000000000000000cc0a86849036d3bfdf173a1977895e6868000000000000000000000000000000000024b4df4038efbbfa3561acb4b0f7cf0000000000000000000000000000008653353a8bf37fcfa8ef191f95ebe1be1200000000000000000000000000000000000369029059e2ec172985d5a4344cf3000000000000000000000000000000e76f96061889807a8885b9d3fcce7917a100000000000000000000000000000000001b50ec5afeffc2323eaa9e58e23fe80000000000000000000000000000005aaee50c39a4e5ac4e59384c9b0e061ba50000000000000000000000000000000000133f81c5f7fb90777f564135f1beee000000000000000000000000000000d3af96f7ffa8abbae7efea472c417513f800000000000000000000000000000000001a64a2596a31f148377ad9b94a644100000000000000000000000000000081ab6d2572f482b5efc4f9754903dfb14f0000000000000000000000000000000000153e2f313789115c69c2aeadcfa3c300000000000000000000000000000097657e195a4e3494202383635b31df178e00000000000000000000000000000000001b753e0748a93a4d9dee8c5dc8152a000000000000000000000000000000f379dca46ae12dc4496557888113a926cc000000000000000000000000000000000019e91e77e1d76d2936dd5def9ca9f50000000000000000000000000000009087a51f512664a95a453c948e7b8f875900000000000000000000000000000000002e84370013eccb907961c07fe8071e000000000000000000000000000000df1bc58c1ad4630ab2a840e3a1780fa45200000000000000000000000000000000001e81a7b42a827bc15c994701e38e020000000000000000000000000000001bf9cbfc47f90da995d226e46c81ad669700000000000000000000000000000000000bc5e01203ec6d731651f3eb0c589c000000000000000000000000000000b2ff23c9d981a6c25c68ac2e5f0cc6bd900000000000000000000000000000000000016c16d05be5e24bcb536bc3aa4bc1000000000000000000000000000000e6c44f35b0f63707ec12ec52527ae824c200000000000000000000000000000000001ed76bdf2366bb5a33019a08015848000000000000000000000000000000a4f9c8448ad94ef0937bf334d9024c3c700000000000000000000000000000000000051b0c9f6302338a8d63e201c529600299c879db9ec2ba9cb1928d3eb03d92357367559812d5c4f7e396716bdf59f22dca85f90592dd6f1b9eb32942d11acaf2c080f2e1a69acc4bfe5f228420a60f2745f44c1814c1f1454b275b6f1493d0e109dd4bdd7dd386a7f9b59838f940a61d74997beee67b90f66e6a31381f906bff582b7feb4d6cdd65ccdbbc8d40f3860aeda2fd86c39d1f48e6e889f8ffbb7cd795c41cc464cccba9c0d959eab24bf42a1c0807c3a8b910e5a48b926228224ed66ff2bbe970d6489517f71f8a0f7dd623b45bbae596c958958b35ae60548a5fba085836d69701129f6935f4d6781ce61ab55ac57392e2d98f2d9073a9be81b0c7cf2ec19020aab1706944f6b4d80a2e1d65e474b556cfbac652280976d920c22901559d9a790711cdda7cc31b2c01c3252e809b26d3b53728ce6d05ce2c198bb676362ff266244cfc1e13d4f8abb227051e4fab89494f2826a0bbf4b653194f3f29bd73f8306f89aa319476ff0178fd08306955bca7ccecca7c9b0c2341c22bb80c69910797f54b8392f000587f55f818ac5405744a3731264379df2bc6e085de863c5afdc225373badf91b676e7faf19ca8bf73629f445091b09bbd2e1b3a37ce35876b72c52dc7c54e1708804acca1f9ccf3cf5a9f65742474c3c02d87f177335fd0b814ce4001c4a9dae9d652c08215de4bbfb2c5e26f1f237a72aa4388b3abe4bfe1c4c1a0a97b218cb8d176bb220d40a1981b0d7683d2d2ad63c1a25062db5d0ec78cb26b858788a202496e05e0cf7e41ebc37e520be3ae7afd48eeaf75c9e27f1374b4fee8d8f1718521354ab1c57e481b8cd5105c3c96ddb2021e4f356726ad9da1804271a262f14eeb5e28e0db9353c3ddb4b8e7990c7a99fff8b67c97b9c1b6fe9ce5a42ed04f866aba27c01a7bc21e8846ec1f70caa8ddff6f3a794c0a08cd449b3796fd30ec3a8861db015e6b9c4e79ed2da189f9df2a66e716ce6a8127311e43836eea2802efea6eefa1ab083b9eeef8720a6c5f3477c710261418513666e8d8508c9c6608b6b1600b804ca146d540353a5b9541c75761321ac62e3208d6e18e76d7fe512feb0ca34fb2d1446e8fdf919173cfc1fc7ca76e4592bb9db5e25a899ab45c71625a68152d10887febad3615ebb4c17a14c595ee2e180fc01474aa2f3b36c959951776c64672050a13b5eaefe8373a57751523f18a15192bdafab61b98f318bc19aa9fcbfd3097e843f2bf44fb5f1c51348590f022b26f109b22962eba48e85cac3f6aa091f0b12f9d193924765059e2ab3edda9d56aefabd245b73b4fa1cabd9fdfcc921421ee04202d1bc52273bc2d890acad650101b5cbd56d56cce5d19f57494d2a274501fe3e9e123de9560b4c6414847f6ee50acb969e5424875bae8c25fee31369d7074e6cb608a69f65390fbc9b51256777f1c53cea8008f1455204108f90c21bc20f6c5567d36ed014fe3891fabed1ef3d0b2c1b6b0f0d5b2df74889348268189522ddc933cd5d88ae258df1705f887f1b616899721ebbe1f048c75d133cdfc17411784c82ac62fa8d31064f317e0780fbfb5dd9850129acb60dfee095d7eb7e1f0f7a5b95c242593f264deaf26aaa4e6177adb5187ac869e95a60a5f03f8df00f00f04cfa660723d649204409ca6ef4e8809caafa4305d0c43110237edc4f30e90dd3cd0805a1139d2c8fb7c4fefc46dcff43e5f3aa9595b76fae6e155f1e816f1038c2493e22ce030f2c0a2fc3942429d2a34bccaf63a7197b160546dd579bf21bfd3cc2896e372a38b2d6c6e3886a53b6c2ad1de53a7afe90411f370f0d27c717551ad492d348276ebf621d59f1e86e8b100ef74e536fa6711ba2887d1dddae047dc117979906809a82e8992e0d309753174975693d2ba0ea6bbbd245fef33d2b61cf146223cf02310e9cfe9a383b709f6885d291aa67168d5b69e3aaac6ff205e9a395fcf21e31cf4e4deb878a40449e8b6d1a8d7b98517ef96e33b17ad2c402292880c98a44963fcba3d38e401a087182f3632ab971d4b38d032876857e4808d4581bcd2061e73b4fc9a0d8222612981d94c05cc50e0ce3fab3d586cfa4492c9c1a259046d197e63702bf280d953d607acb17a2f5eac438d008c57f312eff2c9b063ba79751a18d4ecb3d31d592e426219f28f8757662eb0afc8650c3fed41c2c7a64fdc08163b7e6fd63a21d6e86260a876cfb638356a37e07ec158264b40729189e109e2278a94340f1cf3c658e72fb636f14d9ed2dc5360fd9ac0af73d13b76b101f6e0e6af4bce452e5b1b432c6cf24894957a1225bc9046e5dcfef820a422e67741056e0f73cf54b74f8ebba229fc589dfdc72bbea5ff9655b7a693a15e4c10a9c062f550bf37715bbaaf2bcdd39644cc9b1ae9d504c558766ee270a076ece08cf9af15097445fd703f50d4db7e49920c4dd8db907aeb22b8e094a061eb9e6a7dc3fe24d953684d4ef5efd23877e2d7573bff2e17a4561c5fc865aa215d9905c46abaf5dd7ad8a5c7ff3346e64adaf75b2ee6a0d3877df9facf080761f98298b968ac81aed1fb0281f4325f98cc9f2f80fee39068b4191f82234ceab0c52ef9eeaf0ec9f130cdea2415df5a4db8e8ca6729f2962e82fb2762a391029153cf4d928364c69699557ac4d10868509f6e91d96c3193d595be31b3db812422972de89582881bb0b775cec2adb14a9d87be40aa13d445ae2768b34b110e1ea05dc9661028af33976bda4c5812db12d88b16a0f5a060302078af6c721e2c01e2efd4df3b9e681bb2d5457e1bc69151e17d783fd194ea1212367a4ae6dddaa1900b5e6a52f653e9fa60ffac084839514d0bb409e9482ac3f23fff55e1fde9bda035d4ed446a6abba751a270a28e776a81cf6e1bcbde92cf7e55a99bf01defa6d264be2422675914dc70228fabd19b3e71b083b773899051ddf7eaeaba00b1d3d0d04d63751b4784591bb5dbfc33554ef156f0abb6b03048b416a4f63166ac5a118bcef044b7cfd12270a467029f8a8457e3e0cb86523f2dba11fadc5f4b2d0b5004e2c8bd8ed741e4c46e01269287c1b44ac20f1d55854fe7e4f88c35ae3ac3410637a17200d51f70132bf22199f3c89344edadef31e0a45c4385cdb8fafd11000c040945970e3a00fd119c68adbc6e9b5317b9bd62a3aaaeacaaa1b9cbf51611f509c77d094c62878ba8c7e7f872ba5d51206aef7cc90eca1f4e33038a01f840af3f0d4707fc2221433646d1918f597401704bd443cc1bcb6c05a2b92c9623f0bcd52a6d63fe77ded2ff85d4a992322cdba11f8556b3dc970ffca988ed82f2a201ab4b3bfb9391c57b4ec2342990853fcdc7264a307723af3e0938d793a5c21133b0084fdf9966cddf81e18365cbf5eb0a28f4e6887f27c432535f370fa862c213046b4fcdc11a9f7568d643d398d019bfd0a7fd6584566e67a5638c28f379728e89dc45eaac68bfe44a344f43438bb6981ecbf4474d5eb6629b6ca7745d74b2898685067780347ea9ba1ba2449c07a985bcb20398eb3e99805e6fd256607270952922a2732a3ceb602c53fc91db24ec25fcdfc1f5ec05b8b2102ec9b36b8be2cf4108bb4e1912ba789c4d896359d0c3c55053014926576f8c7bf72df48c4351ad15875a71fc2f418352a69a81ed4467ea65aa72561e76939f7a70ac82fe3a810615a74716353179317244796d2e4bd82ff042dc68167eb74ae59fdac153fa82e7edcba4785e6e0594e24c48031413c3fc7fd74e8ebb501ee06e71ac2b4e0c61d78ba82758ed5a47e223994496af8a1a9761e2905714cd9020deb2d47a0a12a1aa42667a8aeeba9f58601c422802400cee240046f1c3300853b83907f600d452170c56e2eb04c1e5ca9538751e4cc2095c56357b6efde0807128f339a8ddb002b547a831f72918bd7e0105c895d07ad67a61012a22837e5790f37ecb84d0824130af0e2b030e81c4cca3160a11a90f1eaa273a7da480b1ae853557cdbab08b71bcd2a8d8821eaec376264679714c81687024717628a00d4de5e96d065af301418eeafac9f1197dafca3548f94a8d3fecfa2042607969c980ba1d15150efb5301a579389f23c3ef5516f3bdfd0ffa79adc72c8fdb5dabd5584435a87633c995e12817217bbb9883a35162a130a0bf9baed871cf94b950c6096a5df05f4b3d0cd0202bb79c069c14d7f4cf226801f3499f7cb2cce99cb60868cb627c4fee22ec410718e6c273f1b2536cd3dd36ca270f7ce1884f1f1c8f7987877aaaa4f82023c15b01f300b3fc357110db12413718abb27cae5e923b00c4c1ed7d2650d29c3ff0a80c91c580160701de5490b8e71378e5bc8f743d5d0db13dbeb1a18dc78d4a215747b0a69e603cc0ef06c6bc20f79779774fea435eb83af49ded3b413e4cba51ace881e3c00e953182c436af0b4582e7d1550f5366cf6f7f911d3e21901114b1aea1887cf20c1d343dec00fbed08f641bec0db9ce64e7b3e6ebf482baaf7edb1d96791ba51f9a160c268fed8dd3034796954566639dcf311cacac3d27aa4e372fb0fd900b212b8569bb99ae815a17a78c0ca0c5991e9ea17243c673460ec35a1f09fdd396a3790f792492acb6a96ec5219ca128a3fd45a083e122861bb2a07f19ec73050d3f02e65df6472cd4bc93ab2be89fb689c70bee939237027d843bb51db7b1231f9e873dc038b86d0a346172d9ea9aeecd81e0f548f13e63b03ec6e22ef97d00f6bffec7c1c1724ca18f6358157e7c24b3c630f0b17ca104e7e789a325ecd79251e1760cca1798a50e3f3750b9be59906369396bed1b61a7cc56cd161691c34fb4006a0b1959861a41db3c67cffd4daa61d0c6240e43880a5f0ecf2714fe3e854f7f1c4f229206284a2a503b9672efd27e0c56145b920cf83c7671e62f3087233dd48644a18c3c07ebb8463fd8ff1c59dbcef9a3c5e54935bfdd9f9e105a737ba5250f4fc1b4a4c661bc48f371f15fbb27955dcaa7c80bc9d2eabb490318dd831c8023d15612c73bcdbe0c7f2db70b15bf2b881877c403d1b191722326d96f93b7aefabca028bfe27270ce00a2c9b9636f2ef5287932d3e2e96330b3030e0fe71624bf79ec2953c8e9df8c0e8a7451b3ca197393399ccc98d8e3367a2b7cfaa2cb7e2e60d1f5c3df941ff37466dc3bef116158565d17ebb56df48d6a015088ef17d0500e39c49262cf7e27cd276beedf3d71a1c69159271a196e590b162d5cf704ba3c96b42b6afaed9f51c6d08f0747799db81f080067b744f55320014cca7f94ba25589f829e9c99fa9f867f12095c65ded85a119eaaf1bf41deec2a5e6d5afb2c7ba77452e5137c6167e91c0204cd6a927118874bf7115d0d118c245d552ed8088bc7ec231142580eb354c893da6f3fda136e9657f439bde9bcd612ff07816a9cafc8924de0c82c67ad7bed598a9a7412f322468ef92907407654086440dbe1c58404ce4f5baea0be4b45bd1449269466ba85b8093e153e6e40950c1243f39744f4b84c31be6f6633d87e44d55ce8896ec264589b569dc754ea2b2ba4f7abf2ffa5d67a7d6b667c88db5ffa8658cecbc77ba8f36d2c6b900cfe81076784263be3237e2a4859585876955208744a155b99d318bd52cd08a058ea9a1de48ccef2475868cee8f79fa4a733267fe2ff2993d875ca3bd1c1ad8b96cacc28398347aa78bc154636b9979622c9631e072f8ef34e7f50325702ce2098d1951138ac09a826fcb73c80d6be13ef6c1be749cec155f535a2c35e497ab3046fe514e91cf90fe22b6cb50b374bb85a7b792e8698884aefd1bf62b4188e543b43a622ab3050c3db9282b8e412a5d51aa91e008e624c44cdae0e603ba04ac574549f075f78bd156c9cf93d7cf0e519ca3b3655b507ad4525de78c10c3abfd403fab62a955e29e7c985a641a00dea541ac49435f418276abd510f24ebcdc81fc3513c1fdb77173a32f66561525ca3367e5a4e140ffe19f6250204736a5d8e91e69806106f27fe6fb0ec3d214112dc66c0b2352b7051a92d8444668c087eb9a04299c011715c683f17b8a04064dafd5cd15ce77e3af576be8437f76df94053128a967f2b2c8be3aeef482b78af22298b7c7bfe73e475ea6e4e37c90e2080058a0737ee0b3258e7820630b9d421ec8902a79749eaac0a0a8bd7e818e5717e549ef62f8e033a2ae78e13309a176f4f00dea74e3c5f5311f1ada44bed1e716bafc13a904f09a50684604db24fa643a895ba51aef5d5d482ebaf8baf0248d07ea058a881f6011ed3270d7235b8b88a605cfb1c766ba18bc68186862bed5711c4c4cfca74cf11d356cb15e22217c4ad3f1ddaff93257f2490a0ee4d730e37a38dada7dd969e296bfaa0b4938fef11784b578c4e791102ddde57bf777ae47cb592702b8945150c98be0bc52571a272ab82ed03338f3af48f9514c17fec916dac1eaf3c06949420f587f3c385d4880fca802d69b59970f8c83543eb9cd1c34844faaa1d306ef606996526f2bc007b028093cd4c3439f0eb49951a3c8503f519fab76ab39e493e079564d61db64d48db49b554d12568f27dc165c22431fa5436cebe6123cf5f281e7ebfaf723db9210f87a72023bda9038be386ae6d3bb6c77d9c17ca8fdc8bc52fb3cf0aa51093606246ef27d8a0145ab2973cbd6d618b90cea988c24692945328bb5b8a78bb5baeb18291d8ebd4ceb8a33fcd1ff15ca17ef8b4d3b4dc2516850d76a840392f7fe4babb905b7117dd4bb97c6ab67d0be93a3135dc4b52ace1540da742ab6d03796949d082678bb5719e1035c6dc68284690c6816599650322f91e6f276c1e9cd8f6222a7bdb9d715c9b006fc664dc55b74bb9b06fb3feb2c53906dd58850c209ff3a50972bc04dac4a766e66eb5356e35a16338ef7c2de97cb618df0f1bbd10f9a777d6bc924a229be77bb22ae03618b4e9486d4b999272611e05168e828b0130118c7cec7b5edb9b2c3289854911380a09e7a147a6c17c05570a49f32ed8b35b4fc578c6d3105d809d199134617a865ed5282cb03e3f74b286097a9312daeeeb30a338de3f491d351877c5f29c8c9fbd0ba4398f77d278ab7d00b32747e45034390c34677ce1f9a62d059748c583c8cf46e843e6c293de6d340c5522b6067f6b13f03cd8af586c429e5d9b43e0a6bd2e75f9a43468d8075ac528e6054f318bf63e2dabb7152b45390615a24b1cf43be957084dd7ff0b5f78841bb9ed3b7524ec5394871b656a89b6326b4380f2a623759d00f2fdf0666e335405b557dd780e33c163b7dd6a2d2213b898bbdf06694612d007ab978598d2de501ceee4c7f0e22f6639b032feefefdea63da01198dedf226db7709e2bf70948fe0a6a6dbcde55519d07d7b8fa940de560d2447f3622009630789c7c2c0a65369f1ede770636f3bfd2c7e91a257c3d864f662f27f574ca69afa9ea466406697f3400c1b9eca76176d201c04fc3525e4ff9eb66e19ffa574e05ee1d53d025b80b65016ffdf253493075d3a3c5ac0adc75e609bab166bc4cfa32f4f48defa657d41e2972bf4da3f4ac8d355ac1f6c74c870425b1c0a72897c0b2dce92ef8728dcf621212836cd12e02c87e2b482204a282cc2326bd320a235fcf2cc6305c04cff58e285dc0dc77888f20bab7afb1ac435bcdea0dd02b47222c422d85ed8f1ae25d922c22bac11a84143610f3b961d980edd9a039b58092d17a5c7f1a479033c8317d022ea9a80f5f3a9de355fde6e97b747a5aea3012ec53f230cc9ac182cdca924709d704b4578b0c0d179279df667e84eb9be4b79498a5abcd0a0416d030cea04827d5c669485512da16d3419c1051b2391d02c944a09dd7760c7e6bf78bcda2a5064a469399199e1ad88a8ea378dc15c99e0bfa9a5ee83251fcbcf8f604f46f7a077039074ef3e6e9e57867fe20a3dffa4d123d5f71539c124b24f396bc6afd32066641db5aaff0cf6119ea6c4764badca9e5125e484be9cc4eb4e4a61840e772149dfec9eef43b3cd53194d1b21e018f97a553b25583fa8ca3c15912aa0079a9108fa124c923fee2fdef0cb6afd51d1a6975c3aa82bdf5b1ebb2bdc3e74b22002394a8bfaaf0d471a836691a7b3d31a80e2e672ee89f20a97be25fb3f09b9bf815f2c579b0486d6a6716374aceef869dba050f24b5a99027c8153c53ac72c5171a14cb383e5dea8edebe8d91f7887821cb285804592dc8a7d000047cf276496f2ca62b1bdc1237c667bdd419f7d9aac2d45ee6835bbb78e1f70d2e07fe18f7801e98022a4a1e6066d7faffd2e7e8a3b2a2b49e86d784b7fdaf642bcbea89cea711f10096e17e6d54b77c19a678bf28c0bc17612a87924b38c1fae0bb8cb15e872273285c7d9249ee0305e299d71e21bc5e94c0d7c184ca89995b81f2263442a52da4dc3b5a3bb45ab7004d0850a3dc66cbe64150f05ffdc3a1a67e94f357f6f6170d37b97cc457708123feaf3c28b211d2a6ea2f3b95e50f9ac89f74a5afe7c9071400acb078f6e3c924a3e63b57394ea803f52a14e837e329d31858aed0e6960c7326bc6108c5d5fc9751d7bd43ca5a949709efbb6a17f78b925f9d0ea4439c25040a1f40c4c9664ea6a592a0f8db63ceca0f97b1cf982a98853991c3bec137086c5edcb9b267101bcb290af3957ff3896214734a6fcf98807fafd4f9a5534307d7f7485c7bc369e76886b3766222ed0464f9abb28dc4418d88aa151ebc8769000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ddbc11522fdb37cd54d66ff0d031224c534fa1d99035f3a76e1c851eb98abf11683a6e8603dc51d00fa6ab5460727b4164079075cefcb9b73be96c560d96d8d0bfab78d21f72b9b9ba69ec56a4e3984d0a4f0adbdc1b631d8cec4e45fac6f7a2b68f4f799bd6dd8e98a75e7bb5359120cd031659754cd7a43e14c69b7b7a4ca02f607c7e95907fb1a303c11ff8d559462243b5a32e5c69d74675687d927c4010543237165fb042e777b14b7c8b7b8d0dc9dd68684401bf0f192c6bb076a9a912fce5c2a4cf11181087641da559972c4b35b31a1993718bfca40c9a8693ea372001f08c21298463a9e00d48291b81d296a37902e3476b531a9e41b611d627b4523be885842b6a96910d0fdd0f3bf3939e1a9a5217e332455392112139b1f55420d768328c6bbe2d917c39a94e76423a02df8f0a8593b35d9b29679adc519b51c0a3fed47b7d6bb0072bde12e48a412f8a98c3ca43a385095337c055b6800680d01018f80508e71f91230a165e3d6c96af799b4b1a8b384ce34eb2413346df1d0258d88c0e73cfc4f0933b2eaa8d5ae54ef83c5e99539e4dd5976e5c935bad92a163ba68768fe12f7eca3f21916dd679633457cf392bd07d1f9785599b9285f2409296c76caa4014273e98d36e8c5fe622cf294031d04600d67d54f3e33953ffb119cdcc5a1543f792caead9cbb4689973e43ee745db52a4c6532e108ee3c32dd243a2728e468044612ac3b88b6d2abee33bccc89664928c2b626e108f1df458a090e891bcd6ccca7af5dac51c8884d91ec4c7a28b96c66924bfad57fe53f91bc27aad909837eae75448b9b006decc64b880beb9a5acfbd7db42c95a4f81c188a0cde069d2ca358498603edf1a393a5370003978a74568aa7245e4ac08e66af9507e0c7752b5c4349c734afff0ab4e15dac077453a448249b5d4c4d707f74e54410fa5fbd682c4c067a845bfdb234805f2960e72c4141371dd78b2ac9e78206dc21f7b8beee045d462dcce3e861bd832822290ca1d44fd3210ac2d823b18300970acd8f5af1fc6288526609e3e7158fc3e862910f33b49c30d5bd7c0061ab0a2606a4d894bd6bba7db8a91460442e656f130e0920c6b8dfee2af159b08debb0ce2bff3feb549bf676c2c23b1d303c7c787fec3af98868e7107bc339f2a0421f0529d1a64e7f51301082ed283722bec32fc4058a7b6d89836618c5a861a3de1e95250df0ac0d913887e33eb5b4d6c028cec45804f2e735e7927ef56e85557f03a60b863ea6d1123a4167f0fe78403d246cc3ae226d209eabded6c94dc8ae27b14e0467892da92ff4333e3dab741135cd7a3d322962594b1a5babb279a14d7c994307a53022df0fd582387b05f51be1417c9eebbd258c1996d5ae7cec960914c6c70fda04a512d10d1cef63c589416e38c3959545e317bfd131e6af034f4e722899244a4395fdc1142f327eeafb131869f590fb6ae3c6d5163cec626944ea346936263479b13287b25f41c366d557921da4f311979033f8b949f01028e7984b000302ef578d87bd0f1279bb67c0338e8401d0c3dcb03850183c82eb91293ee4313d018b3c7b802c5fec69ce923fc17c7de8e188edbcb3656229a20b958a5b417f5513244866b7e29af836249e5e621116c00c48f688e3b70866b47d338f0ae1da48031c0f1c3a33155686f7691aab538e8cd7d80a45f492f792e5e21d751a06bf880c5612ac1da3c2cf3783d8b81c3ae4045ef6dcfd4ef34a74659f3029a3e1d212261a1b47e19f579c1ce48c3707d5ec61436bb435c6d1ccf129d88f3153f4aa4a00000000000000000000000000000063d9d8d71404157eb9145a961a7f7859160000000000000000000000000000000000143ce09bdfc295fa61945d0e28c5f1000000000000000000000000000000264b9ab8900bc11d63ead0c03f7e903d400000000000000000000000000000000000297e7593e99062c7b0df616d482e930000000000000000000000000000002e93628d47b15a68952fcb4057be835db20000000000000000000000000000000000006b39f99b64b03c67b4db8fce3da6000000000000000000000000000000ac62d6f017b91f88f52e75b90c74862a9400000000000000000000000000000000001643b7bc26a819053b1333ed82cb7800000000000000000000000000000091bd70369e88869e490bdafb5cb26bdc9000000000000000000000000000000000000dd9123ca345150cff84b58034fd2400000000000000000000000000000037dd34ffc38a8368227472182605c9d8040000000000000000000000000000000000027a9a93a8911854d836f4b2e02dc10000000000000000000000000000000e1cda90bc884b5895a4399c2b4f97608b00000000000000000000000000000000001c0edb8bb62c8d5fc150c1da4a5cf60000000000000000000000000000001f0cc784165acfbf64e74c8d60d52cdb850000000000000000000000000000000000054116be84b9259d5af02a7a708fe30000000000000000000000000000005ef69f1d29233660bcdbe7632b8952b3d8000000000000000000000000000000000030058df00b1633a6dbea05c433384500000000000000000000000000000073a789e69e9035b40f5f5bfc9649e46ce800000000000000000000000000000000001d7d2d9774ee5799bf12fa0df396c9000000000000000000000000000000b54830c5de8e14fd8e325a99dc4c46b32b0000000000000000000000000000000000192d72e1c3df08f68c61748d838dcc00000000000000000000000000000014c077826c347323b56ec87d3765a40501000000000000000000000000000000000000918e90c42e1b4241c6deffd4a375000000000000000000000000000000f0b2edfa65e0315734c9eb0b2fc624de790000000000000000000000000000000000296ae7f79f9bc2b560a363c223e8a0000000000000000000000000000000eb4cb0bcdc7a5a3385ed80a3af61c4ae8b00000000000000000000000000000000002b6ee3130739a352a20e891e512bd3000000000000000000000000000000350cedd0e109c80a7077e852e8e0e1c71b0000000000000000000000000000000000212fca72dcd4b411fee680b9a7f56300000000000000000000000000000094e3b7945e503766aa63a39bc82124def80000000000000000000000000000000000155b4e636cbc620ba1aefbf88764c7000000000000000000000000000000aae845f1261b00814adb5d08243e7b9d75000000000000000000000000000000000012f0f42d54a5195c0da148bce2ff4b0000000000000000000000000000006100b564556553256275a80b73f791559f000000000000000000000000000000000018a90133159d272596287bc01348ef000000000000000000000000000000fb680cac0c832d4d327daf11220e2c507e00000000000000000000000000000000001ef2676b31e934d25616343c8aa9740000000000000000000000000000008a23167c62e6e2015b83e77cc711b1bbf90000000000000000000000000000000000192f767a29cbcb17e080f0d71a417e0000000000000000000000000000003f6f84c1a27f75bfbbe336c99f6e2ec7e100000000000000000000000000000000000b68a0f1287299b94a59150d2362bd000000000000000000000000000000dc80e22cc0525b96d070992d75101dfa9500000000000000000000000000000000000d47dc1ad7ba36c3ae6f4c4c6cf7b0000000000000000000000000000000225a7fb811e266f22189b5247f4e521119000000000000000000000000000000000025203813115395e05262fa62dd3dee0000000000000000000000000000006610313efe88407bad338e07a33b0b4ecf000000000000000000000000000000000007d64baa3c9e9d19af7d978fb9218d00000000000000000000000000000094f54aadd2c3f51f446b8a2e28d93ad20300000000000000000000000000000000002153b035beb4ef431f68e93dfbc81a0000000000000000000000000000009f6da8fb227b9b0287e50d1f46bfb9d7f20000000000000000000000000000000000271fb22a92fe7a00136d2734dc5e6b000000000000000000000000000000638e64589bd2b7fe9baf56b2662d2986b600000000000000000000000000000000001bdfd01817faf3fa096e04782685ea000000000000000000000000000000a88b2944a3a0a1e3e22b97c51f202afecb00000000000000000000000000000000001bed22f73c9b520966edcfa9c60d7b0000000000000000000000000000008fa49b75512dc93e0073b2144105d68201000000000000000000000000000000000004bbd2fd6dbd1bf0679c6d5cd2df450000000000000000000000000000008eaa9861f96071db670cafe2358625da310000000000000000000000000000000000125605f8f3bf8e21c117bb5352f1940000000000000000000000000000008bc5264cc4d3838d7f5cc1d9574d4ce70700000000000000000000000000000000002e3a86246ff868491c0970d330cdae0000000000000000000000000000005f8b8885efc5e108f1aa47ec365bd1d47f000000000000000000000000000000000010d5dc1de8641f633d54c8cfc5a6620000000000000000000000000000009adfd18ab035ac2279aace684cb18f9e3400000000000000000000000000000000001c260c7bf92861c3bba0907e3e08ce0000000000000000000000000000007b4fd3e0780107c48f90d2b5e4f25479bf00000000000000000000000000000000002f4da73ff082a27f7b11e49f55b6b40000000000000000000000000000000719161d5d9945e36b02dd8b82921764590000000000000000000000000000000000207a360fb08fb7a07079c25581c7890000000000000000000000000000006e0a3066ef6eb7c3937a8dc08afaf7afdb000000000000000000000000000000000029f16a68711855d03610851717b9690000000000000000000000000000009b3ea8848e6946845a36584f01fa51c12a00000000000000000000000000000000001752bf5bd5738574672d65f9e63e4b000000000000000000000000000000ab13b9df79c94a0ba64782867f564365b80000000000000000000000000000000000151658ee2dbae3cd6896c2a1c371e10000000000000000000000000000003df28e172f8a09cbd2c32b0b90ab9773bd000000000000000000000000000000000025407a46eb0ce63b0997710d341b56000000000000000000000000000000030499d339f2b44828c2119a7faf3af29a00000000000000000000000000000000002c89ca055d19cb31d25d682322a582000000000000000000000000000000d006f8c62844d76cd0ff4031a630e9756900000000000000000000000000000000001c93ee64fe493f10a1bca911c3a8f00000000000000000000000000000004e429bb69f358a436f088cdc4c5fb590a00000000000000000000000000000000000175effb7e02a137d4a6c93624854a7000000000000000000000000000000eb66098683f97503a5633f638e8f58cbff00000000000000000000000000000000000b97da3690b016024cec5d4d6757a2000000000000000000000000000000aafa700deb31dfcca7586bb94c81f5410c0000000000000000000000000000000000137b0d6a57667d7e00fced77f5fb99000000000000000000000000000000b6568c6d6ab2f999a87eafd44ab9c1571b000000000000000000000000000000000004baef934661960e6412fd1fe7e8dd0000000000000000000000000000003991d0f8f06f12b42a3c179bdd51a81d75000000000000000000000000000000000030306b57f8fb480a16f5bc379a7a6800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001d9c325d0ee6e2871c065558150baf04ead6494bada4611783f9c8e3ed835cb31734beaed64130c9a7792dcf8ac95baab35c43ed3fca3a625ac9ac64049cf3571c296b7d7856db80c8eaeb95990b033406fdd76d860af32e194e0d818fcffc95112b154f783d955fa15376b8a3396b2090dd6d765a83439b421f7206596f592c282415fffab3c36a04016a5e8f1b4393f722fba5212cbefe0706b5fad0e2d8442da92db3ba11940fc1357d77ff8862b2c14d41e57e1dda083076af1bd4b8cf1f06302abce23c2ea7f1a6e1f54e2ceddf944626f52e9dc512f8e4ef15c26df46d1724cbcc9da2848b9f190fa3115510c27492ef53536377d544cd345e29fe476d219a8a92dab1e0d9287c6a531bb35001512ffea3d322f5235496dd0ed512ba752b133b0a39866586a0e6480c71786edbcdbd2f8a603eae732aa1734ce71935f9019a3f7466556ecc363edb3e8764050cbf16e5d9434dc94c346eaea473cb605409720f05c0939a0299afcb87747120fe1b1583bbafc86b6dc7433cf98d499f5118b2b2571cfee1a2cc661e5b460cbc5064c33605a1802af9735efd195b6cd1931b18a257e9028b58b349ba4935ee4ad903a2d665d872d9e56ccdaa2d3330a1d40a99c40dd893e083e38506ab13a952750ae7fe37975673850ffc9f2c912374b613e83a461ffecc9bcb2ce4d2aa8d246913be050f9ab114b15967a305a3f4486123c2d060781f7bbde5139f76e161ea4306bd1d495451d724324e15ac8e29eb772e042ce8cfbd59d137bd0f7e42c46595f8c0ec7763b88d215dee681456d1e17722df43a1c2a29aba785493351a14e8ea167e50f6e4fbed3a70c8386407a5222e198ba1e4658cde8e823be818aa2c01d1cb12a2e1aa8cab906d71ca642dc93ac72c4caf79b03d04276bf63c5fd87a35ee834f1930f348c55bc764f224d960031a1b200cdda403cb070a0bc2da551594477a5a54a0f337e39dc89e58fac5d302621de40a99fe4c01ecf1d04b1eac102e340b3e5243db938ca247bc087d9bc234452dc1842c5c1c7857c5e920dd1ef5a5f79309bf440017c098e8587b7052a43b220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f361e5a37efd4aa4075bf015903c3487d00000000000000000000000000000000000032b2054a1ff4c126ad4ec5e29b9d3000000000000000000000000000000876adbd07f9f901d08177ac6324681d1450000000000000000000000000000000000255574deb2c3d5304e587fcce71573000000000000000000000000000000d7b73474106c95250ec9c74d11adf96bd50000000000000000000000000000000000181995a8e81d6a488a3ae7a0eb9c0a00000000000000000000000000000017402103869df1f8aef9325bd12154318f00000000000000000000000000000000000304f0967ee8e5284d63977b14d66e000003dc","publicInputs":"0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010d479a9973afca679d8246d894b92f79675c4ebe01db6d6f1b20e98368a41295000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef7506d1612daf507b160ff518e5f0df28014966c7a498e474e1e88ab9813389fe0e000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000183a8619af9f5968db6aef510e527aae5927e5df6092d9498f183f4bc2afc5b115c4ba754a1c246494577702f41a1f2f87b62dd22356c3e52e041870e8b1ebfc00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"0x0000b84006f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a25900000000000000000000000000000000000000000000000000000000000000010f9fe51d98237f07b1fe2ed28a0b1711a8761970ae3acea6559d6ce43aa4748b00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb00741f5d36d813be1176a34d6bebc448d5820545962faa12baada1388e376a6a000a98887722a26a437a381ed7c38842490332d5d75138b2318a1c0a45508813000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df400000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000410b2f19bbe3ce429000000000000000000000000000000000000000000000002def48b700f3cd5610000000000000000000000000000000000000000000000051d50f73d76af125900000000000000000000000000000000000000000000000000000d26704e831800000000000000000000000000000000000000000000000b9dd450e4d05b69240000000000000000000000000000000000000000000000003537c5c62b54b750000000000000000000000000000000000000000000000008f7f6105e1006ccb8000000000000000000000000000000000000000000000000000098f25354993f00000000000000000000000000000000000000000000000da5985ad27dfc65b6000000000000000000000000000000000000000000000007b9c85ec64d90ead200000000000000000000000000000000000000000000000034ca769e743ea5b80000000000000000000000000000000000000000000000000001bae906b265e00000000000000000000000000000000000000000000000039aa45e3dd238081b000000000000000000000000000000000000000000000008d89bf29268b34762000000000000000000000000000000000000000000000003d859fa230c6d7cf60000000000000000000000000000000000000000000000000001896b57353e590000000000000000000000000000002c6b34bead75de91d541ee184caf17d2580000000000000000000000000000000000067eac1f2deb92166a2d3f2121c0680000000000000000000000000000009f499ba205d651c0d318b266cbe47f64d6000000000000000000000000000000000009d72192fc8b32221ea5a7136861b4000000000000000000000000000000e233c60872ce0f6668adc4f8b2507c840c00000000000000000000000000000000002fa217af73ebae309a30020b26f922000000000000000000000000000000c524fd3f45beea21f72a8af6dd0be8c6550000000000000000000000000000000000016dd717081ea6f41dddafd6a26995000000000000000000000000000000f006ed696d060ea91c11d25ce78f382f4700000000000000000000000000000000001d17bcf7b5f596d622f16b38d02e7d000000000000000000000000000000ad84ccd3aa54b886d80d8a61133215ece500000000000000000000000000000000001d82bbcfa50661e622c17d7776b27900000000000000000000000000000027a8c530c09d39ffea263e3ab82a936069000000000000000000000000000000000002128ffecb7aad7d871883f837648200000000000000000000000000000051c1bf06531148d45cb7897326444165f400000000000000000000000000000000003046ad9d8a285fa4478582a34be22a000000000000000000000000000000c5c32ed71106d9e5d551e6f726d8507a2b00000000000000000000000000000000000c5bc8678d0a0b12ff5e89143159bb0000000000000000000000000000003c59eabafa3508da576a5a7da8356d546c00000000000000000000000000000000000b246f52aead20a1815f60d1bc264a000000000000000000000000000000180f8454ea67f10b236d74f706f8f5c0c300000000000000000000000000000000001432cde5fa61affbb1a4f09b48d2be0000000000000000000000000000001170df84c804ac5c6fc6aa89835a48365300000000000000000000000000000000000ec3ba73f03b419ab382deacbb9c2a000000000000000000000000000000a5e71bc62c53d67e0be266e66e2b12a15d00000000000000000000000000000000001a3b77c1f4f526869d58ec29018010000000000000000000000000000000500bbf614c7cd451baea6652aca2f12e9c00000000000000000000000000000000001d4fec261d48d3f789b0b297a5801e000000000000000000000000000000a60f5098f067278db9d8a4766c85ec56f20000000000000000000000000000000000146a434066ceaf173502c29d0a17c9000000000000000000000000000000f23b81e0750657fb91da6b6f0142b242250000000000000000000000000000000000089f3b2f6d1e2f2ebf474e1cb3dcb01bdee3c82299da3fb6b1147143d5d1fbe65dee0992df4a21601064ae04c3306014856aaabe97c5ea019f31453dab866141d5fa3ee6da266fe3d190e5eb3ccfa1104670a17a475397625f91071d5f54775b4b808d4c2a55c9a6c38d5e67e661a11bcd854c23c4b2415581765e6d2f14d83b1ce0d239615c61d72694ad18d4c55f08feb4598d682aacad929932db1c8e937ebce96c96c02b24e865cb321c43f17212ffb32783d98938974af254c175e5a206e54a5b6d4c72f271905ca4ba779c7606cd11895eac790f43e3fc3dcb66cd5d496eb1f7ed3a7e7ded689d89a887cf690b6b638b21fcb65f6d209089237e21940ea2be861639426b7fa51c9612ee1e1e2fd65920ebb0675602684b44429514f28bafbab2f60871ce6aee93b8234345312902de12fca240cf94ba3bbb56330355740d470623bdb97d97be541477bfa6ff2b392e6ad0ad3c7785195f555c879b9ee23e43dcee50ce71ae60ab740238fa871d9fa0294620b55a52b313bc54da6f3a6ee51870fbfafe11939790e76cff437d031e959d8ba4922119b73ed0287c596bc5b9910dfad84971d53f1dfe3c7620c625213d9ef5cc6aa6831241f3db717b18a02f78f3ab8b055829d122fa779392721f1f70fbebe4f5909dde436709fca1032ae4bdc37a33ce97ee351c58a1c8d87a1d4a3dae067e5a6f84067cfc4c7b175c97f0d5f44368dfe08b0f952c2ea7cf0916c0ae6f56127487b577575d8cd53ce19eac033d5596508df383a54a9cc8903b1024d6f31de9a5ef4e617ca83889deacc83284f358dcc305418b9adf12d15b361eefb3ad8cefcf86c1188a6ba72b5777e21ab4d3aaf3d7269d6a7c54814d68360870eeb67d1525adcb933e73b40ad2cb07ebd4c3170d335ee5d9a4f18e0a3aec2980b209868467571d0e2920f277fbe5ac370be446442c654a952586fb59581c181781be305ba27dcea0e617d9e5592e994e407fbdb44cdb833067c5849bdae82db7074f9622fccdfd8c39eb26dc9e70382d1cbe2eb0820f4b75e26a0873907b009d4b99dcd46033e266ae41eb458887fe7497daed0a352d9fbaee7db0e34246088f2519884a4bc569006ced108271e258b0ebe76e3a8e2b95470ee80a56921c06d2bed62a676e8906378285556d803c7ea16b561ec99a3dfbedab25ee4132cd12769b140ec3bbbe8d6746da2503baa557cb186c73890c1a2741ca3e1f713ed92b0d4faa4a3063077deefcd37307128a6a20bc48065f73ba794de763bbfff3dc271adc34286c7147fdf256e5378c9a4a2b0ceb84d5d94c7efe9327038fa197363025a0353ab833434476bc717b5d116d9e8f921759ebaf81445f71e7e7475ced1cc26eacfb5460eef2fcaab73abbb8523065f2e5eca32c4128324263f9c822bb122bd6cfe2d03e17267375809684c6fb7d709ca3884c8861c6016a7a3ba564d909a1288632a089f1e50dfb4ccd1d9367ebecf128ec2add3dc9374d4496b4e2711e5078011a14726f8ffc2d4294070c46a38ba33f2a19e2e45e7ec7be601c0a6524f2bb5e3347989fcd4e84c24c7cc830471b290574068a103b9df1e22a0ac53715ad202157cdae2f881bd1c77e3a48330e4857e155910de62a72bf52725888830e1e55e670a5e535a4b2f2dc0432b3f4473553b2c3edf0f757b0aad657b482902d36de0ee7cac908349933f6a1a854e85d18c9ddeb410e7a1341e4ee215886d724e1d406da0490bb7140421bf2c9a20ded53255913b9681049d5c511f5b2076b148812857d4b44ffe435d8af4a3b1af4577128d374d33314098d286129cde20210071b62308143a765ba26ccc3a3834cd61d1b8517209e40b1167fb8e4772b1e202625c7dbee2173d2dbf14d48341c60b0b4b228ccd77098adb85e81d630c92222a5bd49465bd9584127789538d02e11415a1afafe3a69c7fb14fd3074bd9f52200902bb50354d28650414c78593a1f38470ddd7b2b9b599a83f0e493782257a2524853d5663b09ab1e0a11ff6c4f3984e8de065adb5394434dd7efeaf61623314930e31428903f8d86f0081851c4f9a3ed28862d42af01327d27bfc245c78e80ba014b663ffa6230d88fc88a6ff7f396af1a7d034062c27a501152e1c005fa10d4ac08cd575d1aa1bd2aa0cdf9db794e9115f7acae2512381ee0f8196b42c9f100d29873d56477ccaaafdc21ed6aa36ca2687f87700496552cc58f4a7dbd7d70d10a0a1fb46b5408387662983dc2edf7dc6c8e8a68f0c04e3e41b04c97e635721bf6a38a5bfeb33bb13f028e6d76e63296b9bade6f773e97c9f54a8047907d6139be4cbbe3579cc6d1835a7e78671c2e8e3b81e7d9aa86d0eb6f6fc0152f38518d4f7f2fa4322987f32859b1dbe4a7a354026fd04bec6cc0ea613fe7157af5e2a775337aecf5ffad793a8a1b86f923be799d4aea291c53a7db1792b2269470e132b9e36ec6c59f67cf93fec3cbdd9622a9affb3dab1e26935387730f5c6136f01dea89140eb921f998cd33786f58fac08ac4323b75f8b863f6cc202c22fa02b2ff6ea9df0fa16964172e0aa24b4f7f56abdf702dd195178a3188182a09f75651083f7090a145a360a27d9fb36b19bedfacb32a148e28f8a596faadbcd1cb5bd0c218899b64a9a00d89c3eaa3e3d157ac3af525210a8c612b97a340aa3e33aea0321b08a30928517505abb4b2a70f83d89f09c6640dee949c6f8541f70d9ebe02f92f16e2b063a367242b908c339428e3838b5a4fb2af4134c657bd292674c19137633ced15fa553c409053fbd0d29d3a28c1da87551cb75d9ed1e6b427681960519dbcda09d7f744aa7c80b0ac15f5dd50c71e7619163a43cc0bc649dc1f6311276d022dc6628737e47937db8b9388ffba538550fcc6d499dafcf32fcae92920c9cd3bd397ed68545ecad5f06bed12edcf9bf60d7aa455384e4a1594ac7a2d11bec2348d0f4a0dabe24ba61e31fb7586ec299fffcc802c66875ea1da4a6109e217542f214afce69e4a0b1c76415dd5c2add487593fb0fc91a3730bfdbf77c971defbe2e945871ad52f61944d1be0bf596da36a6c24db90632fe4dce87ab47240aa7854fe8e33b07f209c2d64fbd480472f7ad091e8f75dc1233a2edbeaf678c2b6df53ca14e81601d8679b570687ee3237b8d1edecd73d81d7437f03349f870013c9e4a7ad10c0242562ecbcd086933c6e817f7a797ae8f4f14e0e2856605ed2a6a4593cca5dcbb643481bf5f4fdf07405f8e8bb384dd5f66da3bb2fad8c8970243f2e82e41e826882536b59829eac37a27ceaf38027682387711f962e681212d663e90f247a3fb05eb165259c7c16e78c3ab8a5f4a1e400439324b54a62e3b1d25a514c8cf71ab21e772c18676a754969a7ee9055bfc3c0675e01ae1a245e3080be9b413d83e0fb7f963180f5dab4d79d5664983e1d499f0dda0f42cc25bd029cb610547534da034ffb5d105e506007a08050af663f5bd5eb3a7a95376d5ab11a9a2838b351cdc24a982b1a53449567baeac2e361f085aee86061925515e0b221dcbf06c522b3f496ebf18fe4611b23a132239d4a3bd444286526527e67e892cc09436f28533724aa0f637111eda57e06dcc4fe13968c40fc5015c05a8c7061e7df70dd207afc82bef2afb8e0902380f7154d3b382c4b8eb4175b6e076292923edd5111e95f7512435d9ba66c03bef2feea1a720fe666648910d6f455fa1912b41130a10fc7e05452c024d9845a126b921741225723579cf2daf8b8183ff45099f3572118e2338b37104cf9581bf0dfd28facd762d4b63525ef6f91cf2c666196c8327036eaf4882b43cb0f98f57c89504b51a419c115c1c1d4f47567862a51dff4f8527fcec92c5294c8b17675432d45864d74b5807e1995b07a0cefa833b0dd83bebd349c38a91513fc5726a6d8d897ee75483c7d1413690cbb1ab46cd3305f4dc36f099e0d7a05a0665d266060d6c8443a1d6ffa4452bd61dfba8d97cdd2d3f3272ce838fb68be1fc290b727593bafd171b0b4499bb2847358d397be4c82d19baa92ef2731e87d9ed68f53831cc8d0bf0b32907641b544bcdb20da056080987a8694f95ec427e3c121169d321fcd1c68c41631d2ce09bc3b8c60a48f104149afa1de714b57f6e6ecd6e66383bb9353e3ab37d1eeb7c2de7eaeca30a61121e386a2094fea8c619806a7c85dddf89d4dca2b5ce4e81288e7ef269c4d5cc2a09597748c96d733a3562da4950095b57a2d47997d7cf81b622efdb35b06e260a0643b055f4b8e248431215074138c7be471f2fcd39eaecaf122d650abffef91716340a5cbc9a68191de6d9ee04993943a89c0da1398a39d60c1724ce7f2a82110e7e89537b43233ade2a41a048aaeb8ea4f34a95a21a665d09c918836d1853e92ea77cf4b384c0eacaa111c75e5bca8b0e667f9112710686afeabfb53e9e2d400f81a17073237472778b813152f9e799d08f9cc0e6a061de9ff568faecb48bb118ebcbd5393b8890ee90e0e20f931823ba85adbe1aaa004a8ced7490aa06ab382fd88a9285311c0bcec0d415700337eaf6f92c046e105bd145a1f4444232c71d08bd1d276372ba5515f7612f699bcd6d4df13f702599162041b794c7195d9bbe2fee671ea093136f09db9b2c98506ff30229bdb702c57951c46913a2afb788d2152fc88974db81c9674057590a215064591f973658509c0e3c94a661834a1d5e27a385a354e7c782b3f2b41423c24ad426988ba8db83697927174e278075787a12c8c1217189e9cf38f2aea6b2577825a3d30aa5a3750909a56330d621447aa00ac4367984350622d2ddcdf0af4cd826e568025f257f12366cdc328b1fb6ffc527af43a3949135cdd34cf8b1969d45e57d7d12d71792c73ca44a0ee48510a1c61b265b60bc3a6e9823ebf25340a19a7da9dca996fc5f189df8703b621aa0897326dfb13522c8eb15d0cfeed357982453e654688223b93f59a892dd2b6e51d90e1d5e5a4d7865a04e34818b604a66e99400b93d3b3d8bc9b89865f0146b395fde140a1082717c5892c4543cd1069ad7dfbaddb90f18cf54b57bc4476369ecc6260b6b6c45a8cbae07da053f28ef1d302b76e8efd2693a60fcc26d0ea4f0cc4d732c099069131b4526dc1347fe9dbd47b6cf8aa4a0659ebba83cf49fb18348866e0e4a9b5bc959222ec8bd82b86efc76cbf7518df10d7815336fe15a7a9c738c2e298f9afc168adf2b2ea3c7d4c77adf643d6c9ad959b267ee15affe51df40ed680b0608186aee0aff21a54e6cf1fed11e91db01960aab49ce366f2f4e437a68b60c09b507cb393c09d6ea9f374be4bc0466e732d6c9acef9e4bf001e111da8c260b667916f8bcd1e14da0bf918f7afae5e78c09c6c0dda3aa9ed82dfb9b7ffa9b2a4859b0827dffdc3fe5546d499fbd5f280c5414c85fa9297d703413cc52a8f11a96342b62d38dec2deb5e824528e7d371300fdcc1f6b9a463664abb9a2ff7102096e8435c6c2a58428975136d773d82151402a846202e493ebdbb5044799a120e27528d31721ddb053b19c404715210651a3c55513d034643aaf38a92e7b00d006721baa57dedf121dc4c6b4fd5193186b69d9ae8db5e1687cda6b25b078cb52a36df60e96d19531d301d2a77bfd1e13924198fd4cca4842607b94175462df11912b57a584bf56fb3d1135e54c61aa5026176a4a080901f86181a1076c66e1e2903466b5c9c51abcfd0c56c6f61d468c8274f3d4d840be560436cbdb67026151b6fe5c2ca1a287daca5b611a7affa223f7f0e2dab7a7525e3c721f6bb01ee081493cba9a64f2c6f2b29c1dbdad8713a936b2e2f0f639470eb505bedf3546c6805af04da2dce540cac17bf7d23d8fa3cad0e43d2945b35e299717699abd36c2028a24b748e6c72cc07df025bab5398cf3c869e13784756a95e36a835ad65d71508b58100ee88a89bc0f581abcb56f6f34d3f3538029b5fdfa7a3d63922314d8c0544eb1fc64fef07f0114d7955e93b08f912d6fbd8e13a2c71de18af1f67a27814d8499744b8913ffb35b8f266b27667d70643b8865e8fe092873fd78c523f350314e5212c33dfa8684f71335ae99cfb35c3aee226b8311befcd13be4a337bfb225f228b4e6e09f041d1120c4de9490cc96f01f7a5cfe05f17bb12800340f6e0278fd945561ba96638f549d284c0e0e7cd881efa91b42ed645fd64b97be891d22184d21c2b98317d357282669b97ee31af064ceaae014c7273672b086844f78b2766e664eefb1e12f595687c85e20fe50d8a5e215c27815e96f09ac2bc4433a2209109e4d00236bce792a46435f379f990f02941689ef12a09a1439a5f08d49b1c6a185808b024be2a6ef1f3a0c7764ecf5ba54d942e9a8ea186ac5f1b55db512a01365049ab9a62e53b242f991dbb5695f7deaba636b4a71fc9f4930bc795e1145276d3dfb970346e5c31b090ef343314811d2ebd889b79ef4356f51751b5232e795b7c446bd33e729950b3ecf0824e8657222aa6691dcf33d2d5b544138df7225bfee09e73d06565ce7d1d462e976db543647482926577010dfd2a8362612310ee799196c7f56adb417bca86f5e43fc988acd7c5d330379d4075ec00127cfd047f993af7f6422956cf7201b9061b4883dac729e00e51b9c44386721510b260007d040030c6d305c44938b048fa4e94cfd74667c96996b9709eb6dc7c5f52a2093b4f22f48d6f021bec1735f9f378eb1ea5ee81861b44511d3ff9b5dfc633e615cb768c8934450532db358cbe22bc4a88cc3296bbd872d78f7c441b918636930fa708aa8cde0910be2e53f7ac6cc8f50c989b8db0cff08613a3ea8791ab297b16e3e12a4b87acb4f51b950234d75d7346dc543937784385e81169134184aa0d0a65e0ab801924e78c5394326b43badb6d119b2a8279482e08e389696d4dde23024d5ed59ee6de3beb50c20c23a9b6fd3fd4ff2c227f31bb8442d43ba1921e0f13afa6561223b8770166f91329844906f41ed715f427e03f7de85bc75bea68ea1f2e5da02e22a48d4376343150b6c56a4dd96c9a98878ba9813912f8ed16bf860400fd3094da8557c9aee990bc47962af447efeb166df86663c6bcce11a949b3073a41231982433994b22928121533e5f335a4ebb130fd66caa6860123caf2992627e9e810ab97245aea8abd4cbde5e1cdb7dedbd7c55b8e50e49e241100ed5b171b8f4a7020b26cf0839f0e365950d0526a0bbc93ed238357bd9acd56f39a461df9696ba93af7aeefca18b21bde264dfc3e340ecb216b4848a4bdf21b4e05f92ecaab75b87e8e74675bb7cd4a939a191d2efa46d83345b6099e77dba92592b913ad97777b67a14eece0ea493ed4f48031391ab36ed04713c631f4d1fc39af8c050fe01fdc3212ab988a9d2f412e38fc1fb0d2f46424ffb2c3879d2fc83feb7a03adc1a4dfd4295907ffee271d185acbb9f747850ef46b2df747d59d6f98508a03c681dc6bf588e638dc0ec77133ae03a23d104d3a51c63525f00b06474ecbb71ea8613c73dc2c268be4bed6c5d5b46c61480234ee84e126515903c0fb7b69b516c9302fdb04f9467d92ee775d8a63b0e1d76afd83d4b7f3949678259868ae972289377a421fd0ab1cfa3454639d8527214373348af3b39bfc24dfa608e00d181dff1b9cc8f4d984c8a4c24900969c2795387fdd89c2c17baaeec2b492abea7405354af8f3b71c942a7db8487ec97f0333cc8a6bce1bc3d1f537c95029d999f6095b4b1ec1ea059ab0dfe7a637a4f1e0d23f0f12726075bbe9d6e616e92741b10890b1a77385afa0526639c0ebbdbbe3f5b24edcb7c372071de333abdea336cb2498f1a97f69e3a52ccbf1fdfda6bd98f1a4975ee0732f559c9f56e56be42b58254d219137aa37f746cece66d4e6fc01412b93312319f1903c5d0550c0ff439f0c6f529408de5b98f92a97ded06c2bb0436d2dd3bb14cc472e3102f1492e2396008cea0bd43aa48862084cef7fdd21b122fbace048e8e87341e83f908b9c29f518ebc9579f6a2c34d5f14c359fb7aece21141a785a7de254f3de3ba28471390e1c70cf6281ab7d559c948cfef29d284cd3872b301fafb8e3a4ae892b39c30d0b190d8f1049a9831aebb846cf61f62845d938db6afb7e34bf49af485520f9055d18cf0f36f84c3484f8c5fcea6fd963d9063318cb7bb661c212dfd9f2c6bf1e5a172a9658deaa05a417cd80c923abd3546338dd91c67fc69346d0b6ebf7231fc909d1b05281937778fb31ce58f4f2f1e6bf43583b2e891f104884669de256f33e19793a93a12f2d8cf20d4ab9cc5237b6e4a0199fa2b134d797c50512bb4ba3f923e350a6f322b660a09bf364d537259411951231097d0e941918b2f70527ef902f79113d9631715716eed90ab25916fc18e093619e955dd1b62c39a1fca75cd900eebc2143e8fa1ac63326b30132c7a9bc5b9591d7332f13e959355b964847c3293a5be3f55f32ae8e4f068adef1a1588b2dc45ce087c5a6f71221c8f6aedf091b3387c0e188d331fef6664e047fa024f4a41871c8d1ede19eafeebd2d38b66e074a5d61ff4e7bb9b386f2d26da374aff440f378d01b2533ce33ca2fdb8a44fe11b9ac22d13a4b9709ba4f2bef54add79130abfdeba35757adba17b01a74cd32291e5952d3cc7a7170d65f60e77c34c08e0bab3e039b2399d6240bcbaba91b8d2851708a81eeeb3590a84bf88f508df2c8f4185f309047492918e2d5a2e3e6290d5bc8d56ad3e2ca1488a5b715a912dda802d433afe44454d0983a1b0df64c03302b09edebcfd34b999af5e0e78d373a11853354165a47a6f7d7ce600423d54b21965478f2534b1f4645421e68c2174d64763c395632f0e46092660903d4c4c121952ed1bcee614e70511b31814172b62746e133b7e022aab037465d66c70cdd1f521aa2eba1afb36d5566339db6c31b1f62bec0797be780d67a877f386792322cb42f3c3b58364ebcf581d703ea9d74749a6f8152ed17184d30a0f4d28b3b5c0af0d288ad4bcb2944f9213c2b45d37b14831fe4df5160f05898d88203898fa80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b92dcd64736150855c392029a2a1e0252d3cd7b155a72ceb7fecb5c2275b88c13a7910ef94ff7c1e6cc0ba1251eae503af5cb52241fee6e25a00a3b50a6b8f91442d82574bf12c5e7cd09f391ccf610daafdbe0ab14cc28e15a5a252255c8e9299ce764ae215a43693b153aa44b4718583b70ad553d81598a5431e1715411de2ddf20c131ea7e528d15b002d96987821bc093c7c0a9c9a87dc8fa2df78b75e302f97ee81b62fb3bb56a76c2f0c17853e598157241cd324a810ecdd7b8b204802f931d4303de840b722e854be8af70a223236b482be90ce16f62917ba570fa840f5e48408806be9f6ddf41f767bb8e225f0b3454e38b72df40bd32221ba8989a081c29e5db35a62d7d05b4c7ee49a5ada3161b961b8295ed3f52b736d9cb13c929697707f076567ff92a56ffdc7eee903c29ded74b2240541bcc5b3dc50c1b69266dfe2ee51885a90b3a85bf9cf76be441eb39366669aff5d282de383b71603e212f748e7337962fef3a53c248ab462f4aa42b97b28d137e0ed994ddd449403a0f0d463de5bb8d6ae42016358b81d8d6424d31b7251ca64fccf64078bef6c9c12bbdfdcebd6e850fd6c9320c0eebc8b4512e2f85318f6985e966a955fdf8d81d18653845a901b6083d38d891953f7e4598e1b05f843f610e0ae3ed89a0c194c413183e2e6935ff7e80e2feec7311e62baa7c63d87d72cd8efe7906cdf3cca6be220178b15e02cabda1f56a64d335092730a4f0aa86d6ae4824779b1ccf14eba81c96a308c3e3883e3b5a18b5f0c8bce54edf3f35533f51f51ccb0283e90ca73c11facaff4e7f32f95a534b410caa148a90e9fd73374b7689957fa61ac0e74ccf0b1e47f5c07520c4decbf2dc338d673fb1edbd25f69e5ee77f0afd42f04d3100094ac43aea69e62cdd642b21387c01b397d57c52652ed62dec3b2cb4bbe1df4f157644e903883201e162b13f75b6b43cf86f217967bee62b23359dc4dd94066f100639e51419402859099c3a9a484b6e4aa2faff0ae00519a7fabd76b62c661d1687654fe5920d716d62e806cb8f8c7a2bd7139789efddff99e833c4758e02b617ca61c0c3162b4d69dcd73b81b9fc41ae49fc69b0fd4e8affcfa96642a0ef6a188ee374ec15e9c691f2e8eca1bf9ba09eb66943890080c8855433befb5c56b927357489c6ff56668e5ec537ae1d626948c70f93f6c5085bcb2ff9befc8b59aa13a816293391b7d695519af89bd549e5217d1bb6285f85c04625dc7580d05dc626a0bf096f07f9d6f993c19e099a1b44a60f188063d84764e2e7b7eb1f50844223080776b7fe9b52f696310c79273522eabcd23ebd3d0a56787e3648777b796f19515756abe9adc3b986e2e2fb525dc8f051750d278e71ccf381de65f57ca49118e158a79ddebf365b4c0c95c8258d5e212bc23f8e64770d473880cff41a77751b3295e9f5fbf28848d0465869a84937f4ab59d57d0dd810afef17cc615fd61c16fc9d56b10f718dfc282def03095d7d522b49e580b95c9d49fd23b73cd1a0341d62d2b5889d96b6ab4bb3f5d08501f4674e01e4ad6c38b9a6757b4e23fcc98c105dc8097be5f52b1ccbde68b8aa747568beedebfe0f2c4b2f815f5fa275ca0026dff489a62d6039359846de4d9e247eb500e78fdcfadaf63fac02d1d9f7ed5d297ae59e8455f14df35dec4bfc273c85f5ef4ac4e5a6c3112963535d756d2ca00b99043fc00ff59cc725b1b9ff5ff2c2fb4ec0b38c1630a2e877a03179351e9f2ea0289b38a7284e73012ad582afa9fc6e8262d514f1dc0e072e445ab73cdbe900000000000000000000000000000071fbeff0789bda16744638aa4f18a1613b00000000000000000000000000000000000fe40656b93d68757f6ce351a39663000000000000000000000000000000f71eb9fb90bacad4779a83d6911638434500000000000000000000000000000000001ec37b201cd9e0c2385c655adde88400000000000000000000000000000069367ab1a5869236efc46756c3253059e0000000000000000000000000000000000004e1617b03a74a3b6635bbe1fe82d000000000000000000000000000000098af30642123678450cb770b2758b0f8d70000000000000000000000000000000000185278767130e1ed1411a7e2d91aee00000000000000000000000000000083eadd105fc741492f1e08699bef6b8a2d000000000000000000000000000000000008d5975b7632c17ff57e75679a2b8d000000000000000000000000000000a5f106e58d8168224472106253b59f896d000000000000000000000000000000000016cad9dbaa8c5ea85d11b7b3f768990000000000000000000000000000001601e38ad609e132141ae58cf2d7ad85d600000000000000000000000000000000001cba82ec77e7e5fdcc34f5a63429ab000000000000000000000000000000cb36baa52bc694812f1e6df4813047de8c00000000000000000000000000000000002f9c94625b0de7c888fa64240d9dd90000000000000000000000000000009f69f760c81ed3afc6a36cc4527049797600000000000000000000000000000000000f9c24d52ef09d4b72d4d5970037d4000000000000000000000000000000a0e993715a0302e70436bb0f971e800751000000000000000000000000000000000018ac1aae7eb47e87723a37a77cf6c000000000000000000000000000000050c5612b532751e51e5029103bcc2b469000000000000000000000000000000000002568b7ffcceda6a28fe21c750bb03f00000000000000000000000000000033f048c82393c71ce8ae2ab8f919e7e46900000000000000000000000000000000002925b76b1b736a588dc718ab6f7f27000000000000000000000000000000ca3369ffcba3d269c06631a098d89fa16400000000000000000000000000000000001117687be2712b7484a789c809e77c000000000000000000000000000000a6ce213d542e2f6bd5cb841647a0847c9600000000000000000000000000000000001649e0a36df15d99a73cc82dfc06f70000000000000000000000000000005fd2a59f8c38cdb8dc28cd048b12f855030000000000000000000000000000000000276779b77cf437cc6de2284c802f7c0000000000000000000000000000006a35e997376021e7c6978bf891980ae155000000000000000000000000000000000023359abcd5dd1498476f884fa549370000000000000000000000000000006aa8fc951bc85346bee0dc5e4d5db1c5f300000000000000000000000000000000001bdcef227690666b90de276041a6760000000000000000000000000000005c273646be7270c51bd2e40215fac94ea700000000000000000000000000000000000c5457771b4a93b497409326964b4a000000000000000000000000000000130f8507202ce574c96d27410e5d525f11000000000000000000000000000000000020cb1a6eb5176e1308a83657ba8d490000000000000000000000000000003d47dee7dbc9bd0dca0d32e412c184d509000000000000000000000000000000000008cb8c7f20ebac694291ced3f7d4510000000000000000000000000000003af41ae8a2d8f1a81f33ae45ae02a87f220000000000000000000000000000000000091a8efd28fd05ef9763b22c3e340000000000000000000000000000000079e28b912117653cfdd07e4ccaeba98da20000000000000000000000000000000000096e1567678b4b4f422d850cc8aced0000000000000000000000000000006e594c86cb2f2b7fa82ff67d7087f727c800000000000000000000000000000000002841486d30ee63c5e2d9b474684b8a000000000000000000000000000000cc962b759e246898cde08a98438f01612f0000000000000000000000000000000000052e1e0aaa1951d709e8977994ae1d000000000000000000000000000000318eb36803b8558feb7629f6adbdff693200000000000000000000000000000000000863948c867ff071ebd2295e18e4d3000000000000000000000000000000d29a72f9dc7daaf4f47a43c22d136315b200000000000000000000000000000000000639f12ad5c236fc52893f963d11a10000000000000000000000000000006b12f90bd4b9c0c67aef8a5c64264c5ee100000000000000000000000000000000000e09b95b35b6dab863c41f6e17e68d000000000000000000000000000000c7dbe11fdd4461b063dc3e76119e3246540000000000000000000000000000000000013536d24cd826c92a00b1eac353790000000000000000000000000000004d4b0cf849d3fdcf077f5625b29d2f97f300000000000000000000000000000000000a2fec90f64715a360b36cb1bcb284000000000000000000000000000000a5e2e539cab8a93138e5992d26a63f4b2700000000000000000000000000000000001a7e292efaaa3bb643d7c5deaf818c0000000000000000000000000000003d91b8763eb5918c80033cbcd8b6912cdf00000000000000000000000000000000001294dfbf29ef45dc7708d4d5e75a3300000000000000000000000000000029f129b8ff11a1ac2ab56a87fbddd75d4d000000000000000000000000000000000001e2a4b4673c8b1521de8ce26daf140000000000000000000000000000004fd8542b83b1e60045bcd1fd73ccab8bf8000000000000000000000000000000000013ec6ced5beffafb93d944a38781770000000000000000000000000000001dcc1c6387dcfe698c53471b40120b800c000000000000000000000000000000000021c9c2b404eb32271bdcd86b52f12a0000000000000000000000000000005ac13954a663866a1ff729f344c107822b00000000000000000000000000000000002e3efbcef4165b0414f1679e7f5b20000000000000000000000000000000ee9ef4a0773b7224b22e55ce4d225477c200000000000000000000000000000000002774ef2c1b481e937bf89ec9e66467000000000000000000000000000000c1cd5478abad10a10aa4151c5d56b3c7420000000000000000000000000000000000148442661352ac8e0152e4c75c72350000000000000000000000000000004ba503da163f1963279995a483d9f60cba000000000000000000000000000000000004eb09c6751efeb0e7bcaa609fc3b0000000000000000000000000000000e7465b1b77864a81aa2625ee8d0d3a91010000000000000000000000000000000000091a9d660177e17008f2117896c7b100000000000000000000000000000087afd9fa043d8c8884048c1be54565f9b50000000000000000000000000000000000147024fdae4684a1469869f766e4540000000000000000000000000000004245b9c6c0268eb48f26ec2046c2382e1300000000000000000000000000000000002f2ff517e37327cc7a38faf6f21683000000000000000000000000000000d0653e08db5ad213745105322e9d3db9c400000000000000000000000000000000000fa7e62264523b1a34a96b305974aa000000000000000000000000000000d5cc8808cedc278f2283bd956b4f3e294d000000000000000000000000000000000002451ce80d5328dc4840f83a3a16ed000000000000000000000000000000c7e20a339e5af7567c2cf7a67c115ac081000000000000000000000000000000000010a40cfd9a7e000cb01fee1b7975220000000000000000000000000000004cda3e30f71e7a2b79f9d020efe60a8e0800000000000000000000000000000000001a92768f2c5641a0aa3c577655c6e3000000000000000000000000000000ba95bd2c90e32e94840cf47893a1de4c260000000000000000000000000000000000153c9455dcc45590328f1a731a162d000000000000000000000000000000ef7052f1e93aa883b8013c965fd16a86f6000000000000000000000000000000000016bd462aaea66b5636c6a1fe3d1c5c000000000000000000000000000000fda8fb0216528c9648f18c23814ea418f200000000000000000000000000000000000efd3a2637212806d70fb00a3f2ba40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002a5b241731cb52baa977c18dd630849b9a4417541167185de28d7629b4b8c40400442081b97b35959e0b9bd0ceefc6781b25f718916f436614c23c1d42d10d8a2df3add869b1a78850c865e50946015be2ffd708400c7fc6ee890e854e816f9a1d219578ce42f4172468ef71da6a5f00c59990d2e223437ee4f76deb9edf0a1d196f3bc356231838cdf5515125c2917c634ee6183a190836b87900412c9dd49f1b6fd1883d5bdd82fc26beecb778b072ea4fb630e6103932a18c1505f3015b7914847347c97e9d08bcd75a13756e140ff7a23f91c9441b78ea7a2e84e363518505f210a2e6124351cceb363dc239bb7a13f4de6af1fa927feedf61e5ace0ac060e1395cbf7a55980b78ba87a3b547298c5dd745f265836f88e3d930a75ffd26b299b665aea546d4ee1a31199542c9f65b3fb6966e99f79fc563f6ee51d166f87165f4441b686dcd1928c0be77ee01c7968ac0f519a6ca47f6bc24949859e6dbc22824ff08b3d9f79532044980a1a108e1c4e0e3e7a064de93b84fc8f1fcedc4d243cd75d0d084d7227e593a32273849cd134c74a31234fb0bf22203cca536c6f14814ed1c232bae098b67e70e73b27c0338af90b042f4142c9aaf25e3f98614b18302aba73c0ea3c320f082c7032ed41e0bfb13b5f33c643f7d106df76cf22b2120d15ee04738e2294c8bec547c3d46f3419e5e9e301979624fe1d10458cb7ab0e6dd6a01f98e88bd27739b974c4d38109db76a9b2c2c949c7be80493cb859b52952a5e53076760923d93995500f0377a95d3b5baeaf5f2977bb3e0c06d4de8e2a474d2b40fe365b75eb0429af9e6f25ea765e36fe41ff76fbe9b4954af45d88071d1c3179e45f58ab8ef48c2c22647d7508993e1be6241b120cbe95c355a4fc20ff49ef0789fa8b4d5f3e1c8d08e934f518a54dbdc202689ca16d58561e3f7328e8a2ee4b8c0b15e51754f9454683da43baea7f825b919ce07f0428bdd00b062389028cf0a659ad970af3278af6be36310b1afab6640021d035539b7f0156ee1449124c018fda316c16f21a6c06e7dd916f4bbd7e648f18a7d72d6b6ff873681936ca7fbe1a812fad3a3f2b684ff0a88bd287994b172a5f12e13dc520b68d75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4a754795cceb06d34c837cf7b8c6bbae900000000000000000000000000000000001d88d6877cdebfd469dc9c4de68efd0000000000000000000000000000005723a672dcded316ef81e69ee8a5b59134000000000000000000000000000000000002ad92b58c4105e782f0ad7c990c2d000000000000000000000000000000e16b25229d0f2edc7eaa583cc5a26f713a00000000000000000000000000000000002e5b1e61da218c2a7b62276e403fa300000000000000000000000000000045e39b06fe734e6595fba9047dfcc329a6000000000000000000000000000000000008622ea9a68bd90b563eecfba5e6110000040a","publicInputs":"0x06f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a259000000010f9fe51d98237f07b1fe2ed28a0b1711a8761970ae3acea6559d6ce43aa4748b000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb00741f5d36d813be1176a34d6bebc448d5820545962faa12baada1388e376a6a000a98887722a26a437a381ed7c38842490332d5d75138b2318a1c0a45508813000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df400000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file diff --git a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts index e03f6c528e63..4695d91c97e8 100644 --- a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts @@ -9,6 +9,7 @@ import { getTestData, isGenerateTestDataEnabled } from '@aztec/foundation/testin import { writeTestData } from '@aztec/foundation/testing/files'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree'; import { mockTx } from '@aztec/stdlib/testing'; +import type { BlockHeader } from '@aztec/stdlib/tx'; import { getTelemetryClient } from '@aztec/telemetry-client'; import { buildBlock } from '../block_builder/light.js'; @@ -19,6 +20,7 @@ describe('prover/bb_prover/full-rollup', () => { const FAKE_PROOFS = parseBooleanEnv(process.env.FAKE_PROOFS); let context: TestContext; + let previousBlockHeader: BlockHeader; let prover: BBNativeRollupProver | undefined; let log: Logger; @@ -29,6 +31,7 @@ describe('prover/bb_prover/full-rollup', () => { }; log = createLogger('prover-client:test:bb-prover-full-rollup'); context = await TestContext.new(log, 1, FAKE_PROOFS ? undefined : buildProver); + previousBlockHeader = context.getPreviousBlockHeader(); }); afterEach(async () => { @@ -60,7 +63,7 @@ describe('prover/bb_prover/full-rollup', () => { log.info(`Starting new block #${blockNum}`); - await context.orchestrator.startNewBlock(globals, l1ToL2Messages, context.getPreviousBlockHeader(blockNum)); + await context.orchestrator.startNewBlock(globals, l1ToL2Messages, previousBlockHeader); log.info(`Processing public functions`); const [processed, failed] = await context.processPublicFunctions(txs, nonEmptyTxs); expect(processed.length).toBe(nonEmptyTxs); @@ -72,6 +75,7 @@ describe('prover/bb_prover/full-rollup', () => { log.info(`Updating world state with new block`); const block = await buildBlock(processed, globals, l1ToL2Messages, await context.worldState.fork()); + previousBlockHeader = block.header; await context.worldState.handleL2BlockAndMessages(block, l1ToL2Messages); } From 06b973f63d212a09d03d7d9e4ba07b78650ef626 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Thu, 24 Apr 2025 08:41:13 +0000 Subject: [PATCH 09/10] Verify chain id and version in root. --- l1-contracts/src/core/libraries/ConstantsGen.sol | 2 +- l1-contracts/src/core/libraries/Errors.sol | 2 -- l1-contracts/src/core/libraries/rollup/EpochProofLib.sol | 8 ++++++++ .../crates/rollup-lib/src/root/root_rollup_inputs.nr | 2 ++ .../rollup-lib/src/root/root_rollup_public_inputs.nr | 2 ++ .../noir-protocol-circuits/crates/types/src/constants.nr | 2 ++ yarn-project/constants/src/constants.gen.ts | 2 +- .../end-to-end/src/fixtures/dumps/epoch_proof_result.json | 2 +- .../noir-protocol-circuits-types/src/conversion/server.ts | 2 ++ yarn-project/stdlib/src/rollup/root_rollup.ts | 8 ++++++++ yarn-project/stdlib/src/tests/factories.ts | 2 ++ 11 files changed, 29 insertions(+), 5 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 1b13869742bc..751a42761185 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -217,7 +217,7 @@ library Constants { uint256 internal constant CONSTANT_ROLLUP_DATA_LENGTH = 13; uint256 internal constant BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 1032; - uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 1018; + uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 1020; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/l1-contracts/src/core/libraries/Errors.sol b/l1-contracts/src/core/libraries/Errors.sol index 7833c2ad0e97..70496d9fd07d 100644 --- a/l1-contracts/src/core/libraries/Errors.sol +++ b/l1-contracts/src/core/libraries/Errors.sol @@ -52,13 +52,11 @@ library Errors { error Rollup__InsufficientFundsInEscrow(uint256 required, uint256 available); // 0xa165f276 error Rollup__InvalidArchive(bytes32 expected, bytes32 actual); // 0xb682a40e error Rollup__InvalidBlockNumber(uint256 expected, uint256 actual); // 0xe5edf847 - error Rollup__InvalidChainId(uint256 expected, uint256 actual); // 0x37b5bc12 error Rollup__InvalidInHash(bytes32 expected, bytes32 actual); // 0xcd6f4233 error Rollup__InvalidPreviousArchive(bytes32 expected, bytes32 actual); // 0xb682a40e error Rollup__InvalidProof(); // 0xa5b2ba17 error Rollup__InvalidProposedArchive(bytes32 expected, bytes32 actual); // 0x32532e73 error Rollup__InvalidTimestamp(Timestamp expected, Timestamp actual); // 0x3132e895 - error Rollup__InvalidVersion(uint256 expected, uint256 actual); // 0x9ef30794 error Rollup__InvalidBlobHash(bytes32 blobHash); // 0xc4a168c6 error Rollup__InvalidBlobProof(bytes32 blobHash); // 0x5ca17bef error Rollup__InvalidBlobPublicInputsHash(bytes32 expected, bytes32 actual); // 0xfe6b4994 diff --git a/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol b/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol index 9746b747a7bb..ae9767563411 100644 --- a/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol +++ b/l1-contracts/src/core/libraries/rollup/EpochProofLib.sol @@ -150,6 +150,8 @@ library EpochProofLib { // out_hash: Field, // proposedBlockHeaderHashes: [Field; Constants.AZTEC_MAX_EPOCH_DURATION], // fees: [FeeRecipient; Constants.AZTEC_MAX_EPOCH_DURATION], + // chain_id: Field, + // version: Field, // vk_tree_root: Field, // protocol_contract_tree_root: Field, // prover_id: Field, @@ -195,6 +197,12 @@ library EpochProofLib { } offset += feesLength; + publicInputs[offset] = bytes32(block.chainid); + offset += 1; + + publicInputs[offset] = bytes32(rollupStore.config.version); + offset += 1; + // vk_tree_root publicInputs[offset] = rollupStore.config.vkTreeRoot; offset += 1; diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr index 9af368956d20..7f0682bbae7c 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr @@ -75,6 +75,8 @@ impl RootRollupInputs { out_hash, proposed_block_header_hashes, fees, + chain_id: right.end_global_variables.chain_id, + version: right.end_global_variables.version, vk_tree_root: left.vk_tree_root, protocol_contract_tree_root: left.protocol_contract_tree_root, prover_id: self.prover_id, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr index 2accc9435b78..1c59b135a69e 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr @@ -12,6 +12,8 @@ pub struct RootRollupPublicInputs { pub out_hash: Field, pub proposed_block_header_hashes: [Field; AZTEC_MAX_EPOCH_DURATION], pub fees: [FeeRecipient; AZTEC_MAX_EPOCH_DURATION], + pub chain_id: Field, + pub version: Field, pub vk_tree_root: Field, pub protocol_contract_tree_root: Field, pub prover_id: Field, diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index 646a2873301a..ab1555ee4a41 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -461,6 +461,8 @@ pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = APPEND_ONLY_TREE_SNAPSHOT_LEN + 1 /* end_timestamp */ + 1 /* end_block_number */ + 1 /* out_hash */ + + 1 /* chain_id */ + + 1 /* version */ + 1 /* vk_tree_root */ + 1 /* protocol_contract_tree_root */ + 1 /* prover_id */ diff --git a/yarn-project/constants/src/constants.gen.ts b/yarn-project/constants/src/constants.gen.ts index 787d65a98a32..0154e408da21 100644 --- a/yarn-project/constants/src/constants.gen.ts +++ b/yarn-project/constants/src/constants.gen.ts @@ -197,7 +197,7 @@ export const AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1026; export const CONSTANT_ROLLUP_DATA_LENGTH = 13; export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 1032; -export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 1018; +export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 1020; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index 616ea38696b2..c2441e1fb1bf 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"0x0000b84006f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a25900000000000000000000000000000000000000000000000000000000000000010f9fe51d98237f07b1fe2ed28a0b1711a8761970ae3acea6559d6ce43aa4748b00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb00741f5d36d813be1176a34d6bebc448d5820545962faa12baada1388e376a6a000a98887722a26a437a381ed7c38842490332d5d75138b2318a1c0a45508813000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df400000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000410b2f19bbe3ce429000000000000000000000000000000000000000000000002def48b700f3cd5610000000000000000000000000000000000000000000000051d50f73d76af125900000000000000000000000000000000000000000000000000000d26704e831800000000000000000000000000000000000000000000000b9dd450e4d05b69240000000000000000000000000000000000000000000000003537c5c62b54b750000000000000000000000000000000000000000000000008f7f6105e1006ccb8000000000000000000000000000000000000000000000000000098f25354993f00000000000000000000000000000000000000000000000da5985ad27dfc65b6000000000000000000000000000000000000000000000007b9c85ec64d90ead200000000000000000000000000000000000000000000000034ca769e743ea5b80000000000000000000000000000000000000000000000000001bae906b265e00000000000000000000000000000000000000000000000039aa45e3dd238081b000000000000000000000000000000000000000000000008d89bf29268b34762000000000000000000000000000000000000000000000003d859fa230c6d7cf60000000000000000000000000000000000000000000000000001896b57353e590000000000000000000000000000002c6b34bead75de91d541ee184caf17d2580000000000000000000000000000000000067eac1f2deb92166a2d3f2121c0680000000000000000000000000000009f499ba205d651c0d318b266cbe47f64d6000000000000000000000000000000000009d72192fc8b32221ea5a7136861b4000000000000000000000000000000e233c60872ce0f6668adc4f8b2507c840c00000000000000000000000000000000002fa217af73ebae309a30020b26f922000000000000000000000000000000c524fd3f45beea21f72a8af6dd0be8c6550000000000000000000000000000000000016dd717081ea6f41dddafd6a26995000000000000000000000000000000f006ed696d060ea91c11d25ce78f382f4700000000000000000000000000000000001d17bcf7b5f596d622f16b38d02e7d000000000000000000000000000000ad84ccd3aa54b886d80d8a61133215ece500000000000000000000000000000000001d82bbcfa50661e622c17d7776b27900000000000000000000000000000027a8c530c09d39ffea263e3ab82a936069000000000000000000000000000000000002128ffecb7aad7d871883f837648200000000000000000000000000000051c1bf06531148d45cb7897326444165f400000000000000000000000000000000003046ad9d8a285fa4478582a34be22a000000000000000000000000000000c5c32ed71106d9e5d551e6f726d8507a2b00000000000000000000000000000000000c5bc8678d0a0b12ff5e89143159bb0000000000000000000000000000003c59eabafa3508da576a5a7da8356d546c00000000000000000000000000000000000b246f52aead20a1815f60d1bc264a000000000000000000000000000000180f8454ea67f10b236d74f706f8f5c0c300000000000000000000000000000000001432cde5fa61affbb1a4f09b48d2be0000000000000000000000000000001170df84c804ac5c6fc6aa89835a48365300000000000000000000000000000000000ec3ba73f03b419ab382deacbb9c2a000000000000000000000000000000a5e71bc62c53d67e0be266e66e2b12a15d00000000000000000000000000000000001a3b77c1f4f526869d58ec29018010000000000000000000000000000000500bbf614c7cd451baea6652aca2f12e9c00000000000000000000000000000000001d4fec261d48d3f789b0b297a5801e000000000000000000000000000000a60f5098f067278db9d8a4766c85ec56f20000000000000000000000000000000000146a434066ceaf173502c29d0a17c9000000000000000000000000000000f23b81e0750657fb91da6b6f0142b242250000000000000000000000000000000000089f3b2f6d1e2f2ebf474e1cb3dcb01bdee3c82299da3fb6b1147143d5d1fbe65dee0992df4a21601064ae04c3306014856aaabe97c5ea019f31453dab866141d5fa3ee6da266fe3d190e5eb3ccfa1104670a17a475397625f91071d5f54775b4b808d4c2a55c9a6c38d5e67e661a11bcd854c23c4b2415581765e6d2f14d83b1ce0d239615c61d72694ad18d4c55f08feb4598d682aacad929932db1c8e937ebce96c96c02b24e865cb321c43f17212ffb32783d98938974af254c175e5a206e54a5b6d4c72f271905ca4ba779c7606cd11895eac790f43e3fc3dcb66cd5d496eb1f7ed3a7e7ded689d89a887cf690b6b638b21fcb65f6d209089237e21940ea2be861639426b7fa51c9612ee1e1e2fd65920ebb0675602684b44429514f28bafbab2f60871ce6aee93b8234345312902de12fca240cf94ba3bbb56330355740d470623bdb97d97be541477bfa6ff2b392e6ad0ad3c7785195f555c879b9ee23e43dcee50ce71ae60ab740238fa871d9fa0294620b55a52b313bc54da6f3a6ee51870fbfafe11939790e76cff437d031e959d8ba4922119b73ed0287c596bc5b9910dfad84971d53f1dfe3c7620c625213d9ef5cc6aa6831241f3db717b18a02f78f3ab8b055829d122fa779392721f1f70fbebe4f5909dde436709fca1032ae4bdc37a33ce97ee351c58a1c8d87a1d4a3dae067e5a6f84067cfc4c7b175c97f0d5f44368dfe08b0f952c2ea7cf0916c0ae6f56127487b577575d8cd53ce19eac033d5596508df383a54a9cc8903b1024d6f31de9a5ef4e617ca83889deacc83284f358dcc305418b9adf12d15b361eefb3ad8cefcf86c1188a6ba72b5777e21ab4d3aaf3d7269d6a7c54814d68360870eeb67d1525adcb933e73b40ad2cb07ebd4c3170d335ee5d9a4f18e0a3aec2980b209868467571d0e2920f277fbe5ac370be446442c654a952586fb59581c181781be305ba27dcea0e617d9e5592e994e407fbdb44cdb833067c5849bdae82db7074f9622fccdfd8c39eb26dc9e70382d1cbe2eb0820f4b75e26a0873907b009d4b99dcd46033e266ae41eb458887fe7497daed0a352d9fbaee7db0e34246088f2519884a4bc569006ced108271e258b0ebe76e3a8e2b95470ee80a56921c06d2bed62a676e8906378285556d803c7ea16b561ec99a3dfbedab25ee4132cd12769b140ec3bbbe8d6746da2503baa557cb186c73890c1a2741ca3e1f713ed92b0d4faa4a3063077deefcd37307128a6a20bc48065f73ba794de763bbfff3dc271adc34286c7147fdf256e5378c9a4a2b0ceb84d5d94c7efe9327038fa197363025a0353ab833434476bc717b5d116d9e8f921759ebaf81445f71e7e7475ced1cc26eacfb5460eef2fcaab73abbb8523065f2e5eca32c4128324263f9c822bb122bd6cfe2d03e17267375809684c6fb7d709ca3884c8861c6016a7a3ba564d909a1288632a089f1e50dfb4ccd1d9367ebecf128ec2add3dc9374d4496b4e2711e5078011a14726f8ffc2d4294070c46a38ba33f2a19e2e45e7ec7be601c0a6524f2bb5e3347989fcd4e84c24c7cc830471b290574068a103b9df1e22a0ac53715ad202157cdae2f881bd1c77e3a48330e4857e155910de62a72bf52725888830e1e55e670a5e535a4b2f2dc0432b3f4473553b2c3edf0f757b0aad657b482902d36de0ee7cac908349933f6a1a854e85d18c9ddeb410e7a1341e4ee215886d724e1d406da0490bb7140421bf2c9a20ded53255913b9681049d5c511f5b2076b148812857d4b44ffe435d8af4a3b1af4577128d374d33314098d286129cde20210071b62308143a765ba26ccc3a3834cd61d1b8517209e40b1167fb8e4772b1e202625c7dbee2173d2dbf14d48341c60b0b4b228ccd77098adb85e81d630c92222a5bd49465bd9584127789538d02e11415a1afafe3a69c7fb14fd3074bd9f52200902bb50354d28650414c78593a1f38470ddd7b2b9b599a83f0e493782257a2524853d5663b09ab1e0a11ff6c4f3984e8de065adb5394434dd7efeaf61623314930e31428903f8d86f0081851c4f9a3ed28862d42af01327d27bfc245c78e80ba014b663ffa6230d88fc88a6ff7f396af1a7d034062c27a501152e1c005fa10d4ac08cd575d1aa1bd2aa0cdf9db794e9115f7acae2512381ee0f8196b42c9f100d29873d56477ccaaafdc21ed6aa36ca2687f87700496552cc58f4a7dbd7d70d10a0a1fb46b5408387662983dc2edf7dc6c8e8a68f0c04e3e41b04c97e635721bf6a38a5bfeb33bb13f028e6d76e63296b9bade6f773e97c9f54a8047907d6139be4cbbe3579cc6d1835a7e78671c2e8e3b81e7d9aa86d0eb6f6fc0152f38518d4f7f2fa4322987f32859b1dbe4a7a354026fd04bec6cc0ea613fe7157af5e2a775337aecf5ffad793a8a1b86f923be799d4aea291c53a7db1792b2269470e132b9e36ec6c59f67cf93fec3cbdd9622a9affb3dab1e26935387730f5c6136f01dea89140eb921f998cd33786f58fac08ac4323b75f8b863f6cc202c22fa02b2ff6ea9df0fa16964172e0aa24b4f7f56abdf702dd195178a3188182a09f75651083f7090a145a360a27d9fb36b19bedfacb32a148e28f8a596faadbcd1cb5bd0c218899b64a9a00d89c3eaa3e3d157ac3af525210a8c612b97a340aa3e33aea0321b08a30928517505abb4b2a70f83d89f09c6640dee949c6f8541f70d9ebe02f92f16e2b063a367242b908c339428e3838b5a4fb2af4134c657bd292674c19137633ced15fa553c409053fbd0d29d3a28c1da87551cb75d9ed1e6b427681960519dbcda09d7f744aa7c80b0ac15f5dd50c71e7619163a43cc0bc649dc1f6311276d022dc6628737e47937db8b9388ffba538550fcc6d499dafcf32fcae92920c9cd3bd397ed68545ecad5f06bed12edcf9bf60d7aa455384e4a1594ac7a2d11bec2348d0f4a0dabe24ba61e31fb7586ec299fffcc802c66875ea1da4a6109e217542f214afce69e4a0b1c76415dd5c2add487593fb0fc91a3730bfdbf77c971defbe2e945871ad52f61944d1be0bf596da36a6c24db90632fe4dce87ab47240aa7854fe8e33b07f209c2d64fbd480472f7ad091e8f75dc1233a2edbeaf678c2b6df53ca14e81601d8679b570687ee3237b8d1edecd73d81d7437f03349f870013c9e4a7ad10c0242562ecbcd086933c6e817f7a797ae8f4f14e0e2856605ed2a6a4593cca5dcbb643481bf5f4fdf07405f8e8bb384dd5f66da3bb2fad8c8970243f2e82e41e826882536b59829eac37a27ceaf38027682387711f962e681212d663e90f247a3fb05eb165259c7c16e78c3ab8a5f4a1e400439324b54a62e3b1d25a514c8cf71ab21e772c18676a754969a7ee9055bfc3c0675e01ae1a245e3080be9b413d83e0fb7f963180f5dab4d79d5664983e1d499f0dda0f42cc25bd029cb610547534da034ffb5d105e506007a08050af663f5bd5eb3a7a95376d5ab11a9a2838b351cdc24a982b1a53449567baeac2e361f085aee86061925515e0b221dcbf06c522b3f496ebf18fe4611b23a132239d4a3bd444286526527e67e892cc09436f28533724aa0f637111eda57e06dcc4fe13968c40fc5015c05a8c7061e7df70dd207afc82bef2afb8e0902380f7154d3b382c4b8eb4175b6e076292923edd5111e95f7512435d9ba66c03bef2feea1a720fe666648910d6f455fa1912b41130a10fc7e05452c024d9845a126b921741225723579cf2daf8b8183ff45099f3572118e2338b37104cf9581bf0dfd28facd762d4b63525ef6f91cf2c666196c8327036eaf4882b43cb0f98f57c89504b51a419c115c1c1d4f47567862a51dff4f8527fcec92c5294c8b17675432d45864d74b5807e1995b07a0cefa833b0dd83bebd349c38a91513fc5726a6d8d897ee75483c7d1413690cbb1ab46cd3305f4dc36f099e0d7a05a0665d266060d6c8443a1d6ffa4452bd61dfba8d97cdd2d3f3272ce838fb68be1fc290b727593bafd171b0b4499bb2847358d397be4c82d19baa92ef2731e87d9ed68f53831cc8d0bf0b32907641b544bcdb20da056080987a8694f95ec427e3c121169d321fcd1c68c41631d2ce09bc3b8c60a48f104149afa1de714b57f6e6ecd6e66383bb9353e3ab37d1eeb7c2de7eaeca30a61121e386a2094fea8c619806a7c85dddf89d4dca2b5ce4e81288e7ef269c4d5cc2a09597748c96d733a3562da4950095b57a2d47997d7cf81b622efdb35b06e260a0643b055f4b8e248431215074138c7be471f2fcd39eaecaf122d650abffef91716340a5cbc9a68191de6d9ee04993943a89c0da1398a39d60c1724ce7f2a82110e7e89537b43233ade2a41a048aaeb8ea4f34a95a21a665d09c918836d1853e92ea77cf4b384c0eacaa111c75e5bca8b0e667f9112710686afeabfb53e9e2d400f81a17073237472778b813152f9e799d08f9cc0e6a061de9ff568faecb48bb118ebcbd5393b8890ee90e0e20f931823ba85adbe1aaa004a8ced7490aa06ab382fd88a9285311c0bcec0d415700337eaf6f92c046e105bd145a1f4444232c71d08bd1d276372ba5515f7612f699bcd6d4df13f702599162041b794c7195d9bbe2fee671ea093136f09db9b2c98506ff30229bdb702c57951c46913a2afb788d2152fc88974db81c9674057590a215064591f973658509c0e3c94a661834a1d5e27a385a354e7c782b3f2b41423c24ad426988ba8db83697927174e278075787a12c8c1217189e9cf38f2aea6b2577825a3d30aa5a3750909a56330d621447aa00ac4367984350622d2ddcdf0af4cd826e568025f257f12366cdc328b1fb6ffc527af43a3949135cdd34cf8b1969d45e57d7d12d71792c73ca44a0ee48510a1c61b265b60bc3a6e9823ebf25340a19a7da9dca996fc5f189df8703b621aa0897326dfb13522c8eb15d0cfeed357982453e654688223b93f59a892dd2b6e51d90e1d5e5a4d7865a04e34818b604a66e99400b93d3b3d8bc9b89865f0146b395fde140a1082717c5892c4543cd1069ad7dfbaddb90f18cf54b57bc4476369ecc6260b6b6c45a8cbae07da053f28ef1d302b76e8efd2693a60fcc26d0ea4f0cc4d732c099069131b4526dc1347fe9dbd47b6cf8aa4a0659ebba83cf49fb18348866e0e4a9b5bc959222ec8bd82b86efc76cbf7518df10d7815336fe15a7a9c738c2e298f9afc168adf2b2ea3c7d4c77adf643d6c9ad959b267ee15affe51df40ed680b0608186aee0aff21a54e6cf1fed11e91db01960aab49ce366f2f4e437a68b60c09b507cb393c09d6ea9f374be4bc0466e732d6c9acef9e4bf001e111da8c260b667916f8bcd1e14da0bf918f7afae5e78c09c6c0dda3aa9ed82dfb9b7ffa9b2a4859b0827dffdc3fe5546d499fbd5f280c5414c85fa9297d703413cc52a8f11a96342b62d38dec2deb5e824528e7d371300fdcc1f6b9a463664abb9a2ff7102096e8435c6c2a58428975136d773d82151402a846202e493ebdbb5044799a120e27528d31721ddb053b19c404715210651a3c55513d034643aaf38a92e7b00d006721baa57dedf121dc4c6b4fd5193186b69d9ae8db5e1687cda6b25b078cb52a36df60e96d19531d301d2a77bfd1e13924198fd4cca4842607b94175462df11912b57a584bf56fb3d1135e54c61aa5026176a4a080901f86181a1076c66e1e2903466b5c9c51abcfd0c56c6f61d468c8274f3d4d840be560436cbdb67026151b6fe5c2ca1a287daca5b611a7affa223f7f0e2dab7a7525e3c721f6bb01ee081493cba9a64f2c6f2b29c1dbdad8713a936b2e2f0f639470eb505bedf3546c6805af04da2dce540cac17bf7d23d8fa3cad0e43d2945b35e299717699abd36c2028a24b748e6c72cc07df025bab5398cf3c869e13784756a95e36a835ad65d71508b58100ee88a89bc0f581abcb56f6f34d3f3538029b5fdfa7a3d63922314d8c0544eb1fc64fef07f0114d7955e93b08f912d6fbd8e13a2c71de18af1f67a27814d8499744b8913ffb35b8f266b27667d70643b8865e8fe092873fd78c523f350314e5212c33dfa8684f71335ae99cfb35c3aee226b8311befcd13be4a337bfb225f228b4e6e09f041d1120c4de9490cc96f01f7a5cfe05f17bb12800340f6e0278fd945561ba96638f549d284c0e0e7cd881efa91b42ed645fd64b97be891d22184d21c2b98317d357282669b97ee31af064ceaae014c7273672b086844f78b2766e664eefb1e12f595687c85e20fe50d8a5e215c27815e96f09ac2bc4433a2209109e4d00236bce792a46435f379f990f02941689ef12a09a1439a5f08d49b1c6a185808b024be2a6ef1f3a0c7764ecf5ba54d942e9a8ea186ac5f1b55db512a01365049ab9a62e53b242f991dbb5695f7deaba636b4a71fc9f4930bc795e1145276d3dfb970346e5c31b090ef343314811d2ebd889b79ef4356f51751b5232e795b7c446bd33e729950b3ecf0824e8657222aa6691dcf33d2d5b544138df7225bfee09e73d06565ce7d1d462e976db543647482926577010dfd2a8362612310ee799196c7f56adb417bca86f5e43fc988acd7c5d330379d4075ec00127cfd047f993af7f6422956cf7201b9061b4883dac729e00e51b9c44386721510b260007d040030c6d305c44938b048fa4e94cfd74667c96996b9709eb6dc7c5f52a2093b4f22f48d6f021bec1735f9f378eb1ea5ee81861b44511d3ff9b5dfc633e615cb768c8934450532db358cbe22bc4a88cc3296bbd872d78f7c441b918636930fa708aa8cde0910be2e53f7ac6cc8f50c989b8db0cff08613a3ea8791ab297b16e3e12a4b87acb4f51b950234d75d7346dc543937784385e81169134184aa0d0a65e0ab801924e78c5394326b43badb6d119b2a8279482e08e389696d4dde23024d5ed59ee6de3beb50c20c23a9b6fd3fd4ff2c227f31bb8442d43ba1921e0f13afa6561223b8770166f91329844906f41ed715f427e03f7de85bc75bea68ea1f2e5da02e22a48d4376343150b6c56a4dd96c9a98878ba9813912f8ed16bf860400fd3094da8557c9aee990bc47962af447efeb166df86663c6bcce11a949b3073a41231982433994b22928121533e5f335a4ebb130fd66caa6860123caf2992627e9e810ab97245aea8abd4cbde5e1cdb7dedbd7c55b8e50e49e241100ed5b171b8f4a7020b26cf0839f0e365950d0526a0bbc93ed238357bd9acd56f39a461df9696ba93af7aeefca18b21bde264dfc3e340ecb216b4848a4bdf21b4e05f92ecaab75b87e8e74675bb7cd4a939a191d2efa46d83345b6099e77dba92592b913ad97777b67a14eece0ea493ed4f48031391ab36ed04713c631f4d1fc39af8c050fe01fdc3212ab988a9d2f412e38fc1fb0d2f46424ffb2c3879d2fc83feb7a03adc1a4dfd4295907ffee271d185acbb9f747850ef46b2df747d59d6f98508a03c681dc6bf588e638dc0ec77133ae03a23d104d3a51c63525f00b06474ecbb71ea8613c73dc2c268be4bed6c5d5b46c61480234ee84e126515903c0fb7b69b516c9302fdb04f9467d92ee775d8a63b0e1d76afd83d4b7f3949678259868ae972289377a421fd0ab1cfa3454639d8527214373348af3b39bfc24dfa608e00d181dff1b9cc8f4d984c8a4c24900969c2795387fdd89c2c17baaeec2b492abea7405354af8f3b71c942a7db8487ec97f0333cc8a6bce1bc3d1f537c95029d999f6095b4b1ec1ea059ab0dfe7a637a4f1e0d23f0f12726075bbe9d6e616e92741b10890b1a77385afa0526639c0ebbdbbe3f5b24edcb7c372071de333abdea336cb2498f1a97f69e3a52ccbf1fdfda6bd98f1a4975ee0732f559c9f56e56be42b58254d219137aa37f746cece66d4e6fc01412b93312319f1903c5d0550c0ff439f0c6f529408de5b98f92a97ded06c2bb0436d2dd3bb14cc472e3102f1492e2396008cea0bd43aa48862084cef7fdd21b122fbace048e8e87341e83f908b9c29f518ebc9579f6a2c34d5f14c359fb7aece21141a785a7de254f3de3ba28471390e1c70cf6281ab7d559c948cfef29d284cd3872b301fafb8e3a4ae892b39c30d0b190d8f1049a9831aebb846cf61f62845d938db6afb7e34bf49af485520f9055d18cf0f36f84c3484f8c5fcea6fd963d9063318cb7bb661c212dfd9f2c6bf1e5a172a9658deaa05a417cd80c923abd3546338dd91c67fc69346d0b6ebf7231fc909d1b05281937778fb31ce58f4f2f1e6bf43583b2e891f104884669de256f33e19793a93a12f2d8cf20d4ab9cc5237b6e4a0199fa2b134d797c50512bb4ba3f923e350a6f322b660a09bf364d537259411951231097d0e941918b2f70527ef902f79113d9631715716eed90ab25916fc18e093619e955dd1b62c39a1fca75cd900eebc2143e8fa1ac63326b30132c7a9bc5b9591d7332f13e959355b964847c3293a5be3f55f32ae8e4f068adef1a1588b2dc45ce087c5a6f71221c8f6aedf091b3387c0e188d331fef6664e047fa024f4a41871c8d1ede19eafeebd2d38b66e074a5d61ff4e7bb9b386f2d26da374aff440f378d01b2533ce33ca2fdb8a44fe11b9ac22d13a4b9709ba4f2bef54add79130abfdeba35757adba17b01a74cd32291e5952d3cc7a7170d65f60e77c34c08e0bab3e039b2399d6240bcbaba91b8d2851708a81eeeb3590a84bf88f508df2c8f4185f309047492918e2d5a2e3e6290d5bc8d56ad3e2ca1488a5b715a912dda802d433afe44454d0983a1b0df64c03302b09edebcfd34b999af5e0e78d373a11853354165a47a6f7d7ce600423d54b21965478f2534b1f4645421e68c2174d64763c395632f0e46092660903d4c4c121952ed1bcee614e70511b31814172b62746e133b7e022aab037465d66c70cdd1f521aa2eba1afb36d5566339db6c31b1f62bec0797be780d67a877f386792322cb42f3c3b58364ebcf581d703ea9d74749a6f8152ed17184d30a0f4d28b3b5c0af0d288ad4bcb2944f9213c2b45d37b14831fe4df5160f05898d88203898fa80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b92dcd64736150855c392029a2a1e0252d3cd7b155a72ceb7fecb5c2275b88c13a7910ef94ff7c1e6cc0ba1251eae503af5cb52241fee6e25a00a3b50a6b8f91442d82574bf12c5e7cd09f391ccf610daafdbe0ab14cc28e15a5a252255c8e9299ce764ae215a43693b153aa44b4718583b70ad553d81598a5431e1715411de2ddf20c131ea7e528d15b002d96987821bc093c7c0a9c9a87dc8fa2df78b75e302f97ee81b62fb3bb56a76c2f0c17853e598157241cd324a810ecdd7b8b204802f931d4303de840b722e854be8af70a223236b482be90ce16f62917ba570fa840f5e48408806be9f6ddf41f767bb8e225f0b3454e38b72df40bd32221ba8989a081c29e5db35a62d7d05b4c7ee49a5ada3161b961b8295ed3f52b736d9cb13c929697707f076567ff92a56ffdc7eee903c29ded74b2240541bcc5b3dc50c1b69266dfe2ee51885a90b3a85bf9cf76be441eb39366669aff5d282de383b71603e212f748e7337962fef3a53c248ab462f4aa42b97b28d137e0ed994ddd449403a0f0d463de5bb8d6ae42016358b81d8d6424d31b7251ca64fccf64078bef6c9c12bbdfdcebd6e850fd6c9320c0eebc8b4512e2f85318f6985e966a955fdf8d81d18653845a901b6083d38d891953f7e4598e1b05f843f610e0ae3ed89a0c194c413183e2e6935ff7e80e2feec7311e62baa7c63d87d72cd8efe7906cdf3cca6be220178b15e02cabda1f56a64d335092730a4f0aa86d6ae4824779b1ccf14eba81c96a308c3e3883e3b5a18b5f0c8bce54edf3f35533f51f51ccb0283e90ca73c11facaff4e7f32f95a534b410caa148a90e9fd73374b7689957fa61ac0e74ccf0b1e47f5c07520c4decbf2dc338d673fb1edbd25f69e5ee77f0afd42f04d3100094ac43aea69e62cdd642b21387c01b397d57c52652ed62dec3b2cb4bbe1df4f157644e903883201e162b13f75b6b43cf86f217967bee62b23359dc4dd94066f100639e51419402859099c3a9a484b6e4aa2faff0ae00519a7fabd76b62c661d1687654fe5920d716d62e806cb8f8c7a2bd7139789efddff99e833c4758e02b617ca61c0c3162b4d69dcd73b81b9fc41ae49fc69b0fd4e8affcfa96642a0ef6a188ee374ec15e9c691f2e8eca1bf9ba09eb66943890080c8855433befb5c56b927357489c6ff56668e5ec537ae1d626948c70f93f6c5085bcb2ff9befc8b59aa13a816293391b7d695519af89bd549e5217d1bb6285f85c04625dc7580d05dc626a0bf096f07f9d6f993c19e099a1b44a60f188063d84764e2e7b7eb1f50844223080776b7fe9b52f696310c79273522eabcd23ebd3d0a56787e3648777b796f19515756abe9adc3b986e2e2fb525dc8f051750d278e71ccf381de65f57ca49118e158a79ddebf365b4c0c95c8258d5e212bc23f8e64770d473880cff41a77751b3295e9f5fbf28848d0465869a84937f4ab59d57d0dd810afef17cc615fd61c16fc9d56b10f718dfc282def03095d7d522b49e580b95c9d49fd23b73cd1a0341d62d2b5889d96b6ab4bb3f5d08501f4674e01e4ad6c38b9a6757b4e23fcc98c105dc8097be5f52b1ccbde68b8aa747568beedebfe0f2c4b2f815f5fa275ca0026dff489a62d6039359846de4d9e247eb500e78fdcfadaf63fac02d1d9f7ed5d297ae59e8455f14df35dec4bfc273c85f5ef4ac4e5a6c3112963535d756d2ca00b99043fc00ff59cc725b1b9ff5ff2c2fb4ec0b38c1630a2e877a03179351e9f2ea0289b38a7284e73012ad582afa9fc6e8262d514f1dc0e072e445ab73cdbe900000000000000000000000000000071fbeff0789bda16744638aa4f18a1613b00000000000000000000000000000000000fe40656b93d68757f6ce351a39663000000000000000000000000000000f71eb9fb90bacad4779a83d6911638434500000000000000000000000000000000001ec37b201cd9e0c2385c655adde88400000000000000000000000000000069367ab1a5869236efc46756c3253059e0000000000000000000000000000000000004e1617b03a74a3b6635bbe1fe82d000000000000000000000000000000098af30642123678450cb770b2758b0f8d70000000000000000000000000000000000185278767130e1ed1411a7e2d91aee00000000000000000000000000000083eadd105fc741492f1e08699bef6b8a2d000000000000000000000000000000000008d5975b7632c17ff57e75679a2b8d000000000000000000000000000000a5f106e58d8168224472106253b59f896d000000000000000000000000000000000016cad9dbaa8c5ea85d11b7b3f768990000000000000000000000000000001601e38ad609e132141ae58cf2d7ad85d600000000000000000000000000000000001cba82ec77e7e5fdcc34f5a63429ab000000000000000000000000000000cb36baa52bc694812f1e6df4813047de8c00000000000000000000000000000000002f9c94625b0de7c888fa64240d9dd90000000000000000000000000000009f69f760c81ed3afc6a36cc4527049797600000000000000000000000000000000000f9c24d52ef09d4b72d4d5970037d4000000000000000000000000000000a0e993715a0302e70436bb0f971e800751000000000000000000000000000000000018ac1aae7eb47e87723a37a77cf6c000000000000000000000000000000050c5612b532751e51e5029103bcc2b469000000000000000000000000000000000002568b7ffcceda6a28fe21c750bb03f00000000000000000000000000000033f048c82393c71ce8ae2ab8f919e7e46900000000000000000000000000000000002925b76b1b736a588dc718ab6f7f27000000000000000000000000000000ca3369ffcba3d269c06631a098d89fa16400000000000000000000000000000000001117687be2712b7484a789c809e77c000000000000000000000000000000a6ce213d542e2f6bd5cb841647a0847c9600000000000000000000000000000000001649e0a36df15d99a73cc82dfc06f70000000000000000000000000000005fd2a59f8c38cdb8dc28cd048b12f855030000000000000000000000000000000000276779b77cf437cc6de2284c802f7c0000000000000000000000000000006a35e997376021e7c6978bf891980ae155000000000000000000000000000000000023359abcd5dd1498476f884fa549370000000000000000000000000000006aa8fc951bc85346bee0dc5e4d5db1c5f300000000000000000000000000000000001bdcef227690666b90de276041a6760000000000000000000000000000005c273646be7270c51bd2e40215fac94ea700000000000000000000000000000000000c5457771b4a93b497409326964b4a000000000000000000000000000000130f8507202ce574c96d27410e5d525f11000000000000000000000000000000000020cb1a6eb5176e1308a83657ba8d490000000000000000000000000000003d47dee7dbc9bd0dca0d32e412c184d509000000000000000000000000000000000008cb8c7f20ebac694291ced3f7d4510000000000000000000000000000003af41ae8a2d8f1a81f33ae45ae02a87f220000000000000000000000000000000000091a8efd28fd05ef9763b22c3e340000000000000000000000000000000079e28b912117653cfdd07e4ccaeba98da20000000000000000000000000000000000096e1567678b4b4f422d850cc8aced0000000000000000000000000000006e594c86cb2f2b7fa82ff67d7087f727c800000000000000000000000000000000002841486d30ee63c5e2d9b474684b8a000000000000000000000000000000cc962b759e246898cde08a98438f01612f0000000000000000000000000000000000052e1e0aaa1951d709e8977994ae1d000000000000000000000000000000318eb36803b8558feb7629f6adbdff693200000000000000000000000000000000000863948c867ff071ebd2295e18e4d3000000000000000000000000000000d29a72f9dc7daaf4f47a43c22d136315b200000000000000000000000000000000000639f12ad5c236fc52893f963d11a10000000000000000000000000000006b12f90bd4b9c0c67aef8a5c64264c5ee100000000000000000000000000000000000e09b95b35b6dab863c41f6e17e68d000000000000000000000000000000c7dbe11fdd4461b063dc3e76119e3246540000000000000000000000000000000000013536d24cd826c92a00b1eac353790000000000000000000000000000004d4b0cf849d3fdcf077f5625b29d2f97f300000000000000000000000000000000000a2fec90f64715a360b36cb1bcb284000000000000000000000000000000a5e2e539cab8a93138e5992d26a63f4b2700000000000000000000000000000000001a7e292efaaa3bb643d7c5deaf818c0000000000000000000000000000003d91b8763eb5918c80033cbcd8b6912cdf00000000000000000000000000000000001294dfbf29ef45dc7708d4d5e75a3300000000000000000000000000000029f129b8ff11a1ac2ab56a87fbddd75d4d000000000000000000000000000000000001e2a4b4673c8b1521de8ce26daf140000000000000000000000000000004fd8542b83b1e60045bcd1fd73ccab8bf8000000000000000000000000000000000013ec6ced5beffafb93d944a38781770000000000000000000000000000001dcc1c6387dcfe698c53471b40120b800c000000000000000000000000000000000021c9c2b404eb32271bdcd86b52f12a0000000000000000000000000000005ac13954a663866a1ff729f344c107822b00000000000000000000000000000000002e3efbcef4165b0414f1679e7f5b20000000000000000000000000000000ee9ef4a0773b7224b22e55ce4d225477c200000000000000000000000000000000002774ef2c1b481e937bf89ec9e66467000000000000000000000000000000c1cd5478abad10a10aa4151c5d56b3c7420000000000000000000000000000000000148442661352ac8e0152e4c75c72350000000000000000000000000000004ba503da163f1963279995a483d9f60cba000000000000000000000000000000000004eb09c6751efeb0e7bcaa609fc3b0000000000000000000000000000000e7465b1b77864a81aa2625ee8d0d3a91010000000000000000000000000000000000091a9d660177e17008f2117896c7b100000000000000000000000000000087afd9fa043d8c8884048c1be54565f9b50000000000000000000000000000000000147024fdae4684a1469869f766e4540000000000000000000000000000004245b9c6c0268eb48f26ec2046c2382e1300000000000000000000000000000000002f2ff517e37327cc7a38faf6f21683000000000000000000000000000000d0653e08db5ad213745105322e9d3db9c400000000000000000000000000000000000fa7e62264523b1a34a96b305974aa000000000000000000000000000000d5cc8808cedc278f2283bd956b4f3e294d000000000000000000000000000000000002451ce80d5328dc4840f83a3a16ed000000000000000000000000000000c7e20a339e5af7567c2cf7a67c115ac081000000000000000000000000000000000010a40cfd9a7e000cb01fee1b7975220000000000000000000000000000004cda3e30f71e7a2b79f9d020efe60a8e0800000000000000000000000000000000001a92768f2c5641a0aa3c577655c6e3000000000000000000000000000000ba95bd2c90e32e94840cf47893a1de4c260000000000000000000000000000000000153c9455dcc45590328f1a731a162d000000000000000000000000000000ef7052f1e93aa883b8013c965fd16a86f6000000000000000000000000000000000016bd462aaea66b5636c6a1fe3d1c5c000000000000000000000000000000fda8fb0216528c9648f18c23814ea418f200000000000000000000000000000000000efd3a2637212806d70fb00a3f2ba40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002a5b241731cb52baa977c18dd630849b9a4417541167185de28d7629b4b8c40400442081b97b35959e0b9bd0ceefc6781b25f718916f436614c23c1d42d10d8a2df3add869b1a78850c865e50946015be2ffd708400c7fc6ee890e854e816f9a1d219578ce42f4172468ef71da6a5f00c59990d2e223437ee4f76deb9edf0a1d196f3bc356231838cdf5515125c2917c634ee6183a190836b87900412c9dd49f1b6fd1883d5bdd82fc26beecb778b072ea4fb630e6103932a18c1505f3015b7914847347c97e9d08bcd75a13756e140ff7a23f91c9441b78ea7a2e84e363518505f210a2e6124351cceb363dc239bb7a13f4de6af1fa927feedf61e5ace0ac060e1395cbf7a55980b78ba87a3b547298c5dd745f265836f88e3d930a75ffd26b299b665aea546d4ee1a31199542c9f65b3fb6966e99f79fc563f6ee51d166f87165f4441b686dcd1928c0be77ee01c7968ac0f519a6ca47f6bc24949859e6dbc22824ff08b3d9f79532044980a1a108e1c4e0e3e7a064de93b84fc8f1fcedc4d243cd75d0d084d7227e593a32273849cd134c74a31234fb0bf22203cca536c6f14814ed1c232bae098b67e70e73b27c0338af90b042f4142c9aaf25e3f98614b18302aba73c0ea3c320f082c7032ed41e0bfb13b5f33c643f7d106df76cf22b2120d15ee04738e2294c8bec547c3d46f3419e5e9e301979624fe1d10458cb7ab0e6dd6a01f98e88bd27739b974c4d38109db76a9b2c2c949c7be80493cb859b52952a5e53076760923d93995500f0377a95d3b5baeaf5f2977bb3e0c06d4de8e2a474d2b40fe365b75eb0429af9e6f25ea765e36fe41ff76fbe9b4954af45d88071d1c3179e45f58ab8ef48c2c22647d7508993e1be6241b120cbe95c355a4fc20ff49ef0789fa8b4d5f3e1c8d08e934f518a54dbdc202689ca16d58561e3f7328e8a2ee4b8c0b15e51754f9454683da43baea7f825b919ce07f0428bdd00b062389028cf0a659ad970af3278af6be36310b1afab6640021d035539b7f0156ee1449124c018fda316c16f21a6c06e7dd916f4bbd7e648f18a7d72d6b6ff873681936ca7fbe1a812fad3a3f2b684ff0a88bd287994b172a5f12e13dc520b68d75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4a754795cceb06d34c837cf7b8c6bbae900000000000000000000000000000000001d88d6877cdebfd469dc9c4de68efd0000000000000000000000000000005723a672dcded316ef81e69ee8a5b59134000000000000000000000000000000000002ad92b58c4105e782f0ad7c990c2d000000000000000000000000000000e16b25229d0f2edc7eaa583cc5a26f713a00000000000000000000000000000000002e5b1e61da218c2a7b62276e403fa300000000000000000000000000000045e39b06fe734e6595fba9047dfcc329a6000000000000000000000000000000000008622ea9a68bd90b563eecfba5e6110000040a","publicInputs":"0x06f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a259000000010f9fe51d98237f07b1fe2ed28a0b1711a8761970ae3acea6559d6ce43aa4748b000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb00741f5d36d813be1176a34d6bebc448d5820545962faa12baada1388e376a6a000a98887722a26a437a381ed7c38842490332d5d75138b2318a1c0a45508813000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023d7e26fb2535acd8ae8467dde339b66f84f281474d46dc563bd55c0f06c15a3236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df400000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"0x0000b88006f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a259000000000000000000000000000000000000000000000000000000000000000107280517ca1e78bf1695ef64be32a191c9be596f1187f3c7977faff7e24056bd00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb006b9585a5e170e2ee0ba4ea606cf9b6dac9096e94e5b22d48c247b37ce69514008a03d1cbf04c728546df9b241db51cfbde1c179813e31b957b5313b776ee2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e630f76f97b5ee7be34ec1043da864e3586334f6df8b48eac5477c1a568bc2a236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df400000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082fe435f331308a4900000000000000000000000000000000000000000000000bdab82be1e5639d800000000000000000000000000000000000000000000000029444cf38547e68fe0000000000000000000000000000000000000000000000000000d75a2f25a232000000000000000000000000000000000000000000000008791586d317551b2300000000000000000000000000000000000000000000000191d2857ec676748100000000000000000000000000000000000000000000000f018d9789909bd0db0000000000000000000000000000000000000000000000000002cfca99fd0c9f0000000000000000000000000000000000000000000000043d66f92822507d05000000000000000000000000000000000000000000000004571d2303e8e9969f000000000000000000000000000000000000000000000008b6a52d7b966f48e00000000000000000000000000000000000000000000000000001362a5949866e0000000000000000000000000000000000000000000000065323a25284713ba2000000000000000000000000000000000000000000000001bf48920d910810fc00000000000000000000000000000000000000000000000a5c6afdb772c0f57500000000000000000000000000000000000000000000000000021fb873f04f540000000000000000000000000000009dd48fdcab23a26aa7a4b052eb69ce9a7b00000000000000000000000000000000001c77fa3a02ad09a7cf24867a113f5b00000000000000000000000000000039a316835842f0c8b2f0638ad30af7832f00000000000000000000000000000000001fb07acdd9b4b8f83910efb2e820f500000000000000000000000000000023b5a7379d329a11b3fac8d349325c8a8e00000000000000000000000000000000000e1a7d35b0c9311a04a803e4a3963d000000000000000000000000000000a3cce610462069eb0ffb868b9b77b051820000000000000000000000000000000000133c53b0fcc090147fc32300bd2cf2000000000000000000000000000000257cff25f706677c5fdf7e7bd129382652000000000000000000000000000000000001bbc313d96cc5e96e0f077da2e92800000000000000000000000000000082bbb536634fbe97cd09156f20c7104f57000000000000000000000000000000000009d76d09dacad032309bf48a1917cb0000000000000000000000000000002ec0134723ef5ef9b52e3ef8874be2c1f900000000000000000000000000000000001372b70f434540fae85f5479bef56d00000000000000000000000000000038c1a3d0abe514107a3fc76779ef3dc484000000000000000000000000000000000002ec7bcb5d5b1ae1f04a3033983645000000000000000000000000000000558ac07c2c5062472e0917f86eb469fc05000000000000000000000000000000000021687c48ef2161031addc8f8687b49000000000000000000000000000000ae49be930b168b7fd9938eea2f06ca7737000000000000000000000000000000000000852f77188f03d9f8d5144ba81df6000000000000000000000000000000389ed81026f4a087ab3b9f075401d8c6dd000000000000000000000000000000000009ca569240c24f285c62e81584c09500000000000000000000000000000084b64204b2b55309c9db00a4cb274d7ba1000000000000000000000000000000000026f54dbd35eced8f542be91183c65c000000000000000000000000000000ab8b304bdf723524cf812540110f330982000000000000000000000000000000000002513eadc5586f9409db0b2117209900000000000000000000000000000001c7cb177f4e426571e40eb596ec769bc600000000000000000000000000000000000f252a92f419518324a7e9431ae893000000000000000000000000000000a8060330bdab766572bc2e8bb8d357341e00000000000000000000000000000000002ed3c4461083df062a5d4f9df107f1000000000000000000000000000000b839b3a315247d1ae36c6c57e4759ac0d900000000000000000000000000000000002f78eb3011f73697e5be34f1c19f921ed703b2463f2a77ef1fe79232096b7313942088901da13d8c2f1e73940d91fb118d4ac09af275b1c9305e244f77ecea149fc7bfe99bcf53b7b2d7205bf26e0628e0bf2e8ca0c83dba16dd3442b7ec5870f55feffb0e3140b6fbf1608790d5d3264de73dbf3cdad21832ac08a327b78f99421e0055b1b6ca95cd3813b5e9d4961d1fa27c17d1ab48000c19237c04d8e41b2de42dfecf37d569cb82522655602a1fc1c6a4587b36b4e9e044a94a6555bf48234a3220621e09f796c121491dba632fe54e40a068f38c6188eba2a4cc4ca93882bd403a72c014c4f46f685582da3423ac9a08284604e636aad040f31c9200d3214cf18be0f3d3eecae2f832a5c6f2141ca5b05cb3a30e566140fa90a73f772fbc0946cae3da3a322cdb26457aaaec2607f370a81d39d6d7588b308b06c8689c531f6f4836d54cf2deb7f789f91a50215e5accdbf15b2f466b88a3158b974232e6df84cd2599fd7f920ba87a91f85e0ff040395f537937fbd7424d13d9dba84e1af5d3cf21d486cf2abe9ac71646b32f7ec72a40b79c6a5a0db4cf72399706546c36c3a32f2721f870b84615a17d0700480fb040f7f95a9b236766df76e269935b4fa7b28690c7ffa7d41cdcdc85250da1013b18dfc3803c8c401e6090e8bf3464bdae7e0cd8e7494c0b541238a06400a040319532aaad2c838d68fd6c5d1a8629b2ca8d945722870d5c44ac00fb3b024c0ae940ba87ad76694d4d5d1148fb5951139880580fca36ba2cca4f657620242d9ca34888e439bb3031875969e452300cc5b79bc06d256d27bd639a1a79980f341005b675ccfd8af30b044946fa54e71dde8361909baa28cf3db107eea077191774e2ebab60b25a485ddcbc65fff8b7127e8df3434ca327ddac6c5a29d2ee05da97b5c3cf1ebbae38eef142258ea8794d01c3f94d17eee961154d451f1c270f2439b2ce67890c8e9960c0533e69599e2c93f4d58dfb0da35efe0d9e1ba4cb1559a9233b5f0fdbf0c13cd079484591e371fa55c73b922fc8e2aa45b624a8bd09098c4b762f3bfdad8480bf51b94f5d0086e30c29fa5c78be9777edd6bb5ad01226beb3b974f1888db1930aa521015696153ec084713b6d40e0cc15dd5a4e4f107755e629b6989a89ad2ea842521d90c3e61b5310e294aa5186836d6d7f552e120b0ce95e8c825f905de5bda99cd0f53a9c1991df0ae2342be5694f7372ed720fa4b997b47c844a9d6e4dc5aafb91d040fecf21370b4490e9ffef9777cdbc6c1758bbee3761ab7a724f0eda2c1a90c7d112802257a6cba65fc43efe7a3b4a1010e020770079a3a01a553b85cd677abd3cac1411e55b697c7cc59148a084b9d00fb78d35e36553b508ee63604ba8bda966a4d2c11751f8d73a7b52cc13c17a761b4ec6b93cfb07d4a992784e969826e9c98c6826737da88fae0430c86e1e87060a217acefce28f78d8f26d2fbeeddfaf097cbc7fbf91388881c22feeed61ff0e1f8d569b6c93d6293073ca09d53683b460f91a1d9815212360a7271d3be47f2f05eb65b94f100ebf53c71e31affe1edeb1da02b8d92e527ba0f1be70d10c8dc0005eb1d728b07c90d03da9019d2559979b11a0e8d6819b8917d162fa646b3f96159117217d2fbc65904f4506698bbfd196cfd76d4c1aec2c08e9a7277dc369821c9ab6e3debeeb16b79a90e82c1ca614a9149c11ca2ef9d9765c38155e455aa01a9e04a8632dbf67b115df66b36d5f4d87ae6fd6741d293fcbd53b38a2a2ff22072b9199dda22f334a402919e29bd92fd5afc3327b787546227b43da103eb45f2dee9d4d85a0dcde2cb953691d3801096a61d8b7ee9cbd5334a79e043ef42b4716fc55fdb7142f9afa9e3c8d78c95bb259f7702dc6cc6bf369232ecf0be1da960dab3e12610f154cc5132498be73920018f2673b8be4bb444f24a9186cab20ab12409bac9b6ee97bfaf74407fb095fde37bbe01ab6eba1fa5e960d3bca5a6b420465306a3d9c4e09679c1104938ab257826471dbfa0b13a74baf87ef0e25d8dc2ed4db879783be9b176091b5f5729c99cdd59f8e0f0caf9572d020e51f441a9d0dd471c6415daadeb642425162282835030b02ac18afc574b2ebeb24ca86df071088e235e911e8116c6ff3d6ab70b8b1dce91b3b3391c0af1cf289618e983c5f1579b84d040ce85bfbba955afabfdb0bbffd99f844050f0b74b4cb273324d28f2a0a042e8c44626541a9c5fc6ff180f6e85b9949051f75f92554cea8e4da20b81961bf243cf0c5be999bc98393669a7a5c2617ec4e2109ea1de582ad575aaa481d37586109d01f06ed630337e69facf07665bdc8d2358444ae44a84d4dd8077a2974a78a0b289b986c7fb6dba76835fbdf088037d544510ab140a2ec0389851b00e5ae1f6c8b3a4811237605401c62751ae918be2723c062ed2fb2f5a0c541df17a9f4815ddbf72f40bb652422a2940aa0b3593c9b1c3b9108d3204adc5585e71af1df896d1ddbde91eba2533fdea3337a70cb15995026310c30c668f36fa6252144ab1cf0046a554e00b315efde48630590b81415193f2c7f6a9f2cdaf392450b9380ea79f64997d4c1ee7f081d52cfa9193426463a9a97adb33bbc5e867d4e223197fb306cddb2947ebe122670aed68f80676d763bcd607a4761dc9a08b545264393e98caeed4f48e30093a297644a469c9a8b8a94877fb4c8eb8715834a5a10f9d2a516180ec5ef831039c5ce21fd5535c24f3619dac94bf2333d79aad40f139691ae19a3fc31e9a430caf50417c68b46768644fd9d35b599d964d167333e2703cb53ad24980d5cf566b4610b0b1962cbf08c92f2f7842b8d819eef8ee7ba2e3e3d60a795d42e1eaab82127e854def40d8f4502f718fcaf67622b23e0ec13004b0c7e629fec1c5d9aa943d88db79ed9116e7736064f196068335c1c559c2a0505cc734585fd97764959afbc153f2844d86df2a3da32c5c7cf31cd69c297510f99c1c98293de15a4cb7acad077d2787b11d7fa52da57796aa3aba62170c68101a8151cc166de28d7e2548d4b2b23397d0a96f982151336583a79cd53394982092106fb50cfca4d8dd9248f7db044659f6f113cbd84d5b033d24da19b1c6a910a272371da4956855ee68a0107cbf38147ea8378845ad320719e6f06a65a65bd0d652fac48173de4017ae38e93e6ea160fc36b248736b86a842fe4d95c00d7a81a62b5367ff9995dd4ca7a8ac5b851b762a847e8af3f3a2a1dd20959e821f00e0ed4fc602d6e618db088efcc7223587d41e538467acd69cb098205995ca6a9db2934dda0ae2778704db595c8d81d2a385a958f89f0d80892c57ccb7f2379b50a2a0b72a7b1c55d5a790543c627ea4a08937dbf75158de8a14229c89a5e170a472bd770323eb32579baab712e442c6fe5b749f0a1cc54dde59761c722f10644ef1d74de9ebe4437dbf18157edaeee8fa0abda238cf48e9b6464adf661dd2992821d3b43dab55c21fa368a37f858b935497548502a2017d9d4677c69af2fb12b8901692b608886d600bd7c170f54a28ed182fe2de53279bf66e659c2adf6268ada1d11e2f80499c6c901ccae299102b2508cbaced7a8a8c0d2d7a37441487b2786188a1aac80b5e8963daf8fdf59e45d7368464b4bdf8ace37ec441c91275480571ae722530593bb6198da80351c794a0680d8acd41f4aaa71ef293a2dc811f837099f10840a5c4964d73790885a59e83e8d454533fa158870651c2122a5b80acf1ced9f2905feb5154982a9ab6d3bb3566522bb1149f4799e717a06242bc9d00e118ffb9a526fc265b4358581d449b72a937e3c6341345759979b55d892a468e8199d25b646f03f0c9082b07d586db595d0d94fd654f82d7af36a0a5d61a10d7a2c8972f62d91afc3e9aa4d92ea2144af46d2a7f69b1f7500164e3b6c8f4c80d02ce3a2d4574339219dd4718f535c0457dd2d0308f654a083d6c7abfbbac103332b83044a1bdbae0c46cfcd8588e245ee180f961a9d5b5e6f24579502298222890eb89a932a06d9f49ff93dc84626f8fd209c924034a70e8e3d7670c52850379d2c2c23a4d587b01f3dd0d0d9ad647137a313167a264912ed5c7a02a199d782d40ea7acfde509ba2a1bfa0f82d51a872269a4bb348c2b6e186e975a95a77e483f167164a393d628e7840231b88addceedd7a75e2edfdefadfd3aba9b685bf4492289e5a69f4eaa1fb811547952d1ce8865130f76a5ef4fe22f662199cb104338b2764a583ba72370aa2fce05c880f1e6454f8f934e705a82c6229255c00ad743c3019dbfd704de117a3a920c29ad2acc8702a1720e7f3d071a647292b2aa94e090254ef9379036632186ff8ce0ee2f54a03f71a28013a3f78c3085d2e75d9143f1b9d7f390e6d1cb51f38e4b762ac4fbd121e06a3733cfd1d7225a540568bb7fa301d829e86b40806b386408882102ad9ea74fc0e087b7673435ed29d80ab49f72d04e945d2ba9eaacda2f8c819b65b8c441efc3793e3fb5ce33b60e992e3b07a13f9e9318097e2ea0feb8afe17e028493ca2ab6b2adfb739ede48bb0d16db40d1535ef65460d2f0d9c21ce0ff5fbe5efd57317ebdb53cc5048f4b854cc84b4ab175b2014bdeae3f06b915c007fca2725a898ed1d424770240c0ca4a85878ff8f2cd578e01e3ed260338e69aec1a9815a6953b0167e2506a0e04e2f54de5326ee00a2c84084c56dc32389412b3d2b1d31ecd43eba8de7120a7236aa9d51d098ef2725e2c172077c9770b92d792b3c8ec369ec50d7adb749bd6274e8c280525a322da0bc9a8f41112ea571f46024b91f9e10de08ae048719560f66900b25df170c2b48e1600be108beb0772730026250d9a781088cd60d7665997311b908f24b83172aa906ebfbaf0343af409c3a648fa02d49c39c3790efa112e383fc58926d421b4bd14202e308951d9ec129adc6c25252b0c7eb35e5e2614cb4b42cc55486ae0da15bc44a42b5603bea536903980976d78ec6a4deece1f883df6e11e5154e4b03e9d5a599df3a87112e2461447182358ca210bf9dff678c23e47959939d743a199e6ee47fb6d39ccfb9bcc47db9dad1ba7b8b487c9cdc0d2320f90a70de7916269a1ab64c5f534b44b827087f4cd1a33f72c1bd9a37133e31b97308eeb7850d1f0c57de4e7a17ac9c82ce9b0bc3ba64cba818f21a2649ded1cb0b53388735f92ae49a875962c08ac1250398008ee8ad9b04132f292ceebb6e16421eda7f9d7b0591ce7a61f708684ef2471ed2bf70b93609810e005a874d2fe05833e7c1538e04bbe9c678d2c9993c1cdb22a67887ec754ce7560b51776129f1c4b03b69b39726b007f5e1b3daeb29decc99172a51c5629a97dddc9488f82ead26fce59fdf6c23131a5afa4c553929e0ac4ab6986d574a864ff00876684a5753ea61eb0352e3180e09544dd2c00395cf95309fac58ff99467c6a38b6bfb075fc3d63150a7f0e2ecee683d2204da4919d4f3bc2e4b880b72040d71ac2ab9f4ff8b13cbdee781209879852ea97818396d72497423032fe98db9f80f4fb2540df5c0e0314906d4520546acfe7ebd9de812724d2fe4c89751f36cca1d3e3eb4dde2db6c5ccfcf4a3030da1a25f6aacfa4c080656f571a38ba719da4b1187f35eeb4afc3d573c77782b362f2dd86ccdfdbeec46bd4669062a4c926d721d547aabb0ae937f5c071ef0143e9b5b45f1bd280d0fe81dc113682711519a2df642309f95fc2c177f440e032ae669f647bf998e80d13bb0381181463fcef90e1b7de9d0e8595b0865a7de3a163c8a81b4a838a66a8f770ffbb735e1c6485bf0096795d0ab7cb95e0ce6decd2238bf198fe67a0edce64f3c500b529dc91b42029830f9ec6976ef6284ba450b062d52b46c42feead236f6481506095086d9970e4e59ddb4d4c11456c50c21cc1e3fb5576dff0b8cac3c1b4083db93cce6f8804493477e8d104f798d621ae6ac0e365ed9430a53c30602fab3450889f3cae5fc98b22db706525ed03b931e2f5a0c1328a2f595c6b30fa5442db9dea2b1c4a75393f6eedf994e1f6dc0a3a99dae05d4a3ab6492cbff3cddc3c66d415deafe211cb8b10295b28d4716fd28b4a74708180356accc67b22c8aca76c2f3ac542ec4d98f523042b0a035b7ef4b88b0e209d9caa3946398e94d45b3c0b448bc8d98f6b95afef3fa92cebd617df24bb4be1dd3a659998e320aba92a990ff6191c1bde41d4eb9fd89acf49d4f916e46723c26ee3dd3de1f09bf242ed3214e6ff8357723a7c5ff4517cffb23d62aabe3054d030d58d1c5ab267f098265df13f33f12f9225eefb7a2edb336e880c3f51c0535003335d0e6ef4ce94ed502a8c1fe29a8888c9cd1cca193df5e370a092cb8a17d080be374efcf59774d1609859eb9a842a118684690e94edd4f2479e5fc0e38810b1beb671e9eb213eb22fe58270fd4baa67c2493bc5ffa80b77f9a19d12de04a00de194d54fbd50a952239f0d4705b1ca0279d8d329a8c50d529618d340f63991801a497e50cf66e6ea1fe78d66b35549e6ced288c67a88acf097dc6d2cf7be72e4b3409772e8d1105cb34eb385438dc821c2171c69ff25411757a951cafdb4a2275936c79d562bf90937df3d9ab659908fcb62ef18c18e64be23ca3bf462f3c15b4f2116b9ec7b2ac8b4ede684ffe8932972468ebd3472e6fc7127eee19942113134a84a97434300201ddda036afb82ed141bac550776ec1143b9d3a82b56dc108c8702b6f7f4225cd0af340f49fea35b114ac11401639e5cdb11ffd1ec644e22e7342db2255d10c9d563de596ca60e49f72b6e0aa42c71cce46fbe34ce365613612a6446da13db08d94af65ff4cb5345f1c9e845ae04f14b946d0ef960f91b18a4d2e3bf94bc22fee1320f72883ba737cab7fcdb6315aaadaf82c74fa969740cb0d9401a1473aa71e211f3cd93d19aaf29fd33086383b2ebc430342d630e7c1a293b7a006389d36a944dfa9f2ad9d51ecf10879ef6d589e86e0ecc58e8cb26185d29bbd6434765ad4da8352061b65d18a442ff6b6ae2f17e375c2277c1cde613599bde789ce12e78c970b8767817477041c308b65433a4754ba4f559c73f720612182f5ca918948bff0217776f23775d0e5784748409826fd2ad03d50bbfbb12f67ef472be2da6f7dc096b6f7aaf11682da09ba998f9a095ae5b81a4b45e85169b94d6764c42c7725ed767f23e637afc03864bac437388913338d309ea114926335fd155bfd7d0add6caa514055a024124efdb12d9fd365230b5f3770a3b931c2f03f2be37539cc1a737c61b9ac4f9a53213659356591b8a52b02796a0b9bd1017214c55f63a0ab0a22e86491f7c87bf54304e5dcfa168a6475e4d1caeea4810011d90154aa8e20f560341e7a3561b9eb1c6efc590d277c1fb164dbade150c1dec78d7c1e5bf81c8aae553b6c509f48d364406c2aa40f763f458dc6b73c5172369563c40fe4e2605f75adc7fdabb099bb1083f34aaf63db5abba165921596a1da76e760d347d5ddbbaa3400605199fe9eac0d061be2edfa8677ae16a3b593a26c7449976d28c06b3c6350433116f66c159feb9988584ad6d91f26d7d9d3e111fa527a2b2869b8a83deeca77e267f4bf229968e69b870cace1c09328041a3be1a79b5d9d0b435a68ebe389cc81dd3d151e9d905c85397b9522235206d9b678b1fa95f081e16a9320b73bc994d409eb8336ad55a397899e178705cf7ea951f4e073685c53d42bdb04933f743eb9a895439a589e5c862aa4f59e0a66824df29481adf68e2ff04c5631c183831a51bef34b1d946f976d08ebf31af3839e0e98f002193eeb6bf19d115e463ff6784ca1e616ff13b2870c6a5784d45c104407ff1c921ce23ad8acbbbf491c631ab20f243555f86f6054b9827244b7c3bf2ec0a103013095cdaee0bc3fd674c97b4bc5e4069f807ea0862adec57bcc04e4c1db301310a654f284b87757d8ffe9d307106f76b5ead326b5870fbd76e100610715f77062be54d6dfef417b9e83d21a93dbb5ce6141024b4d4e356a86387be0c9a6d4e8c018af79a945f97bb82f0ed99996390f7382f33dfccf007b8586f0220d430e3c22bc4cb63d0525feb3fd0ae8801860d2c79f2b55d2d07b23ffdf62a636bcc662d2b0dbba89f9408279353e211d90485fd2d357da27709eb14e731907b027579500440d9f2acc490a0b81751ede90fa18ac00fcfd842c8caad468f84ec98b8e2932c66ad7a30547f91b190fe42bb2d8067fca9b0a9c29e6585072654b0388eed852a032a509ceef1ff239dff80abbdf86d23a555632399304c914e094a85034b760ecf9d5ba24c6503811a171bf2359e22693d56db5d5eded4834618565113394a2dcd216e23da1e1962c185c1173d8cb9b6bc37caf93420f215ad2850353fab921b1d2f806b8298c5bf991cc61afe850988233591620650282e6e5bb604c3f1b81b16d0c5ce269d805ce27db8778fde21b16c572ae196b8d397b11777a28dc65a205d2f9f393d9a3515911fb34d26cdb2d9acf8956de70567d20a104cec89548929e08b8c590844ee61c97712d3e380d5873ad8dbea53ee2c5e56a8e7f94a9e7e2c9dd00a45531c280086f211a9c54adbac045f90883e4b20073660f5007df5e21ea57ca7d2eb02971e420274dd8a2bed48a99ecf62e430a21ce0710952e43ac41eb3e6ee9ea35fedca8318a05442b80ca6362cc55325335a6f1ab62bf4c1e88f121fd9c4d7010238ec273e1c87289879377a259678f0fd1d533257f03aee76c122be9bf5704fa10b6b7f5f79d5c45226963c3d9ba9f1f83dc2a63c61cf8a97d508394109dcbc213fc7ce9c01bf0689047197b8684b0b054b364793cadd42cc180d15aa2d7ccf4564292612a513c0b05aa6ea4ba75775b901edc8623fda808b9a0ee64479ebc17fbbb9990e589ac1353fadb4215ee12c14e37d7e987a98cddbe80f36f57980c04ee751bc376caf090c027f8fb2384644fcf0fee1cf98f056186d0d1194c632f643362e09e6ce3c0b73ad2ef7055f81a4b03e116e92631bcebde9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048ad486300ad4153017a4adb90cb15220ecd946d7e1da9d6069505ffd084d412e7fc5479cb6e7eabea08c5f71eaccf5f8df2b5f39cf684ecef627f957b6302e0decbb29c815a274dea884df5dbd4a0a87cc7f34d12ac2740c1aaf52dd064bfc0798673a1e171ef84cb6eb7236aeaefab5f040b24a911f5bacb6a1df820982c81521064666c44b7246102446926e08da55116ee7846984d2598f612b2cf0f7f521ed1e96722ec6dc27c88d10ea29ae3b1f0f8b7bd7e0c309391f7740205314ef030bab4b818e0df7304b924a7db2d79e3967b2ccc3b691d05f76a3a2d68545e52780eceaafe13229e5a4084bcc8bba36161251610432aa8b2954d7a5f50dc37818f94d8f2befa07786e99886666018d914a9e493ad3c83e178aee43cd07a1d2d2e47b6d577d151d677a3985cf45ad96fc5db2b02fa47c69f2826ca2f9d44f8a4065e0415180f9da0104fe2a0f8e5c4d2429560d14bb85eedacb10eea72bb5bad0ec8212e7e3f6869b2c18441fb9c4b70ab7ade85783a27cdac788d0d2a4bcd402b99eaeb4987ef78e51fb6c3dc86cea25c9c34a7292915afbd19fd6ae39ad951185a5ad36b5dab514c723951497a6a6490878eb536c90262214d416c20ab3d4925d87b8ca98691fe9e8fca6e60dcbb427db55a8c6802e6bc04669bcaa0bb112f04c181e5e8cdf2fdb6f2c2254e71fce380875181b982a683c7760e50196473d104971737c1d54b2e331c6446dc14dfdd03c06e5be624c53913349937070e472a0ae646ad72ca603a786964557a337fec578d0142222a3bc965dd982f746f315b2b5b509ce946f6350f41df3d41b26aeeb9d6dc6c30064ff93b1cee7f40cb50e928a84dd3965515581b01cb9bcfb2b62b2270a84c1354be1544392f2d113e29300d7c91b5e8a464a6e274235fad3dd557cd7a6596c24001f7a04c7d54551291f61470908accd20722e707134e72f1d6e2b912763fa4432a5a9968c9f892192a34072c4f9c7b4387c1c3971ad4a80096b8da21e3129f587f4f912aa16ad04d0d50216d205e86461c02fdaa256994e24005b72eaddbcb0cd2ab22b6a50770f911c521b5fb94d33d297af8f45d40d409d5d8e39477940178f043644c0f1e57e2487d0de09dd5149bb751bd28377b2a07cf388fd07b32e59982ab73f0dd36d352afaf086250a0e35085cbaf7f4a363e23e6a67a3f8ba1a01cb0bfa4f0608abbff55b12a71bc782aa763531fa83afe6c8a7462133629ed5974bc47b76f64f86133256621a3b5b96140b2bfef9aa46945021acff9b3e445544e4ec4d366b9492d7fb8d72e6fd16a8ee11b5ce9f1d363cc0f595c8fedabd852232cd917abbab54a0283da23544939e07cce98ef50629116377e4a47ead57d2519d297380f0179e1a25d5116bdd06b365a7e300e6a40835ab689cfd94f000a2a5fb1e5179620e4ba3055a928373275d8455dbab361910898a1d15871bc184f89b64f83cf9fbbca0f6e48411f6d4bcfe84906bab59b2db01e891883b2b582a6bde3b3a97a3e670530bbd3f323094e41be1be64089ddad6a542c035aeeee5d34301887f68f1d9a331dfc2ba32af5cf866de58d476e5ec6a2edc913778f27e8df917e69e5f8be5c79fa7f178d17e13bbe64bd382544b59528906bd65c513afe32ccb6df786c6f29428674ec8e1b693cc0589419a04b9b48c5e9e199a36c29b939b54a70cf89e00698106cbb370a3e56029708eba0cc2f82524bf5ad904043d1c5d3d8d49cbc371986dfdcc3f619769a0ab4966a51e4af1c3ae1ac880280ea95659283a29c82c051c65993733000000000000000000000000000000014a0eb4f0c9c2dfec265e282e97b0b645f00000000000000000000000000000000002ae05f0c559d20f85ae08f24fe9447000000000000000000000000000000c4fe53508a22b2acceb99c2d2437f499af000000000000000000000000000000000021015fbc703cb5ad1ac784c7ff58fd000000000000000000000000000000b2314d155e88ba9fbf93fa84f79786f61b00000000000000000000000000000000001d80cdf9d43c5a779dbf5b98b1df3e0000000000000000000000000000009549e9cf6b35413637baf9562cf9ee67c100000000000000000000000000000000001d74b73c835b408fe0b2bb50cabcfe000000000000000000000000000000c1d4666fe6f13827b36bb73b4e24fbeb2b000000000000000000000000000000000022b4eeebb4e430fd3a1236ab9b8dcf00000000000000000000000000000009e0e9b4906d9badb13fc4940fc443b37700000000000000000000000000000000000e44da549d33c58f0b0720b7f8cbcb000000000000000000000000000000e2a8e6e685a025bece92a677088dc80cca0000000000000000000000000000000000085d61c54ab2936631287530ae7b8a000000000000000000000000000000e66a862c9ea4e07fa6225d030d407b560000000000000000000000000000000000001e2c28abb5800bb72c05f899639b210000000000000000000000000000009c911199fb3e5b1e016cb83ed974b132c5000000000000000000000000000000000000b455ecc1069422b6c799fd1c8eff00000000000000000000000000000093cdb871c75e5801e21b06a9f93f1d0af5000000000000000000000000000000000017d0dc33d727086996b79f29671f09000000000000000000000000000000775e3b3b694087b89c611d87e2569be1fb00000000000000000000000000000000001477336f6724ea73477b339102e608000000000000000000000000000000d3af5b7d8f4a8abfd92f67731610af142600000000000000000000000000000000000e4131a2f1518f44ab6018d7d5e3800000000000000000000000000000006968d376b68d983480e2cd7fd43750b13500000000000000000000000000000000000916665de5ac81ae2fa6e97f50322a00000000000000000000000000000050dcabc2a55861764a0b826075c5414f6400000000000000000000000000000000000df47e0f6074507d882b4932b54e59000000000000000000000000000000a7b4053b6ec800b218698a2c1ee2a6855800000000000000000000000000000000001ebc23de04afb6a8fe18c63f5aaa3f0000000000000000000000000000001be52a4c067798580e65588ad03bbe5a3a000000000000000000000000000000000024ce2082a30448a4aaf9de568edd7c00000000000000000000000000000054a2fb2783b959ee5f9191442fbd68f92600000000000000000000000000000000000bc84cead7c68cbe8d50195f6834c800000000000000000000000000000043df2b4701d6e5c19f22322347b884fd2600000000000000000000000000000000002e5843327b229354780c89df426e8a00000000000000000000000000000048f65cd88967b9db10ad5033f84417066a0000000000000000000000000000000000297e8ce62ec12aca41e67800c67dac000000000000000000000000000000e94d232dfb911f32a914c01f4a32dc546000000000000000000000000000000000001c0f8c2bd192d94c22def6a33c6c060000000000000000000000000000009f8d2c090b76a65fe988104035b7d52e37000000000000000000000000000000000001bf044a4cce5ddadb84088c330f72000000000000000000000000000000e5b0b0d0e87dd1634067177b3c8f9baf8a000000000000000000000000000000000028ef93a94c18a66df1a5bc83ef2f5800000000000000000000000000000037fa497156abcf0c9cfcf52ccaf999949b0000000000000000000000000000000000221bfa37f832e6eeb53ea42118c113000000000000000000000000000000458237a268e42541300f3906d007c77cf1000000000000000000000000000000000018f13a7ddb1d11ff2b0f2927dbd9f600000000000000000000000000000047cbaa029638b8d19278657de7aeee31d9000000000000000000000000000000000029dea2274611ee0ba44e33faa85c6f00000000000000000000000000000032c2d871984aa2a309c105326ee2810379000000000000000000000000000000000004fc4bf60921835aa3a845e75be99c000000000000000000000000000000accac78415cdfdc61da682918fab52902e00000000000000000000000000000000002e0689141c1428aa8c84d056d0ce020000000000000000000000000000004240f83860ee4ef0169502bdec31b47f7700000000000000000000000000000000002785992eee08720ac47eb64cb62feb00000000000000000000000000000076459882466797e79a2984345915f259fa00000000000000000000000000000000001f10fdb6ee3ff40cffd01cca6ff2f4000000000000000000000000000000fcfba12e167991b0240c03f4df386f527a000000000000000000000000000000000025cfa01093eeea5c1365ccbee7ed200000000000000000000000000000001384e52efac5e447f8a5158af5500fa48300000000000000000000000000000000000b1b1853ce5b9fc9032ba3e1604bbc0000000000000000000000000000003043ceb159cb7104741f68fdb2d4f69cc700000000000000000000000000000000002f1f9f51c16bb2d8ecd4725347e1e60000000000000000000000000000009f898153483c2365b0ed44f4cc17b5a4c30000000000000000000000000000000000295e56d8d10424614b48b99d41f4dd00000000000000000000000000000085e81c86912b5af21719e451ff92882e1600000000000000000000000000000000002e37910633e327d78c778d3332eb150000000000000000000000000000001eec48a91ddec22bfe4c9d6f9564b3abeb000000000000000000000000000000000026853c48d7b620cbae63208ed05651000000000000000000000000000000225deeda05e750d5b08e1a1d616689a34a00000000000000000000000000000000001b018d981ca3bbb7f48d9fb5dcddf200000000000000000000000000000039c8a5e05bb645398af1550ddc62aa9046000000000000000000000000000000000023c1261ccfd1bf4f98e460728b55070000000000000000000000000000003d0b45310b664f5306ede875b8a22184ed0000000000000000000000000000000000141f4f3eb58291b3d8d985b4f86494000000000000000000000000000000acbf514e588b88814829baf4fcb3f47deb00000000000000000000000000000000002139741280b1459da1cfb9603b3aea000000000000000000000000000000bae1122d221f54bfe41460394564a71abf0000000000000000000000000000000000137347cce9b526149b67eb1d6e7a3d00000000000000000000000000000026bc4029472a2ca5a306d3e9934152b5ae0000000000000000000000000000000000066b8d160ef3c67562213a8617c884000000000000000000000000000000c1141fa9cf1fba0cc6d2e9ca5898186b19000000000000000000000000000000000028b6c1c744ebdeadb693f7f6522cc4000000000000000000000000000000026f11a4cd8bdd6cf063c32c35b8dbaef200000000000000000000000000000000002d6337ee5f6d3ee0b411397f6e21060000000000000000000000000000005709a1716984b61b5041e9819ba151d569000000000000000000000000000000000025ba1e198dd3ce4d447e430c31842f000000000000000000000000000000ec38afec7dd3bdbee4c6b52b34a0e865d7000000000000000000000000000000000017736f5f020352f8984167c572513c0000000000000000000000000000002eb4e48d259cd2f4fccd233a79509ad8080000000000000000000000000000000000147e14740fb27564f59fe28fcf8d3d0000000000000000000000000000001e67f67a303223b76713394340d356357e00000000000000000000000000000000000d4a5778404928e55c88345ead0781000000000000000000000000000000aad83bcffbf9e2beba3b555593f4ec77e600000000000000000000000000000000000f5839662710833beff2c88d29abd400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000007c2aa31cdddd8d6cc114c9baf92eddddb8dd0856874b3938aeed4b6d891d904026c20a07e0a892e72b4f4e9eb12ecbe64b2cf489dcf6b4d0bbd5e157a2db0892de968e848f534666fd30a126d9453589e39066203ee33cc21790bc606c0f010082e6a4fa4c893366559e8462d4293c7ecb1d6e92cfd86870e6d88d82e1e22c1081700d1ee8d69be28630b477ce36daf7e0b337d689349e800a08f2a31110c710264879c616f471d3017c10b384809787503151985201eab0f9d042d5bd03c7314aa7e9372fd91c15484ceda9667aa3ba732587f01ffa9886f20cb4e68e4cb2f0413ab00b6d171609294f1bc73579b63a0a5eb5e08f2c1027117708dafe89e8122510bf3b00bed0c56a99a72bf271f76f731d92a8f3a27bbffbd46de04e8593e07034b498ba21a80273efd5dc104fff93a497686b93bd3a89d1c27a0a32b1e74064541310fc218532b75f698ced1ed6dc9a0788122f2a4fdf71de98f055b26430f00fbd3975278398eb1048909fdc30c68704e5ba89e4d09b32781206702f548259abb4cc66a3158700d7b4c807c4eed9e25b0fc4a120d0f573c22b4eaff6c692004192251578bc6aa3d24cd408e85fb5224cd874bcf53c664a4423744f7ff711c9f3990fbe43a5ff35059b949c19a4e7abfa26bd7fd4ade9457406f376ab84f1da880b28ba2201fc8c664294dabbeb6793e48e0508569b02a5a8623b31a45932b2d75cecfd44c70ce52944eb1c73eb22fa64d1e02b674c1a02805db6afbce630447559fe3812b91e387e7367e6b59baafc3ab7dd29774d9fbfafc5c3f8e40782448bbc1995d25a012211c3731c70ba77f4deb0fab5fb09826ae66b06f34728a1fb35c9388da72cc724e3d7f04a39ffc4c21cbc3c20e2753b3215523f57ea1742d19ca57b5dd64cb7f9b62524b28a62521d59c84c5e9a6cbdcab853bdb42ea0912eb9a1b717b8217ae4f20cab94bce5e06a0b6311e0d3d73c4efe7b8714825522f8ab298375cd05dd07477aa30a59b424d44707b148a0ee4e8ad39366119fbdc2ab86e8aa871ef064750e0fbcf7e628f8ca9c373a236079acd60e6cb306bc6fd2e6c162609d85070d4636812373ff4642a45190bab2759d95cf82297c7a40e2700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064ab34b32c49a0b7bed5d7035c10db14d8000000000000000000000000000000000020bf79a9b7269b6abfc09eeeaec955000000000000000000000000000000ab1fdc13b60391a57dc68983730446b55d000000000000000000000000000000000003b964ae7a6fee82e168800ea0fe0a000000000000000000000000000000474d6d840c81f9023e97a526bdba7014000000000000000000000000000000000000119d436d478086df28d73a28508a82000000000000000000000000000000561ce83c55e74926f29d0c703796563a6500000000000000000000000000000000002105a214b32e3db7c801af0cc96d5e0000040c","publicInputs":"0x06f32a63ab1a10c44b40a14c94fd4e693830a91920a63778c91df75b67c3a2590000000107280517ca1e78bf1695ef64be32a191c9be596f1187f3c7977faff7e24056bd000000030000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb006b9585a5e170e2ee0ba4ea606cf9b6dac9096e94e5b22d48c247b37ce69514008a03d1cbf04c728546df9b241db51cfbde1c179813e31b957b5313b776ee2a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e630f76f97b5ee7be34ec1043da864e3586334f6df8b48eac5477c1a568bc2a236e28b260237bb24c77306386b852e3775bc6b9ed72afa2fd5cb1da33a76df400000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file diff --git a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts index 7c322e484a6b..7bb7a56d2f6b 100644 --- a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts +++ b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts @@ -435,6 +435,8 @@ export function mapRootRollupPublicInputsFromNoir( mapFieldFromNoir(rootRollupPublicInputs.out_hash), mapTupleFromNoir(rootRollupPublicInputs.proposed_block_header_hashes, AZTEC_MAX_EPOCH_DURATION, mapFieldFromNoir), mapTupleFromNoir(rootRollupPublicInputs.fees, AZTEC_MAX_EPOCH_DURATION, mapFeeRecipientFromNoir), + mapFieldFromNoir(rootRollupPublicInputs.chain_id), + mapFieldFromNoir(rootRollupPublicInputs.version), mapFieldFromNoir(rootRollupPublicInputs.vk_tree_root), mapFieldFromNoir(rootRollupPublicInputs.protocol_contract_tree_root), mapFieldFromNoir(rootRollupPublicInputs.prover_id), diff --git a/yarn-project/stdlib/src/rollup/root_rollup.ts b/yarn-project/stdlib/src/rollup/root_rollup.ts index 54c1d7ddf772..787762625937 100644 --- a/yarn-project/stdlib/src/rollup/root_rollup.ts +++ b/yarn-project/stdlib/src/rollup/root_rollup.ts @@ -109,6 +109,8 @@ export class RootRollupPublicInputs { public outHash: Fr, public proposedBlockHeaderHashes: Tuple, public fees: Tuple, + public chainId: Fr, + public version: Fr, public vkTreeRoot: Fr, public protocolContractTreeRoot: Fr, public proverId: Fr, @@ -124,6 +126,8 @@ export class RootRollupPublicInputs { fields.outHash, fields.proposedBlockHeaderHashes, fields.fees, + fields.chainId, + fields.version, fields.vkTreeRoot, fields.protocolContractTreeRoot, fields.proverId, @@ -161,6 +165,8 @@ export class RootRollupPublicInputs { Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + Fr.fromBuffer(reader), + Fr.fromBuffer(reader), reader.readArray(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs), ); } @@ -196,6 +202,8 @@ export class RootRollupPublicInputs { Fr.random(), Fr.random(), Fr.random(), + Fr.random(), + Fr.random(), makeTuple(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs.empty), ); } diff --git a/yarn-project/stdlib/src/tests/factories.ts b/yarn-project/stdlib/src/tests/factories.ts index a84e7de14a21..3bbdd6a7585f 100644 --- a/yarn-project/stdlib/src/tests/factories.ts +++ b/yarn-project/stdlib/src/tests/factories.ts @@ -890,6 +890,8 @@ export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs { fr(seed + 0x700), fr(seed + 0x701), fr(seed + 0x702), + fr(seed + 0x703), + fr(seed + 0x704), makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeBlockBlobPublicInputs(seed), 0x800), ); } From 3da3ea3235d9e56b55f7759e1c9671cccbefaf70 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Sun, 27 Apr 2025 09:31:11 +0000 Subject: [PATCH 10/10] Remove outdated comment. --- .../noir-protocol-circuits/crates/types/src/constants.nr | 1 - 1 file changed, 1 deletion(-) diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index 59657e0d6450..d8482e80d765 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -455,7 +455,6 @@ pub global BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH: u32 = 2 + 1 /* protocol_contract_tree_root */ + 1 /* prover_id */ + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; -// + 6 for end_timestamp, end_block_number, out_hash, vk_tree_root, protocol_contract_tree_root, prover_id pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH /* previous_archive */ + APPEND_ONLY_TREE_SNAPSHOT_LENGTH /* end_archive */ + 1 /* end_timestamp */