From a59f32acadbf24d68cfd0c17e3937088f1864b25 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Thu, 23 Nov 2023 20:13:37 +0000 Subject: [PATCH 01/11] Generate constants files from Noir. --- .../aztec-nr/aztec/src/constants_gen.nr | 13 -- .../circuits.js/src/cbind/constants.gen.ts | 18 -- .../circuits.js/src/cbind/constants.in.ts | 184 ++++++++++-------- 3 files changed, 98 insertions(+), 117 deletions(-) diff --git a/yarn-project/aztec-nr/aztec/src/constants_gen.nr b/yarn-project/aztec-nr/aztec/src/constants_gen.nr index 01c0ab5e0e9..0fa89a3eee6 100644 --- a/yarn-project/aztec-nr/aztec/src/constants_gen.nr +++ b/yarn-project/aztec-nr/aztec/src/constants_gen.nr @@ -1,4 +1,3 @@ -// GENERATED FILE - DO NOT EDIT, RUN yarn remake-constants in circuits.js global ARGS_LENGTH: Field = 16; global RETURN_VALUES_LENGTH: Field = 4; global MAX_NEW_COMMITMENTS_PER_CALL: Field = 16; @@ -109,15 +108,3 @@ global GENERATOR_INDEX__VK = 41; global GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS = 42; global GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS = 43; global GENERATOR_INDEX__FUNCTION_ARGS = 44; -global STORAGE_SLOT_GENERATOR_INDEX__BASE_SLOT = 0; -global STORAGE_SLOT_GENERATOR_INDEX__MAPPING_SLOT = 1; -global STORAGE_SLOT_GENERATOR_INDEX__MAPPING_SLOT_PLACEHOLDER = 2; -global PRIVATE_STATE_NOTE_GENERATOR_INDEX__VALUE = 1; -global PRIVATE_STATE_NOTE_GENERATOR_INDEX__OWNER = 2; -global PRIVATE_STATE_NOTE_GENERATOR_INDEX__CREATOR = 3; -global PRIVATE_STATE_NOTE_GENERATOR_INDEX__SALT = 4; -global PRIVATE_STATE_NOTE_GENERATOR_INDEX__NONCE = 5; -global PRIVATE_STATE_NOTE_GENERATOR_INDEX__MEMO = 6; -global PRIVATE_STATE_NOTE_GENERATOR_INDEX__IS_DUMMY = 7; -global PRIVATE_STATE_TYPE__PARTITIONED = 1; -global PRIVATE_STATE_TYPE__WHOLE = 2; diff --git a/yarn-project/circuits.js/src/cbind/constants.gen.ts b/yarn-project/circuits.js/src/cbind/constants.gen.ts index 61f9bbc3729..3cbbab21121 100644 --- a/yarn-project/circuits.js/src/cbind/constants.gen.ts +++ b/yarn-project/circuits.js/src/cbind/constants.gen.ts @@ -112,21 +112,3 @@ export enum GeneratorIndex { PUBLIC_CIRCUIT_PUBLIC_INPUTS = 43, FUNCTION_ARGS = 44, } -export enum StorageSlotGeneratorIndex { - BASE_SLOT = 0, - MAPPING_SLOT = 1, - MAPPING_SLOT_PLACEHOLDER = 2, -} -export enum PrivateStateNoteGeneratorIndex { - VALUE = 1, - OWNER = 2, - CREATOR = 3, - SALT = 4, - NONCE = 5, - MEMO = 6, - IS_DUMMY = 7, -} -export enum PrivateStateType { - PARTITIONED = 1, - WHOLE = 2, -} diff --git a/yarn-project/circuits.js/src/cbind/constants.in.ts b/yarn-project/circuits.js/src/cbind/constants.in.ts index 300e676a207..83f189c77ba 100644 --- a/yarn-project/circuits.js/src/cbind/constants.in.ts +++ b/yarn-project/circuits.js/src/cbind/constants.in.ts @@ -3,67 +3,22 @@ import { fileURLToPath } from '@aztec/foundation/url'; import * as fs from 'fs'; import { dirname, join } from 'path'; -import { CircuitsWasm } from '../wasm/circuits_wasm.js'; -import { callCbind } from './cbind.js'; +const NOIR_CONSTANTS_FILE = '../../../aztec-nr/aztec/src/constants_gen.nr'; +const TS_CONSTANTS_FILE = './constants.gen.ts'; +const SOLIDITY_CONSTANTS_FILE = '../../../../l1-contracts/src/core/libraries/ConstantsGen.sol'; /** - * Convert the C++ constants to TypeScript and Noir. + * Parsed content. */ -async function main(): Promise { - const wasm = await CircuitsWasm.get(); - const constants = callCbind(wasm, 'get_circuit_constants', []); - const generatorIndexEnum = callCbind(wasm, 'get_circuit_generator_index', []); - const storageSlotGeneratorIndexEnum = callCbind(wasm, 'get_circuit_storage_slot_generator_index', []); - const privateStateNoteGeneratorIndexEnum = callCbind(wasm, 'get_circuit_private_state_note_generator_index', []); - const privateStateTypeEnum = callCbind(wasm, 'get_circuit_private_state_type', []); - - const __dirname = dirname(fileURLToPath(import.meta.url)); - - // Typescript - const resultTS: string = - '/* eslint-disable */\n// GENERATED FILE - DO NOT EDIT, RUN yarn remake-constants\n' + - processConstantsTS(constants) + - processEnumTS('GeneratorIndex', generatorIndexEnum) + - processEnumTS('StorageSlotGeneratorIndex', storageSlotGeneratorIndexEnum) + - processEnumTS('PrivateStateNoteGeneratorIndex', privateStateNoteGeneratorIndexEnum) + - processEnumTS('PrivateStateType', privateStateTypeEnum); - - fs.writeFileSync(__dirname + '/constants.gen.ts', resultTS); - - // Noir - const resultNoir: string = - '// GENERATED FILE - DO NOT EDIT, RUN yarn remake-constants in circuits.js\n' + - processConstantsNoir(constants) + - processEnumNoir(generatorIndexEnum, 'GENERATOR_INDEX__') + - processEnumNoir(storageSlotGeneratorIndexEnum, 'STORAGE_SLOT_GENERATOR_INDEX__') + - processEnumNoir(privateStateNoteGeneratorIndexEnum, 'PRIVATE_STATE_NOTE_GENERATOR_INDEX__') + - processEnumNoir(privateStateTypeEnum, 'PRIVATE_STATE_TYPE__'); - - const noirTargetPath = join(__dirname, '../../../aztec-nr/aztec/src/constants_gen.nr'); - fs.writeFileSync(noirTargetPath, resultNoir); - - // Solidity - const resultSolidity: string = `// GENERATED FILE - DO NOT EDIT, RUN yarn remake-constants in circuits.js -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2023 Aztec Labs. -pragma solidity >=0.8.18; - -/** - * @title Constants Library - * @author Aztec Labs - * @notice Library that contains constants used throughout the Aztec protocol - */ -library Constants { - // Prime field modulus - uint256 internal constant P = - 21888242871839275222246405745257275088548364400416034343698204186575808495617; - uint256 internal constant MAX_FIELD_VALUE = P - 1; - -${processConstantsSolidity(constants)} -}\n`; - - const solidityTargetPath = join(__dirname, '../../../../l1-contracts/src/core/libraries/ConstantsGen.sol'); - fs.writeFileSync(solidityTargetPath, resultSolidity); +interface ParsedContent { + /** + * Constants. + */ + constants: { [key: string]: number }; + /** + * GeneratorIndexEnum. + */ + generatorIndexEnum: { [key: string]: number }; } /** @@ -102,50 +57,107 @@ function processEnumTS(enumName: string, enumValues: { [key: string]: number }): } /** - * Processes a collection of constants and generates code to export them as Noir constants. + * Processes a collection of constants and generates code to export them as Solidity constants. * * @param constants - An object containing key-value pairs representing constants. * @param prefix - A prefix to add to the constant names. * @returns A string containing code that exports the constants as Noir constants. */ -function processConstantsNoir(constants: { [key: string]: number }, prefix = ''): string { +function processConstantsSolidity(constants: { [key: string]: number }, prefix = ''): string { const code: string[] = []; Object.entries(constants).forEach(([key, value]) => { - code.push(`global ${prefix}${key}: Field = ${value};`); + code.push(` uint256 internal constant ${prefix}${key} = ${value};`); }); - return code.join('\n') + '\n'; + return code.join('\n'); } /** - * Processes a collection of enums and generates code to export them as Noir constants prefixed with enum name. - * - * @param enumValues - An object containing key-value pairs representing enum values. - * @param enumPrefix - A prefix to add to the names of resulting Noir constants to communicate the constant was part - * of C++ enum. - * @returns A string containing code that exports the enums as Noir constants prefixed with enum name. + * Generate the constants file in Typescript. */ -function processEnumNoir(enumValues: { [key: string]: number }, enumPrefix: string): string { - const code: string[] = []; - Object.entries(enumValues).forEach(([key, value]) => { - code.push(`global ${enumPrefix}${key} = ${value};`); - }); - return code.join('\n') + '\n'; +function generateTypescriptConstants({ constants, generatorIndexEnum }: ParsedContent, targetPath: string) { + const result = [ + '/* eslint-disable */\n// GENERATED FILE - DO NOT EDIT, RUN yarn remake-constants', + processConstantsTS(constants), + processEnumTS('GeneratorIndex', generatorIndexEnum), + ].join('\n'); + + fs.writeFileSync(targetPath, result); } /** - * Processes a collection of constants and generates code to export them as Solidity constants. - * - * @param constants - An object containing key-value pairs representing constants. - * @param prefix - A prefix to add to the constant names. - * @returns A string containing code that exports the constants as Noir constants. + * Generate the constants file in Solidity. */ -function processConstantsSolidity(constants: { [key: string]: number }, prefix = ''): string { - const code: string[] = []; - Object.entries(constants).forEach(([key, value]) => { - code.push(` uint256 internal constant ${prefix}${key} = ${value};`); +function generateSolidityConstants({ constants }: ParsedContent, targetPath: string) { + const resultSolidity: string = `// GENERATED FILE - DO NOT EDIT, RUN yarn remake-constants in circuits.js +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2023 Aztec Labs. +pragma solidity >=0.8.18; + +/** + * @title Constants Library + * @author Aztec Labs + * @notice Library that contains constants used throughout the Aztec protocol + */ +library Constants { + // Prime field modulus + uint256 internal constant P = + 21888242871839275222246405745257275088548364400416034343698204186575808495617; + uint256 internal constant MAX_FIELD_VALUE = P - 1; + +${processConstantsSolidity(constants)} +}\n`; + + fs.writeFileSync(targetPath, resultSolidity); +} + +/** + * Parse the content of the constants file in Noir. + */ +function parseNoirFile(fileContent: string): ParsedContent { + const constants: { [key: string]: number } = {}; + const generatorIndexEnum: { [key: string]: number } = {}; + + fileContent.split('\n').forEach(l => { + const line = l.trim(); + if (!line || line.startsWith('//')) { + return; + } + + const [, name, _type, value] = line.match(/global\s+(\w+)(\s*:\s*\w+)?\s*=\s*(\d+);/) || []; + if (!name || !value) { + // eslint-disable-next-line no-console + console.warn(`Unknown content: ${line}`); + return; + } + + const [, indexName] = name.match(/GENERATOR_INDEX__(\w+)/) || []; + if (indexName) { + generatorIndexEnum[indexName] = +value; + } else { + constants[name] = +value; + } }); - return code.join('\n'); + + return { constants, generatorIndexEnum }; +} + +/** + * Convert the Noir constants to TypeScript and Solidity. + */ +function main(): void { + const __dirname = dirname(fileURLToPath(import.meta.url)); + + const noirConstantsFile = join(__dirname, NOIR_CONSTANTS_FILE); + const noirConstants = fs.readFileSync(noirConstantsFile, 'utf-8'); + const parsedContent = parseNoirFile(noirConstants); + + // Typescript + const tsTargetPath = join(__dirname, TS_CONSTANTS_FILE); + generateTypescriptConstants(parsedContent, tsTargetPath); + + // Solidity + const solidityTargetPath = join(__dirname, SOLIDITY_CONSTANTS_FILE); + generateSolidityConstants(parsedContent, solidityTargetPath); } -// eslint-disable-next-line no-console -main().catch(console.error); +main(); From ceebef4edfc80397aa61fe70496437b11c4cb520 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Thu, 23 Nov 2023 20:22:29 +0000 Subject: [PATCH 02/11] Move ts constants file out of cbind folder. --- yarn-project/circuits.js/package.json | 2 +- yarn-project/circuits.js/src/{cbind => }/constants.gen.ts | 0 yarn-project/circuits.js/src/index.ts | 2 +- yarn-project/circuits.js/src/{cbind => scripts}/constants.in.ts | 2 +- .../circuits.js/src/structs/kernel/combined_accumulated_data.ts | 2 +- yarn-project/circuits.js/src/structs/kernel/private_kernel.ts | 2 +- yarn-project/circuits.js/src/structs/kernel/public_kernel.ts | 2 +- yarn-project/circuits.js/src/structs/membership_witness.ts | 2 +- .../circuits.js/src/structs/private_circuit_public_inputs.ts | 2 +- .../circuits.js/src/structs/public_circuit_public_inputs.ts | 2 +- .../circuits.js/src/structs/read_request_membership_witness.ts | 2 +- .../src/structs/rollup/base_or_merge_rollup_public_inputs.ts | 2 +- yarn-project/circuits.js/src/structs/rollup/base_rollup.ts | 2 +- .../circuits.js/src/structs/rollup/previous_rollup_data.ts | 2 +- yarn-project/circuits.js/src/structs/rollup/root_rollup.ts | 2 +- 15 files changed, 14 insertions(+), 14 deletions(-) rename yarn-project/circuits.js/src/{cbind => }/constants.gen.ts (100%) rename yarn-project/circuits.js/src/{cbind => scripts}/constants.in.ts (99%) diff --git a/yarn-project/circuits.js/package.json b/yarn-project/circuits.js/package.json index 5b49a3393d5..f74c46295e6 100644 --- a/yarn-project/circuits.js/package.json +++ b/yarn-project/circuits.js/package.json @@ -23,7 +23,7 @@ "clean": "rm -rf ./dest .tsbuildinfo", "formatting": "run -T prettier --check ./src && run -T eslint ./src", "formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src", - "remake-constants": "ts-node-esm src/cbind/constants.in.ts && prettier -w src/cbind/constants.gen.ts", + "remake-constants": "ts-node-esm src/scripts/constants.in.ts && prettier -w src/constants.gen.ts", "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --passWithNoTests" }, "inherits": [ diff --git a/yarn-project/circuits.js/src/cbind/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts similarity index 100% rename from yarn-project/circuits.js/src/cbind/constants.gen.ts rename to yarn-project/circuits.js/src/constants.gen.ts diff --git a/yarn-project/circuits.js/src/index.ts b/yarn-project/circuits.js/src/index.ts index 1753b07f299..c1b39962458 100644 --- a/yarn-project/circuits.js/src/index.ts +++ b/yarn-project/circuits.js/src/index.ts @@ -4,4 +4,4 @@ export * from './rollup/index.js'; export * from './utils/jsUtils.js'; export * from './contract/index.js'; export * from './types/index.js'; -export * from './cbind/constants.gen.js'; +export * from './constants.gen.js'; diff --git a/yarn-project/circuits.js/src/cbind/constants.in.ts b/yarn-project/circuits.js/src/scripts/constants.in.ts similarity index 99% rename from yarn-project/circuits.js/src/cbind/constants.in.ts rename to yarn-project/circuits.js/src/scripts/constants.in.ts index 83f189c77ba..c74a728e36d 100644 --- a/yarn-project/circuits.js/src/cbind/constants.in.ts +++ b/yarn-project/circuits.js/src/scripts/constants.in.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import { dirname, join } from 'path'; const NOIR_CONSTANTS_FILE = '../../../aztec-nr/aztec/src/constants_gen.nr'; -const TS_CONSTANTS_FILE = './constants.gen.ts'; +const TS_CONSTANTS_FILE = '../constants.gen.ts'; const SOLIDITY_CONSTANTS_FILE = '../../../../l1-contracts/src/core/libraries/ConstantsGen.sol'; /** diff --git a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts index 75d7cccb52c..4f84c10ff55 100644 --- a/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts +++ b/yarn-project/circuits.js/src/structs/kernel/combined_accumulated_data.ts @@ -14,7 +14,7 @@ import { MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_READ_REQUESTS_PER_TX, NUM_FIELDS_PER_SHA256, -} from '../../cbind/constants.gen.js'; +} from '../../constants.gen.js'; import { makeTuple } from '../../index.js'; import { serializeToBuffer } from '../../utils/serialize.js'; import { CallRequest } from '../call_request.js'; diff --git a/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts b/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts index c07c54fe9f7..ae06b810543 100644 --- a/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts +++ b/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts @@ -9,7 +9,7 @@ import { MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_READ_REQUESTS_PER_CALL, MAX_READ_REQUESTS_PER_TX, -} from '../../cbind/constants.gen.js'; +} from '../../constants.gen.js'; import { FieldsOf } from '../../utils/jsUtils.js'; import { serializeToBuffer } from '../../utils/serialize.js'; import { CallRequest } from '../call_request.js'; diff --git a/yarn-project/circuits.js/src/structs/kernel/public_kernel.ts b/yarn-project/circuits.js/src/structs/kernel/public_kernel.ts index 277c3521acf..346f727e9ed 100644 --- a/yarn-project/circuits.js/src/structs/kernel/public_kernel.ts +++ b/yarn-project/circuits.js/src/structs/kernel/public_kernel.ts @@ -6,7 +6,7 @@ import { MAX_PUBLIC_DATA_READS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PUBLIC_DATA_TREE_HEIGHT, -} from '../../cbind/constants.gen.js'; +} from '../../constants.gen.js'; import { assertMemberLength } from '../../utils/jsUtils.js'; import { serializeToBuffer } from '../../utils/serialize.js'; import { CallRequest } from '../call_request.js'; diff --git a/yarn-project/circuits.js/src/structs/membership_witness.ts b/yarn-project/circuits.js/src/structs/membership_witness.ts index 350bbe4fa15..083f3d8de73 100644 --- a/yarn-project/circuits.js/src/structs/membership_witness.ts +++ b/yarn-project/circuits.js/src/structs/membership_witness.ts @@ -2,7 +2,7 @@ import { toBigIntBE, toBufferBE } from '@aztec/foundation/bigint-buffer'; import { Fr } from '@aztec/foundation/fields'; import { BufferReader, Tuple } from '@aztec/foundation/serialize'; -import { NOTE_HASH_TREE_HEIGHT } from '../cbind/constants.gen.js'; +import { NOTE_HASH_TREE_HEIGHT } from '../constants.gen.js'; import { assertMemberLength, range } from '../utils/jsUtils.js'; import { serializeToBuffer } from '../utils/serialize.js'; diff --git a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts index 16618ceb2c7..01624ad2398 100644 --- a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts @@ -12,7 +12,7 @@ import { MAX_READ_REQUESTS_PER_CALL, NUM_FIELDS_PER_SHA256, RETURN_VALUES_LENGTH, -} from '../cbind/constants.gen.js'; +} from '../constants.gen.js'; import { FieldsOf, makeTuple } from '../utils/jsUtils.js'; import { serializeToBuffer } from '../utils/serialize.js'; import { CallContext } from './call_context.js'; diff --git a/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.ts index a4bb7d67c90..aafd9b454bb 100644 --- a/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.ts @@ -11,7 +11,7 @@ import { MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, RETURN_VALUES_LENGTH, -} from '../cbind/constants.gen.js'; +} from '../constants.gen.js'; import { FieldsOf, makeTuple } from '../utils/jsUtils.js'; import { serializeToBuffer } from '../utils/serialize.js'; import { CallContext } from './call_context.js'; diff --git a/yarn-project/circuits.js/src/structs/read_request_membership_witness.ts b/yarn-project/circuits.js/src/structs/read_request_membership_witness.ts index 008be874241..f66d89ce2b4 100644 --- a/yarn-project/circuits.js/src/structs/read_request_membership_witness.ts +++ b/yarn-project/circuits.js/src/structs/read_request_membership_witness.ts @@ -2,7 +2,7 @@ import { toBufferBE } from '@aztec/foundation/bigint-buffer'; import { Fr } from '@aztec/foundation/fields'; import { BufferReader, Tuple } from '@aztec/foundation/serialize'; -import { MAX_NEW_COMMITMENTS_PER_CALL, NOTE_HASH_TREE_HEIGHT } from '../cbind/constants.gen.js'; +import { MAX_NEW_COMMITMENTS_PER_CALL, NOTE_HASH_TREE_HEIGHT } from '../constants.gen.js'; import { makeTuple, range } from '../utils/jsUtils.js'; import { serializeToBuffer } from '../utils/serialize.js'; import { MembershipWitness } from './membership_witness.js'; diff --git a/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts b/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts index 9f614f29d62..c58f778a994 100644 --- a/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts @@ -1,7 +1,7 @@ import { Fr } from '@aztec/foundation/fields'; import { BufferReader } from '@aztec/foundation/serialize'; -import { NUM_FIELDS_PER_SHA256 } from '../../cbind/constants.gen.js'; +import { NUM_FIELDS_PER_SHA256 } from '../../constants.gen.js'; import { serializeToBuffer } from '../../utils/serialize.js'; import { AggregationObject } from '../aggregation_object.js'; import { RollupTypes } from '../shared.js'; diff --git a/yarn-project/circuits.js/src/structs/rollup/base_rollup.ts b/yarn-project/circuits.js/src/structs/rollup/base_rollup.ts index 85dd3d3d565..13e8edf46e1 100644 --- a/yarn-project/circuits.js/src/structs/rollup/base_rollup.ts +++ b/yarn-project/circuits.js/src/structs/rollup/base_rollup.ts @@ -12,7 +12,7 @@ import { NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, PUBLIC_DATA_TREE_HEIGHT, -} from '../../cbind/constants.gen.js'; +} from '../../constants.gen.js'; import { FieldsOf } from '../../utils/jsUtils.js'; import { serializeToBuffer } from '../../utils/serialize.js'; import { GlobalVariables } from '../global_variables.js'; diff --git a/yarn-project/circuits.js/src/structs/rollup/previous_rollup_data.ts b/yarn-project/circuits.js/src/structs/rollup/previous_rollup_data.ts index db7c2da556f..1689bfef60d 100644 --- a/yarn-project/circuits.js/src/structs/rollup/previous_rollup_data.ts +++ b/yarn-project/circuits.js/src/structs/rollup/previous_rollup_data.ts @@ -1,4 +1,4 @@ -import { ROLLUP_VK_TREE_HEIGHT } from '../../cbind/constants.gen.js'; +import { ROLLUP_VK_TREE_HEIGHT } from '../../constants.gen.js'; import { serializeToBuffer } from '../../utils/serialize.js'; import { MembershipWitness } from '../membership_witness.js'; import { Proof } from '../proof.js'; diff --git a/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts b/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts index 198b40ea183..5688f5e5f5c 100644 --- a/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts +++ b/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts @@ -5,7 +5,7 @@ import { HISTORIC_BLOCKS_TREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, -} from '../../cbind/constants.gen.js'; +} from '../../constants.gen.js'; import { FieldsOf } from '../../utils/jsUtils.js'; import { serializeToBuffer } from '../../utils/serialize.js'; import { AggregationObject } from '../aggregation_object.js'; From 68c6e527128e8ef102fdac8ce55f71c20d23ba63 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Thu, 23 Nov 2023 20:54:59 +0000 Subject: [PATCH 03/11] Remove unused files and functions. --- yarn-project/circuits.js/src/cbind/README.md | 1 - yarn-project/circuits.js/src/cbind/cbind.ts | 20 +- .../circuits.js/src/cbind/circuits.gen.ts | 66 ++- .../circuits.js/src/cbind/circuits.in.ts | 31 - .../circuits.js/src/cbind/compiler.ts | 531 ------------------ .../circuits.js/src/cbind/type_data.ts | 4 - yarn-project/circuits.js/src/cbind/types.ts | 47 +- .../circuits.js/src/tests/expectMsgpack.ts | 36 -- .../circuits.js/src/tests/expectSerialize.ts | 2 +- 9 files changed, 35 insertions(+), 703 deletions(-) delete mode 100644 yarn-project/circuits.js/src/cbind/README.md delete mode 100644 yarn-project/circuits.js/src/cbind/circuits.in.ts delete mode 100644 yarn-project/circuits.js/src/cbind/compiler.ts delete mode 100644 yarn-project/circuits.js/src/cbind/type_data.ts delete mode 100644 yarn-project/circuits.js/src/tests/expectMsgpack.ts diff --git a/yarn-project/circuits.js/src/cbind/README.md b/yarn-project/circuits.js/src/cbind/README.md deleted file mode 100644 index 3c2f6a63d36..00000000000 --- a/yarn-project/circuits.js/src/cbind/README.md +++ /dev/null @@ -1 +0,0 @@ -Eventually move to bb.js? diff --git a/yarn-project/circuits.js/src/cbind/cbind.ts b/yarn-project/circuits.js/src/cbind/cbind.ts index d7f87ca0543..7cbdb548423 100644 --- a/yarn-project/circuits.js/src/cbind/cbind.ts +++ b/yarn-project/circuits.js/src/cbind/cbind.ts @@ -1,9 +1,8 @@ +// TODO: Can be deleted once circuits.gen.ts is gone. import { IWasmModule } from '@aztec/foundation/wasm'; import { decode, encode } from '@msgpack/msgpack'; -import { CircuitsWasm } from '../wasm/index.js'; - /** * Recursively converts Uint8Arrays to Buffers in the input data structure. * The function traverses through the given data, and if it encounters a Uint8Array, @@ -43,23 +42,6 @@ function readPtr32(wasm: IWasmModule, ptr32: number) { return dataView.getUint32(0, /*little endian*/ true); } -/** - * Retrieves the JSON schema of a given C binding function from the WebAssembly module. - * - * @param wasm - The CircuitsWasm. - * @param cbind - The name of the function. - * @returns A JSON object representing the schema. - */ -export function getCbindSchema(wasm: CircuitsWasm, cbind: string): any { - const outputSizePtr = wasm.call('bbmalloc', 4); - const outputMsgpackPtr = wasm.call('bbmalloc', 4); - wasm.call(cbind + '__schema', outputMsgpackPtr, outputSizePtr); - const jsonSchema = wasm.getMemoryAsString(readPtr32(wasm, outputMsgpackPtr)); - wasm.call('bbfree', outputSizePtr); - wasm.call('bbfree', outputMsgpackPtr); - return JSON.parse(jsonSchema); -} - /** * Calls a C binding function in the WebAssembly module with the provided input arguments. * diff --git a/yarn-project/circuits.js/src/cbind/circuits.gen.ts b/yarn-project/circuits.js/src/cbind/circuits.gen.ts index 9886c0ed884..1f31d126dc9 100644 --- a/yarn-project/circuits.js/src/cbind/circuits.gen.ts +++ b/yarn-project/circuits.js/src/cbind/circuits.gen.ts @@ -1,5 +1,5 @@ /* eslint-disable camelcase,jsdoc/require-jsdoc */ -// TODO: Remove this file as we no longer generate types from cpp. +// TODO: Can be deleted once baseRollupSim is not used. import { Tuple, mapTuple } from '@aztec/foundation/serialize'; import { IWasmModule } from '@aztec/foundation/wasm'; @@ -45,7 +45,7 @@ interface MsgpackPoint { y: Buffer; } -export function fromPoint(o: Point): MsgpackPoint { +function fromPoint(o: Point): MsgpackPoint { if (o.x === undefined) { throw new Error('Expected x in Point serialization'); } @@ -65,7 +65,7 @@ interface MsgpackGlobalVariables { timestamp: Buffer; } -export function toGlobalVariables(o: MsgpackGlobalVariables): GlobalVariables { +function toGlobalVariables(o: MsgpackGlobalVariables): GlobalVariables { if (o.chain_id === undefined) { throw new Error('Expected chain_id in GlobalVariables deserialization'); } @@ -86,7 +86,7 @@ export function toGlobalVariables(o: MsgpackGlobalVariables): GlobalVariables { ); } -export function fromGlobalVariables(o: GlobalVariables): MsgpackGlobalVariables { +function fromGlobalVariables(o: GlobalVariables): MsgpackGlobalVariables { if (o.chainId === undefined) { throw new Error('Expected chainId in GlobalVariables serialization'); } @@ -112,7 +112,7 @@ interface MsgpackG1AffineElement { y: Buffer; } -export function toG1AffineElement(o: MsgpackG1AffineElement): G1AffineElement { +function toG1AffineElement(o: MsgpackG1AffineElement): G1AffineElement { if (o.x === undefined) { throw new Error('Expected x in G1AffineElement deserialization'); } @@ -122,7 +122,7 @@ export function toG1AffineElement(o: MsgpackG1AffineElement): G1AffineElement { return new G1AffineElement(Fq.fromBuffer(o.x), Fq.fromBuffer(o.y)); } -export function fromG1AffineElement(o: G1AffineElement): MsgpackG1AffineElement { +function fromG1AffineElement(o: G1AffineElement): MsgpackG1AffineElement { if (o.x === undefined) { throw new Error('Expected x in G1AffineElement serialization'); } @@ -143,7 +143,7 @@ interface MsgpackNativeAggregationState { has_data: boolean; } -export function toNativeAggregationState(o: MsgpackNativeAggregationState): NativeAggregationState { +function toNativeAggregationState(o: MsgpackNativeAggregationState): NativeAggregationState { if (o.P0 === undefined) { throw new Error('Expected P0 in NativeAggregationState deserialization'); } @@ -168,7 +168,7 @@ export function toNativeAggregationState(o: MsgpackNativeAggregationState): Nati ); } -export function fromNativeAggregationState(o: NativeAggregationState): MsgpackNativeAggregationState { +function fromNativeAggregationState(o: NativeAggregationState): MsgpackNativeAggregationState { if (o.p0 === undefined) { throw new Error('Expected p0 in NativeAggregationState serialization'); } @@ -199,7 +199,7 @@ interface MsgpackNewContractData { function_tree_root: Buffer; } -export function fromNewContractData(o: NewContractData): MsgpackNewContractData { +function fromNewContractData(o: NewContractData): MsgpackNewContractData { if (o.contractAddress === undefined) { throw new Error('Expected contractAddress in NewContractData serialization'); } @@ -220,7 +220,7 @@ interface MsgpackFunctionSelector { value: number; } -export function fromFunctionSelector(o: FunctionSelector): MsgpackFunctionSelector { +function fromFunctionSelector(o: FunctionSelector): MsgpackFunctionSelector { if (o.value === undefined) { throw new Error('Expected value in FunctionSelector serialization'); } @@ -236,7 +236,7 @@ interface MsgpackFunctionData { is_constructor: boolean; } -export function fromFunctionData(o: FunctionData): MsgpackFunctionData { +function fromFunctionData(o: FunctionData): MsgpackFunctionData { if (o.selector === undefined) { throw new Error('Expected selector in FunctionData serialization'); } @@ -268,7 +268,7 @@ interface MsgpackOptionallyRevealedData { called_from_public_l2: boolean; } -export function fromOptionallyRevealedData(o: OptionallyRevealedData): MsgpackOptionallyRevealedData { +function fromOptionallyRevealedData(o: OptionallyRevealedData): MsgpackOptionallyRevealedData { if (o.callStackItemHash === undefined) { throw new Error('Expected callStackItemHash in OptionallyRevealedData serialization'); } @@ -311,7 +311,7 @@ interface MsgpackPublicDataUpdateRequest { new_value: Buffer; } -export function fromPublicDataUpdateRequest(o: PublicDataUpdateRequest): MsgpackPublicDataUpdateRequest { +function fromPublicDataUpdateRequest(o: PublicDataUpdateRequest): MsgpackPublicDataUpdateRequest { if (o.leafIndex === undefined) { throw new Error('Expected leafIndex in PublicDataUpdateRequest serialization'); } @@ -333,7 +333,7 @@ interface MsgpackPublicDataRead { value: Buffer; } -export function fromPublicDataRead(o: PublicDataRead): MsgpackPublicDataRead { +function fromPublicDataRead(o: PublicDataRead): MsgpackPublicDataRead { if (o.leafIndex === undefined) { throw new Error('Expected leafIndex in PublicDataRead serialization'); } @@ -366,7 +366,7 @@ interface MsgpackCombinedAccumulatedData { public_data_reads: Tuple; } -export function fromCombinedAccumulatedData(o: CombinedAccumulatedData): MsgpackCombinedAccumulatedData { +function fromCombinedAccumulatedData(o: CombinedAccumulatedData): MsgpackCombinedAccumulatedData { if (o.aggregationObject === undefined) { throw new Error('Expected aggregationObject in CombinedAccumulatedData serialization'); } @@ -454,7 +454,7 @@ interface MsgpackHistoricBlockData { global_variables_hash: Buffer; } -export function fromHistoricBlockData(o: HistoricBlockData): MsgpackHistoricBlockData { +function fromHistoricBlockData(o: HistoricBlockData): MsgpackHistoricBlockData { if (o.noteHashTreeRoot === undefined) { throw new Error('Expected noteHashTreeRoot in HistoricBlockData serialization'); } @@ -499,7 +499,7 @@ interface MsgpackContractDeploymentData { portal_contract_address: Buffer; } -export function fromContractDeploymentData(o: ContractDeploymentData): MsgpackContractDeploymentData { +function fromContractDeploymentData(o: ContractDeploymentData): MsgpackContractDeploymentData { if (o.deployerPublicKey === undefined) { throw new Error('Expected deployerPublicKey in ContractDeploymentData serialization'); } @@ -533,7 +533,7 @@ interface MsgpackTxContext { version: Buffer; } -export function fromTxContext(o: TxContext): MsgpackTxContext { +function fromTxContext(o: TxContext): MsgpackTxContext { if (o.isFeePaymentTx === undefined) { throw new Error('Expected isFeePaymentTx in TxContext serialization'); } @@ -567,7 +567,7 @@ interface MsgpackCombinedConstantData { tx_context: MsgpackTxContext; } -export function fromCombinedConstantData(o: CombinedConstantData): MsgpackCombinedConstantData { +function fromCombinedConstantData(o: CombinedConstantData): MsgpackCombinedConstantData { if (o.blockData === undefined) { throw new Error('Expected blockData in CombinedConstantData serialization'); } @@ -586,7 +586,7 @@ interface MsgpackKernelCircuitPublicInputs { is_private: boolean; } -export function fromKernelCircuitPublicInputs(o: KernelCircuitPublicInputs): MsgpackKernelCircuitPublicInputs { +function fromKernelCircuitPublicInputs(o: KernelCircuitPublicInputs): MsgpackKernelCircuitPublicInputs { if (o.end === undefined) { throw new Error('Expected end in KernelCircuitPublicInputs serialization'); } @@ -612,7 +612,7 @@ interface MsgpackVerificationKeyData { recursive_proof_public_input_indices: number[]; } -export function fromVerificationKeyData(o: VerificationKeyData): MsgpackVerificationKeyData { +function fromVerificationKeyData(o: VerificationKeyData): MsgpackVerificationKeyData { if (o.circuitType === undefined) { throw new Error('Expected circuitType in VerificationKeyData serialization'); } @@ -649,7 +649,7 @@ interface MsgpackPreviousKernelData { vk_path: Tuple; } -export function fromPreviousKernelData(o: PreviousKernelData): MsgpackPreviousKernelData { +function fromPreviousKernelData(o: PreviousKernelData): MsgpackPreviousKernelData { if (o.publicInputs === undefined) { throw new Error('Expected publicInputs in PreviousKernelData serialization'); } @@ -679,7 +679,7 @@ interface MsgpackMembershipWitness16 { sibling_path: Tuple; } -export function fromMembershipWitness16(o: MembershipWitness16): MsgpackMembershipWitness16 { +function fromMembershipWitness16(o: MembershipWitness16): MsgpackMembershipWitness16 { if (o.leafIndex === undefined) { throw new Error('Expected leafIndex in MembershipWitness16 serialization'); } @@ -697,7 +697,7 @@ interface MsgpackCircuitError { message: string; } -export function toCircuitError(o: MsgpackCircuitError): CircuitError { +function toCircuitError(o: MsgpackCircuitError): CircuitError { if (o.code === undefined) { throw new Error('Expected code in CircuitError deserialization'); } @@ -712,7 +712,7 @@ interface MsgpackAppendOnlyTreeSnapshot { next_available_leaf_index: number; } -export function toAppendOnlyTreeSnapshot(o: MsgpackAppendOnlyTreeSnapshot): AppendOnlyTreeSnapshot { +function toAppendOnlyTreeSnapshot(o: MsgpackAppendOnlyTreeSnapshot): AppendOnlyTreeSnapshot { if (o.root === undefined) { throw new Error('Expected root in AppendOnlyTreeSnapshot deserialization'); } @@ -722,7 +722,7 @@ export function toAppendOnlyTreeSnapshot(o: MsgpackAppendOnlyTreeSnapshot): Appe return new AppendOnlyTreeSnapshot(Fr.fromBuffer(o.root), o.next_available_leaf_index); } -export function fromAppendOnlyTreeSnapshot(o: AppendOnlyTreeSnapshot): MsgpackAppendOnlyTreeSnapshot { +function fromAppendOnlyTreeSnapshot(o: AppendOnlyTreeSnapshot): MsgpackAppendOnlyTreeSnapshot { if (o.root === undefined) { throw new Error('Expected root in AppendOnlyTreeSnapshot serialization'); } @@ -741,7 +741,7 @@ interface MsgpackNullifierLeafPreimage { next_index: number; } -export function fromNullifierLeafPreimage(o: NullifierLeafPreimage): MsgpackNullifierLeafPreimage { +function fromNullifierLeafPreimage(o: NullifierLeafPreimage): MsgpackNullifierLeafPreimage { if (o.leafValue === undefined) { throw new Error('Expected leafValue in NullifierLeafPreimage serialization'); } @@ -763,7 +763,7 @@ interface MsgpackMembershipWitness20 { sibling_path: Tuple; } -export function fromMembershipWitness20(o: MembershipWitness20): MsgpackMembershipWitness20 { +function fromMembershipWitness20(o: MembershipWitness20): MsgpackMembershipWitness20 { if (o.leafIndex === undefined) { throw new Error('Expected leafIndex in MembershipWitness20 serialization'); } @@ -785,7 +785,7 @@ interface MsgpackConstantRollupData { global_variables: MsgpackGlobalVariables; } -export function toConstantRollupData(o: MsgpackConstantRollupData): ConstantRollupData { +function toConstantRollupData(o: MsgpackConstantRollupData): ConstantRollupData { if (o.start_historic_blocks_tree_roots_snapshot === undefined) { throw new Error('Expected start_historic_blocks_tree_roots_snapshot in ConstantRollupData deserialization'); } @@ -814,7 +814,7 @@ export function toConstantRollupData(o: MsgpackConstantRollupData): ConstantRoll ); } -export function fromConstantRollupData(o: ConstantRollupData): MsgpackConstantRollupData { +function fromConstantRollupData(o: ConstantRollupData): MsgpackConstantRollupData { if (o.startHistoricBlocksTreeRootsSnapshot === undefined) { throw new Error('Expected startHistoricBlocksTreeRootsSnapshot in ConstantRollupData serialization'); } @@ -861,7 +861,7 @@ interface MsgpackBaseRollupInputs { constants: MsgpackConstantRollupData; } -export function fromBaseRollupInputs(o: BaseRollupInputs): MsgpackBaseRollupInputs { +function fromBaseRollupInputs(o: BaseRollupInputs): MsgpackBaseRollupInputs { if (o.kernelData === undefined) { throw new Error('Expected kernelData in BaseRollupInputs serialization'); } @@ -954,9 +954,7 @@ interface MsgpackBaseOrMergeRollupPublicInputs { calldata_hash: Tuple; } -export function toBaseOrMergeRollupPublicInputs( - o: MsgpackBaseOrMergeRollupPublicInputs, -): BaseOrMergeRollupPublicInputs { +function toBaseOrMergeRollupPublicInputs(o: MsgpackBaseOrMergeRollupPublicInputs): BaseOrMergeRollupPublicInputs { if (o.rollup_type === undefined) { throw new Error('Expected rollup_type in BaseOrMergeRollupPublicInputs deserialization'); } diff --git a/yarn-project/circuits.js/src/cbind/circuits.in.ts b/yarn-project/circuits.js/src/cbind/circuits.in.ts deleted file mode 100644 index 2d7acee6421..00000000000 --- a/yarn-project/circuits.js/src/cbind/circuits.in.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { fileURLToPath } from '@aztec/foundation/url'; - -import { writeFileSync } from 'fs'; -import { dirname } from 'path'; - -import { CircuitsWasm } from '../wasm/circuits_wasm.js'; -import { getCbindSchema } from './cbind.js'; -import { CbindCompiler } from './compiler.js'; - -/** - * Generate TypeScript bindings for functions in CircuitsWasm. - * This processes the schema for each export and compiles the TypeScript functions - * to a 'circuits.gen.ts'. - * - * @returns - - */ -export async function main() { - const __dirname = dirname(fileURLToPath(import.meta.url)); - const wasm = await CircuitsWasm.get(); - const compiler = new CbindCompiler(); - for (const [key, value] of Object.entries(wasm.exports())) { - if (typeof value === 'function' && key.endsWith('__schema')) { - const cname = key.substring(0, key.length - '__schema'.length); - compiler.processCbind(cname, getCbindSchema(wasm, cname)); - } - } - writeFileSync(__dirname + '/circuits.gen.ts', compiler.compile()); -} - -// eslint-disable-next-line no-console -main().catch(console.error); diff --git a/yarn-project/circuits.js/src/cbind/compiler.ts b/yarn-project/circuits.js/src/cbind/compiler.ts deleted file mode 100644 index 5b9262f7abb..00000000000 --- a/yarn-project/circuits.js/src/cbind/compiler.ts +++ /dev/null @@ -1,531 +0,0 @@ -import camelCase from 'lodash.camelcase'; - -import { USES_MSGPACK_BUFFER_METHODS } from './type_data.js'; - -/** - * Capitalize the first character of a given string. - * This function takes a string input and returns a new string - * with the first character converted to uppercase, while keeping - * the rest of the characters unchanged. - * - * @param s - The input string to be capitalized. - * @returns A new string with the first character capitalized. - */ -function capitalize(s: string) { - return s.charAt(0).toUpperCase() + s.substring(1); -} - -/** - * Represents an object schema where keys are mapped to their corresponding type schemas, defining a structured data model. - */ -type ObjectSchema = { [key: string]: Schema }; - -/** - * Represents the various data structures and types used to model schema definitions. - * The Schema type supports primitive types, object schemas, tuples, maps, optional values, - * fixed-size arrays, shared pointers, and custom type aliases (defined in schema_map_impl.hpp). - */ -type Schema = - | string - | ObjectSchema - | ['tuple', Schema[]] - | ['map', [Schema, Schema]] - | ['optional', [Schema]] - | ['vector', [Schema]] - | ['variant', Schema[]] - | ['shared_ptr', [Schema]] - | ['array', [Schema, number]] - | ['alias', [string, string]]; - -/** - * Represents a detailed description of a schema's type information. - * Provides metadata and conversion methods related to the TypeScript and Msgpack type names, - * as well as any required dependencies or custom behavior for specific schemas. - */ -export interface TypeInfo { - /** - * High-level typescript type name. - */ - typeName: string; - /** - * Msgpack type name. The actual type returned by raw C-binds. - * Only given if different. - */ - msgpackTypeName?: string; - /** - * Indicates if the schema requires an interface. - */ - needsInterface?: boolean; - /** - * Indicates if the schema refers to an imported type. - */ - isImport?: boolean; - /** - * Indicates if the type is an alias of another type. - */ - isAlias?: boolean; - /** - * Indicates if the schema represents a tuple type. - */ - isTuple?: boolean; - /** - * Indicates if the schema represents an array. - * If so, stores the array's subtype elements. - */ - arraySubtype?: TypeInfo; - /** - * Indicates if the schema represents a variant. - * If so, stores the variant's subtype elements. - */ - variantSubtypes?: TypeInfo[]; - /** - * Key-value pair of types that represent the keys and values in a map schema. - */ - mapSubtypes?: [TypeInfo, TypeInfo]; - /** - * Represents the TypeScript interface declaration for a specific schema type. - */ - declaration?: string; - /** - * Conversion method to transform Msgpack data into a class instance. - */ - toClassMethod?: string; - /** - * Converts a class instance to its Msgpack representation. - */ - fromClassMethod?: string; - /** - * Represents the conversion method from class to Msgpack format. - */ - toMsgpackMethod?: string; -} - -/** - * Generate a JavaScript expression to convert a given value from its Msgpack type representation to its - * corresponding TypeScript type representation using the provided TypeInfo. - * - * @param typeInfo - Metadata and conversion methods related to the TypeScript and Msgpack type names. - * @param value - The value to be converted in the generated expression. - * @returns A JavaScript expression that converts the input value based on the provided TypeInfo. - */ -function msgpackConverterExpr(typeInfo: TypeInfo, value: string): string { - const { typeName } = typeInfo; - if (typeInfo.isAlias) { - if (USES_MSGPACK_BUFFER_METHODS.includes(typeInfo.typeName)) { - // TODO(AD) Temporary hack while two serialization systems exist for these classes - return `${typeName}.fromMsgpackBuffer(${value})`; - } - if (typeInfo.msgpackTypeName === 'number') { - return `${value} as ${typeName}`; - } - return `${typeName}.fromBuffer(${value})`; - } else if (typeInfo.arraySubtype) { - const { typeName, msgpackTypeName } = typeInfo.arraySubtype; - const convFn = `(v: ${msgpackTypeName || typeName}) => ${msgpackConverterExpr(typeInfo.arraySubtype, 'v')}`; - if (typeInfo.isTuple) { - return `mapTuple(${value}, ${convFn})`; - } else { - return `${value}.map(${convFn})`; - } - } else if (typeInfo.variantSubtypes) { - const { variantSubtypes } = typeInfo; - // Handle the last variant type: we assume it is this type after checking everything else - let expr = msgpackConverterExpr( - variantSubtypes[variantSubtypes.length - 1], - 'v[1] as ' + variantSubtypes[variantSubtypes.length - 1].msgpackTypeName, - ); - for (let i = 0; i < variantSubtypes.length - 1; i++) { - // make the expr a compound expression with a discriminator - expr = `(v[0] == ${i} ? ${msgpackConverterExpr( - variantSubtypes[i], - 'v[1] as ' + variantSubtypes[i].msgpackTypeName, - )} : ${expr})`; - } - return `((v: ${typeInfo.msgpackTypeName}) => ${expr})(${value})`; - } else if (typeInfo.mapSubtypes) { - const { typeName, msgpackTypeName } = typeInfo.mapSubtypes[1]; - const convFn = `(v: ${msgpackTypeName || typeName}) => ${msgpackConverterExpr(typeInfo.mapSubtypes[1], 'v')}`; - return `mapValues(${value}, ${convFn})`; - } else if (typeInfo.isImport) { - return `to${typeName}(${value})`; - } else { - return value; - } -} - -/** - * Generate a JavaScript expression to convert a given value from its TypeScript class representation to its - * corresponding Msgpack type representation using the provided TypeInfo. - * - * @param typeInfo - Metadata and conversion methods related to the TypeScript and Msgpack type names. - * @param value - The value to be converted in the generated expression. - * @returns A JavaScript expression that converts the input value based on the provided TypeInfo. - */ -function classConverterExpr(typeInfo: TypeInfo, value: string): string { - const { typeName } = typeInfo; - if (typeInfo.isAlias) { - // TODO other aliases besides Buffer? - if (USES_MSGPACK_BUFFER_METHODS.includes(typeInfo.typeName)) { - // TODO(AD) Temporary hack while two serialization systems exist for these classes - return `${value}.toMsgpackBuffer()`; - } - if (typeInfo.msgpackTypeName === 'number') { - return `${value}`; // Should be a branded number alias - } - return `toBuffer(${value})`; - } else if (typeInfo.arraySubtype) { - const { typeName } = typeInfo.arraySubtype; - const convFn = `(v: ${typeName}) => ${classConverterExpr(typeInfo.arraySubtype, 'v')}`; - if (typeInfo.isTuple) { - return `mapTuple(${value}, ${convFn})`; - } else { - return `${value}.map(${convFn})`; - } - } else if (typeInfo.variantSubtypes) { - throw new Error('TODO(AD) - variant parameters to C++ not yet supported.'); - } else if (typeInfo.mapSubtypes) { - const { typeName } = typeInfo.mapSubtypes[1]; - const convFn = `(v: ${typeName}) => ${classConverterExpr(typeInfo.mapSubtypes[1], 'v')}`; - return `mapValues(${value}, ${convFn})`; - } else if (typeInfo.isImport) { - return `from${typeName}(${value})`; - } else { - return value; - } -} -/** - * Converts a spec emitted from the WASM. - * Creates typescript code. - */ -export class CbindCompiler { - // Function and declaration output fragments - private typeInfos: Record = {}; - // cbind outputs, put at end - private funcDecls: string[] = []; - - /** - * Retrieve the TypeScript type name for a given schema. - * This function utilizes the TypeInfo cache to obtain the appropriate type name - * and handles any necessary type compilation along the way. - * - * @param type - The input schema for which to retrieve the TypeScript type name. - * @returns The corresponding TypeScript type name as a string. - */ - private getTypeName(type: Schema): string { - return this.getTypeInfo(type).typeName; - } - /** - * Derive the TypeScript type name of a schema, compiling anything needed along the way. - * @param type - A schema. - * @returns The type name. - */ - private getTypeInfo(type: Schema): TypeInfo { - if (Array.isArray(type)) { - if (type[0] === 'array') { - // fixed-size array case - const [_array, [subtype, size]] = type; - const typeName = `Tuple<${this.getTypeName(subtype)}, ${size}>`; - const msgpackTypeName = `Tuple<${this.getMsgpackTypename(subtype)}, ${size}>`; - return { - typeName, - msgpackTypeName, - isTuple: true, - arraySubtype: this.getTypeInfo(subtype), - }; - } else if (type[0] === 'variant') { - // fixed-size array case - const [_array, variantSchemas] = type; - // TODO(AD): This could be a discriminated union if we also allow writing C++ variants. - const typeName = variantSchemas.map(vs => this.getTypeName(vs)).join(' | '); - const msgpackUnion = variantSchemas.map(vs => this.getMsgpackTypename(vs)).join(' | '); - const msgpackTypeName = `[number, ${msgpackUnion}]`; - return { - typeName, - msgpackTypeName, - variantSubtypes: variantSchemas.map(vs => this.getTypeInfo(vs)), - }; - } else if (type[0] === 'vector') { - // vector case - const [_vector, [subtype]] = type; - if (subtype == 'unsigned char') { - // buffer special case - return { typeName: 'Buffer' }; - } - const subtypeInfo = this.getTypeInfo(subtype); - return { - typeName: `${subtypeInfo.typeName}[]`, - msgpackTypeName: `${this.getMsgpackTypename(subtype)}[]`, - arraySubtype: subtypeInfo, - }; - } else if (type[0] === 'alias') { - // alias case - const [_alias, [rawTypeName, msgpackName]] = type; - let msgpackTypeName: string; - if (msgpackName.startsWith('bin')) { - msgpackTypeName = 'Buffer'; - } else if (msgpackName === 'int' || msgpackName === 'unsigned int' || msgpackName === 'unsigned short') { - msgpackTypeName = 'number'; - } else { - throw new Error('Unsupported alias type ' + msgpackName); - } - const typeName = capitalize(camelCase(rawTypeName)); - this.typeInfos[typeName] = { - typeName, - isImport: true, - isAlias: true, - msgpackTypeName, - }; - return this.typeInfos[typeName]; - } else if (type[0] === 'shared_ptr') { - // shared_ptr case - const [_sharedPtr, [subtype]] = type; - return this.getTypeInfo(subtype); - } else if (type[0] === 'map') { - // map case - const [_map, [keyType, valueType]] = type; - return { - typeName: `Record<${this.getTypeName(keyType)}, ${this.getTypeName(valueType)}>`, - msgpackTypeName: `Record<${this.getMsgpackTypename(keyType)}, ${this.getMsgpackTypename(valueType)}>`, - mapSubtypes: [this.getTypeInfo(keyType), this.getTypeInfo(valueType)], - }; - } - } else if (typeof type === 'string') { - switch (type) { - case 'bool': - return { typeName: 'boolean' }; - case 'int': - case 'unsigned int': - case 'unsigned short': - return { typeName: 'number' }; - case 'string': - return { typeName: 'string' }; - case 'bin32': - return { typeName: 'Buffer' }; - } - const typeName = capitalize(camelCase(type)); - if (!this.typeInfos[typeName]) { - throw new Error( - 'Unexpected type: ' + - typeName + - '. This is likely due to returning a struct without a MSGPACK_FIELDS macro, and without a msgpack_schema method.', - ); - } - return this.typeInfos[typeName]; - } else if (typeof type === 'object') { - const typeName = capitalize(camelCase(type.__typename as string)); - // Set our typeInfos object to either what it already was, or, if not yet defined - // the resolved type info (which will generate interfaces and helper methods) - return (this.typeInfos[typeName] = this.typeInfos[typeName] || { - typeName, - msgpackTypeName: 'Msgpack' + typeName, - isImport: true, - declaration: this.generateInterface(typeName, type), - toClassMethod: this.generateMsgpackConverter(typeName, type), - fromClassMethod: this.generateClassConverter(typeName, type), - }); - } - - throw new Error(`Unsupported type: ${type}`); - } - - /** - * Retrieve the Msgpack type name for a given schema. - * This function returns the MsgpackTypeName if available, or the default TypeName otherwise. - * It is useful for handling cases where the Msgpack type representation differs from the TypeScript type, - * ensuring proper serialization and deserialization between the two formats. - * - * @param schema - The schema for which the Msgpack type name is required. - * @returns The Msgpack type name corresponding to the input schema. - */ - private getMsgpackTypename(schema: Schema): string { - const { msgpackTypeName, typeName } = this.getTypeInfo(schema); - return msgpackTypeName || typeName; - } - /** - * Generate an interface with the name 'name'. - * @param name - The interface name. - * @param type - The object schema with properties of the interface. - * @returns the interface body. - */ - private generateInterface(name: string, type: ObjectSchema) { - // Raw object, used as return value of fromType() generated functions. - let result = `interface Msgpack${name} {\n`; - for (const [key, value] of Object.entries(type)) { - if (key === '__typename') { - continue; - } - result += ` ${key}: ${this.getMsgpackTypename(value)};\n`; - } - result += '}'; - return result; - } - - /** - * Generate conversion method 'toName' for a specific type 'name'. - * @param name - The class name. - * @param type - The object schema with properties of the interface. - * @returns The toName method. - */ - private generateMsgpackConverter(name: string, type: ObjectSchema): string { - const typename = capitalize(camelCase(type.__typename as string)); - - const checkerSyntax = () => { - const statements: string[] = []; - for (const [key] of Object.entries(type)) { - if (key === '__typename') { - continue; - } - statements.push( - ` if (o.${key} === undefined) { throw new Error("Expected ${key} in ${typename} deserialization"); }`, - ); - } - return statements.join('\n'); - }; - - // TODO should we always just call constructor? - const constructorBodySyntax = () => { - const statements: string[] = []; - for (const [key, value] of Object.entries(type)) { - if (key === '__typename') { - continue; - } - statements.push(` ${msgpackConverterExpr(this.getTypeInfo(value), `o.${key}`)},`); - } - return statements.join('\n'); - }; - - const callSyntax = () => { - // return `${name}.from({\n${objectBodySyntax()}})`; - return `new ${name}(\n${constructorBodySyntax()})`; - }; - - return `export function to${name}(o: Msgpack${name}): ${name} { -${checkerSyntax()}; -return ${callSyntax.call(this)}; -}`; - } - - /** - * Generate conversion method 'fromName' for a specific type 'name'. - * @param name - The class name. - * @param type - The object schema with properties of the interface. - * @returns the fromName method string. - */ - private generateClassConverter(name: string, type: ObjectSchema): string { - const typename = capitalize(camelCase(type.__typename as string)); - - const checkerSyntax = () => { - const statements: string[] = []; - for (const [key] of Object.entries(type)) { - if (key === '__typename') { - continue; - } - statements.push( - ` if (o.${camelCase(key)} === undefined) { throw new Error("Expected ${camelCase( - key, - )} in ${typename} serialization"); }`, - ); - } - return statements.join('\n'); - }; - const bodySyntax = () => { - const statements: string[] = []; - for (const [key, value] of Object.entries(type)) { - if (key === '__typename') { - continue; - } - statements.push(` ${key}: ${classConverterExpr(this.getTypeInfo(value), `o.${camelCase(key)}`)},`); - } - return statements.join('\n'); - }; - - const callSyntax = () => { - return `{\n${bodySyntax()}}`; - }; - - return `export function from${name}(o: ${name}): Msgpack${name} { -${checkerSyntax()}; -return ${callSyntax.call(this)}; -}`; - } - /** - * Process a cbind schema. - * @param name - The cbind name. - * @param cbind - The cbind schema. - * @returns The compiled schema. - */ - processCbind( - name: string, - cbind: { - /** - * An array of Schema representing the argument types for a cbind function. - */ - args: ['tuple', Schema[]]; - /** - * The returned value's schema after processing the cbind. - */ - ret: Schema; - }, - ) { - const [_tuple, args] = cbind.args; - const typeInfos = args.map(arg => this.getTypeInfo(arg)); - const argStrings = typeInfos.map((typeInfo, i) => `arg${i}: ${typeInfo.typeName}`); - const callStrings = typeInfos.map((typeInfo, i) => `${classConverterExpr(typeInfo, `arg${i}`)}`); - const innerCall = `callCbind(wasm, '${name}', [${callStrings.join(', ')}])`; - const retType = this.getTypeInfo(cbind.ret); - this.funcDecls.push(`export function ${camelCase(name)}(wasm: IWasmModule, ${argStrings.join(', ')}): ${ - retType.typeName - } { -return ${msgpackConverterExpr(retType, innerCall)}; -}`); - } - - /** - * Compile the generated TypeScript code from processed cbind schemas into a single string. - * The output string consists of necessary imports, type declarations, and helper methods - * for serialization and deserialization between TypeScript classes and Msgpack format, - * as well as the compiled cbind function calls. - * - * @returns A string containing the complete compiled TypeScript code. - */ - compile(): string { - const imports: string[] = []; - const outputs: string[] = [ - ` -/* eslint-disable */ -// GENERATED FILE DO NOT EDIT, RUN yarn remake-bindings -import { Buffer } from "buffer"; -import { callCbind } from './cbind.js'; -import { IWasmModule } from '@aztec/foundation/wasm'; -`, - ]; - for (const typeInfo of Object.values(this.typeInfos)) { - if (typeInfo.isImport) { - imports.push(typeInfo.typeName); - } - if (typeInfo.declaration) { - outputs.push(typeInfo.declaration); - outputs.push('\n'); - } - if (typeInfo.toClassMethod) { - outputs.push(typeInfo.toClassMethod); - outputs.push('\n'); - } - if (typeInfo.fromClassMethod) { - outputs.push(typeInfo.fromClassMethod); - outputs.push('\n'); - } - } - - outputs[0] += ` -import {toBuffer, ${imports.join(', ')}} from './types.js'; -import {Tuple, mapTuple} from '@aztec/foundation/serialize'; -import mapValues from 'lodash.mapvalues'; - `; - - for (const funcDecl of Object.values(this.funcDecls)) { - outputs.push(funcDecl); - } - return outputs.join('\n'); - } -} diff --git a/yarn-project/circuits.js/src/cbind/type_data.ts b/yarn-project/circuits.js/src/cbind/type_data.ts deleted file mode 100644 index c7015499baf..00000000000 --- a/yarn-project/circuits.js/src/cbind/type_data.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * TODO(AD) Temporary hack while two serialization systems exist for these classes - */ -export const USES_MSGPACK_BUFFER_METHODS = ['Proof']; diff --git a/yarn-project/circuits.js/src/cbind/types.ts b/yarn-project/circuits.js/src/cbind/types.ts index ab7fbd909c5..fadb9715add 100644 --- a/yarn-project/circuits.js/src/cbind/types.ts +++ b/yarn-project/circuits.js/src/cbind/types.ts @@ -1,3 +1,4 @@ +// TODO: Can be deleted once circuits.gen.ts is gone. // Type mappings for cbinds // Can either export things directly or handle // naming differences with the 'as' syntax @@ -43,42 +44,6 @@ export class MembershipWitness16 extends MembershipWitness<16> { } } -/** - * Alias for msgpack which expects a MembershipWitness + N name. - */ -export class MembershipWitness8 extends MembershipWitness<8> { - constructor( - /** - * Index of a leaf in the Merkle tree. - */ - leafIndex: Fr, - /** - * Sibling path of the leaf in the Merkle tree. - */ - siblingPath: Tuple, - ) { - super(8, leafIndex.toBigInt(), siblingPath); - } -} - -/** - * Alias for msgpack which expects a MembershipWitness + N name. - */ -export class MembershipWitness4 extends MembershipWitness<4> { - constructor( - /** - * Index of a leaf in the Merkle tree. - */ - leafIndex: Fr, - /** - * Sibling path of the leaf in the Merkle tree. - */ - siblingPath: Tuple, - ) { - super(4, leafIndex.toBigInt(), siblingPath); - } -} - /** * Coerce a variety of types to a buffer. * Makes msgpack output easier to manage as this can handle a few cases. @@ -147,13 +112,3 @@ export { RootRollupPublicInputs, } from '../structs/index.js'; export { FunctionSelector } from '@aztec/foundation/abi'; - -/** - * A pointer to a Prover object in WebAssembly memory. - */ -export type RawPointerProverBase = number & { - /** - * A unique brand for distinguishing ProverBasePtr type objects. - */ - __RawPointerProverBaseBrand: any; -}; diff --git a/yarn-project/circuits.js/src/tests/expectMsgpack.ts b/yarn-project/circuits.js/src/tests/expectMsgpack.ts deleted file mode 100644 index d0764f14741..00000000000 --- a/yarn-project/circuits.js/src/tests/expectMsgpack.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { CircuitsWasm } from '../wasm/circuits_wasm.js'; -import { simplifyHexValues } from './expectSerialize.js'; - -/** - * Test utility. Sends a serialized buffer to wasm and gets the result. - * @param inputBuf - Buffer to write. - * @param serializeMethod - Method to use buffer with. - * @param wasm - Optional circuit wasm. - */ -async function callWasm(inputBuf: Buffer, serializeMethod: string): Promise { - const wasm = await CircuitsWasm.get(); - const inputBufPtr = wasm.call('bbmalloc', inputBuf.length); - wasm.writeMemory(inputBufPtr, inputBuf); - - // Get a msgpack string version of our object. As a quick and dirty test, - // we compare a snapshot of its string form to its previous form. - const outputBufPtr = wasm.call(serializeMethod, inputBufPtr); - - // Read the size pointer - const outputStr = wasm.getMemoryAsString(outputBufPtr); - - // Free memory - wasm.call('bbfree', outputBufPtr); - - return outputStr; -} - -/** - * Test utility. Checks a buffer serialize against a snapshot. - * @param inputBuf - Buffer to write. - * @param serializeMethod - Method to use buffer with. - */ -export async function expectMsgpackToMatchSnapshot(inputBuf: Buffer, serializeMethod: string) { - const outputStr = simplifyHexValues(await callWasm(inputBuf, serializeMethod)); - expect(JSON.parse(outputStr)).toMatchSnapshot(); -} diff --git a/yarn-project/circuits.js/src/tests/expectSerialize.ts b/yarn-project/circuits.js/src/tests/expectSerialize.ts index 7bae8a9d2ba..20da308f9a2 100644 --- a/yarn-project/circuits.js/src/tests/expectSerialize.ts +++ b/yarn-project/circuits.js/src/tests/expectSerialize.ts @@ -6,7 +6,7 @@ import { CircuitsWasm } from '../wasm/circuits_wasm.js'; * @param input - The input string, with hex somewhere inside. * @returns The output string with fixed hex. */ -export function simplifyHexValues(input: string) { +function simplifyHexValues(input: string) { const regex = /0x[\dA-Fa-f]+/g; const matches = input.match(regex) || []; const simplifiedMatches = matches.map(match => '0x' + BigInt(match).toString(16)); From 4995434ab65ed512d33eaa6da1fbc3bf7197add9 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Fri, 24 Nov 2023 00:34:57 +0000 Subject: [PATCH 04/11] Update tests to not use wasm. --- .../src/rollup/rollup_wasm_wrapper.test.ts | 32 - .../__snapshots__/function_data.test.ts.snap | 11 - .../function_leaf_preimage.test.ts.snap | 12 - ...private_circuit_public_inputs.test.ts.snap | 49 - .../public_circuit_public_inputs.test.ts.snap | 115 - .../__snapshots__/tx_context.test.ts.snap | 19 - .../src/structs/function_data.test.ts | 15 +- .../structs/function_leaf_preimage.test.ts | 14 +- .../kernel/__snapshots__/index.test.ts.snap | 2716 ----------------- .../src/structs/kernel/index.test.ts | 81 - .../kernel/previous_kernel_data.test.ts | 11 + .../src/structs/kernel/private_kernel.ts | 1 - .../src/structs/kernel/public_inputs.test.ts | 11 + .../kernel/public_inputs_final.test.ts | 11 + .../private_circuit_public_inputs.test.ts | 14 +- .../structs/private_circuit_public_inputs.ts | 1 - .../public_circuit_public_inputs.test.ts | 14 +- .../__snapshots__/base_rollup.test.ts.snap | 1161 ------- .../__snapshots__/root_rollup.test.ts.snap | 223 -- ...base_or_merge_rollup_public_inputs.test.ts | 11 + .../src/structs/rollup/base_rollup.test.ts | 33 - .../src/structs/rollup/root_rollup.test.ts | 28 +- .../src/structs/tx_context.test.ts | 18 +- .../circuits.js/src/structs/tx_context.ts | 11 + .../circuits.js/src/tests/expectSerialize.ts | 78 - 25 files changed, 97 insertions(+), 4593 deletions(-) delete mode 100644 yarn-project/circuits.js/src/rollup/rollup_wasm_wrapper.test.ts delete mode 100644 yarn-project/circuits.js/src/structs/__snapshots__/function_data.test.ts.snap delete mode 100644 yarn-project/circuits.js/src/structs/__snapshots__/function_leaf_preimage.test.ts.snap delete mode 100644 yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap delete mode 100644 yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap delete mode 100644 yarn-project/circuits.js/src/structs/__snapshots__/tx_context.test.ts.snap delete mode 100644 yarn-project/circuits.js/src/structs/kernel/__snapshots__/index.test.ts.snap delete mode 100644 yarn-project/circuits.js/src/structs/kernel/index.test.ts create mode 100644 yarn-project/circuits.js/src/structs/kernel/previous_kernel_data.test.ts create mode 100644 yarn-project/circuits.js/src/structs/kernel/public_inputs.test.ts create mode 100644 yarn-project/circuits.js/src/structs/kernel/public_inputs_final.test.ts delete mode 100644 yarn-project/circuits.js/src/structs/rollup/__snapshots__/base_rollup.test.ts.snap delete mode 100644 yarn-project/circuits.js/src/structs/rollup/__snapshots__/root_rollup.test.ts.snap create mode 100644 yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.test.ts delete mode 100644 yarn-project/circuits.js/src/structs/rollup/base_rollup.test.ts delete mode 100644 yarn-project/circuits.js/src/tests/expectSerialize.ts diff --git a/yarn-project/circuits.js/src/rollup/rollup_wasm_wrapper.test.ts b/yarn-project/circuits.js/src/rollup/rollup_wasm_wrapper.test.ts deleted file mode 100644 index 1ca3cbc8dd2..00000000000 --- a/yarn-project/circuits.js/src/rollup/rollup_wasm_wrapper.test.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { AggregationObject, BaseOrMergeRollupPublicInputs, VerificationKey, baseRollupSim } from '../index.js'; -import { makeBaseRollupInputs } from '../tests/factories.js'; -import { CircuitsWasm } from '../wasm/circuits_wasm.js'; - -describe('rollup/rollup_wasm_wrapper', () => { - let wasm: CircuitsWasm; - - beforeAll(async () => { - wasm = await CircuitsWasm.get(); - }); - - const makeBaseRollupInputsForCircuit = () => { - const input = makeBaseRollupInputs(); - for (const kd of input.kernelData) { - kd.vk = VerificationKey.makeFake(); - kd.publicInputs.end.aggregationObject = AggregationObject.makeFake(); - } - return input; - }; - - // Task to repair this test: https://github.com/AztecProtocol/aztec-packages/issues/1586 - it.skip('calls base_rollup__sim', () => { - const input = makeBaseRollupInputsForCircuit(); - const output = baseRollupSim(wasm, input); - expect(output instanceof BaseOrMergeRollupPublicInputs).toBeTruthy(); - - const publicInputs = output as BaseOrMergeRollupPublicInputs; - expect(publicInputs.startContractTreeSnapshot).toEqual(input.startContractTreeSnapshot); - expect(publicInputs.startNullifierTreeSnapshot).toEqual(input.startNullifierTreeSnapshot); - expect(publicInputs.startNoteHashTreeSnapshot).toEqual(input.startNoteHashTreeSnapshot); - }); -}); diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/function_data.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/function_data.test.ts.snap deleted file mode 100644 index 2c6986a5f1b..00000000000 --- a/yarn-project/circuits.js/src/structs/__snapshots__/function_data.test.ts.snap +++ /dev/null @@ -1,11 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`basic FunctionData serialization serializes a trivial FunctionData and prints it 1`] = ` -"selector: -value: 123 - -is_internal: 0 -is_private: 1 -is_constructor: 1 -" -`; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/function_leaf_preimage.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/function_leaf_preimage.test.ts.snap deleted file mode 100644 index d34014440f3..00000000000 --- a/yarn-project/circuits.js/src/structs/__snapshots__/function_leaf_preimage.test.ts.snap +++ /dev/null @@ -1,12 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`basic FunctionLeafPreimage serialization serializes a trivial Function Leaf Preimage and prints it 1`] = ` -"selector: -value: 8972 - -is_internal: 0 -is_private: 1 -vk_hash: 0x0 -acir_hash: 0x0 -" -`; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap deleted file mode 100644 index 1dcde9eca28..00000000000 --- a/yarn-project/circuits.js/src/structs/__snapshots__/private_circuit_public_inputs.test.ts.snap +++ /dev/null @@ -1,49 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`basic PrivateCircuitPublicInputs serialization serializes a trivial PrivateCircuitPublicInputs and prints it 1`] = ` -"call_context: -msg_sender: 0x1 -storage_contract_address: 0x2 -portal_contract_address: 0x3 -function_selector: value: 4 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x100 -return_values: [ 0x200 0x201 0x202 0x203 ] -read_requests: [ 0x300 0x301 0x302 0x303 0x304 0x305 0x306 0x307 0x308 0x309 0x30a 0x30b 0x30c 0x30d 0x30e 0x30f 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f ] -pending_read_requests: [ 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f 0x320 0x321 0x322 0x323 0x324 0x325 0x326 0x327 0x328 0x329 0x32a 0x32b 0x32c 0x32d 0x32e 0x32f ] -new_commitments: [ 0x400 0x401 0x402 0x403 0x404 0x405 0x406 0x407 0x408 0x409 0x40a 0x40b 0x40c 0x40d 0x40e 0x40f ] -new_nullifiers: [ 0x500 0x501 0x502 0x503 0x504 0x505 0x506 0x507 0x508 0x509 0x50a 0x50b 0x50c 0x50d 0x50e 0x50f ] -nullified_commitments: [ 0x510 0x511 0x512 0x513 0x514 0x515 0x516 0x517 0x518 0x519 0x51a 0x51b 0x51c 0x51d 0x51e 0x51f ] -private_call_stack: [ 0x600 0x601 0x602 0x603 ] -public_call_stack: [ 0x700 0x701 0x702 0x703 ] -new_l2_to_l1_msgs: [ 0x800 0x801 ] -encrypted_logs_hash: [ 0x900 0x901 ] -unencrypted_logs_hash: [ 0xa00 0xa01 ] -encrypted_log_preimages_length: 0xb00 -unencrypted_log_preimages_length: 0xc00 -historic_block_data: note_hash_tree_root: 0xd00 -nullifier_tree_root: 0xd01 -contract_tree_root: 0xd02 -l1_to_l2_messages_tree_root: 0xd03 -blocks_tree_root: 0xd04 -private_kernel_vk_tree_root: 0xd05 -public_data_tree_root: 0xd06 -global_variables_hash: 0xd07 - -contract_deployment_data: deployer_public_key: -x: 0xe00 -y: 0xe01 - -constructor_vk_hash: 0xe01 -function_tree_root: 0xe02 -contract_address_salt: 0xe03 -portal_contract_address: 0x404040404040404040404040404040404040404 - -chain_id: 0x1400 -version: 0x1500 -" -`; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap deleted file mode 100644 index bfb2cb618b2..00000000000 --- a/yarn-project/circuits.js/src/structs/__snapshots__/public_circuit_public_inputs.test.ts.snap +++ /dev/null @@ -1,115 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`basic PublicCircuitPublicInputs serialization serializes a trivial PublicCircuitPublicInputs and prints it 1`] = ` -"call_context: -msg_sender: 0x0 -storage_contract_address: 0x1 -portal_contract_address: 0x202020202020202020202020202020202020202 -function_selector: value: 3 - -is_delegate_call: 0 -is_static_call: 0 -is_contract_deployment: 0 - -args_hash: 0x100 -return_values: [ 0x200 0x201 0x0 0x0 ] -contract_storage_update_requests: [ storage_slot: 0x400 -old_value: 0x401 -new_value: 0x402 - storage_slot: 0x401 -old_value: 0x402 -new_value: 0x403 - storage_slot: 0x402 -old_value: 0x403 -new_value: 0x404 - storage_slot: 0x403 -old_value: 0x404 -new_value: 0x405 - storage_slot: 0x404 -old_value: 0x405 -new_value: 0x406 - storage_slot: 0x405 -old_value: 0x406 -new_value: 0x407 - storage_slot: 0x406 -old_value: 0x407 -new_value: 0x408 - storage_slot: 0x407 -old_value: 0x408 -new_value: 0x409 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - ] -contract_storage_reads: [ storage_slot: 0x500 -current_value: 0x501 - storage_slot: 0x501 -current_value: 0x502 - storage_slot: 0x502 -current_value: 0x503 - storage_slot: 0x503 -current_value: 0x504 - storage_slot: 0x504 -current_value: 0x505 - storage_slot: 0x505 -current_value: 0x506 - storage_slot: 0x506 -current_value: 0x507 - storage_slot: 0x507 -current_value: 0x508 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - ] -public_call_stack: [ 0x600 0x601 0x0 0x0 ] -new_commitments: [ 0x700 0x701 0x702 0x703 0x704 0x705 0x706 0x707 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_nullifiers: [ 0x800 0x801 0x802 0x803 0x804 0x805 0x806 0x807 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_l2_to_l1_msgs: [ 0x900 0x0 ] -unencrypted_logs_hash: [ 0x901 0x0 ] -unencrypted_log_preimages_length: 0x902 -historic_block_data: note_hash_tree_root: 0xa00 -nullifier_tree_root: 0xa01 -contract_tree_root: 0xa02 -l1_to_l2_messages_tree_root: 0xa03 -blocks_tree_root: 0xa04 -private_kernel_vk_tree_root: 0xa05 -public_data_tree_root: 0xa06 -global_variables_hash: 0xa07 - -prover_address: 0xb01 -" -`; diff --git a/yarn-project/circuits.js/src/structs/__snapshots__/tx_context.test.ts.snap b/yarn-project/circuits.js/src/structs/__snapshots__/tx_context.test.ts.snap deleted file mode 100644 index b97c5647374..00000000000 --- a/yarn-project/circuits.js/src/structs/__snapshots__/tx_context.test.ts.snap +++ /dev/null @@ -1,19 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`structs/tx serializes and prints object 1`] = ` -"is_fee_payment_tx: 0 -is_rebate_payment_tx: 0 -is_contract_deployment_tx: 1 -contract_deployment_data: deployer_public_key: -x: 0x1 -y: 0x2 - -constructor_vk_hash: 0x2 -function_tree_root: 0x3 -contract_address_salt: 0x4 -portal_contract_address: 0x505050505050505050505050505050505050505 - -chain_id: 0x0 -version: 0x0 -" -`; diff --git a/yarn-project/circuits.js/src/structs/function_data.test.ts b/yarn-project/circuits.js/src/structs/function_data.test.ts index 266f7903eb9..269198d6ef7 100644 --- a/yarn-project/circuits.js/src/structs/function_data.test.ts +++ b/yarn-project/circuits.js/src/structs/function_data.test.ts @@ -1,14 +1,13 @@ import { FunctionSelector } from '@aztec/foundation/abi'; -import { expectSerializeToMatchSnapshot } from '../tests/expectSerialize.js'; import { FunctionData } from './function_data.js'; -describe('basic FunctionData serialization', () => { - it(`serializes a trivial FunctionData and prints it`, async () => { - // Test the data case: writing (mostly) sequential numbers - await expectSerializeToMatchSnapshot( - new FunctionData(new FunctionSelector(123), false, true, true).toBuffer(), - 'abis__test_roundtrip_serialize_function_data', - ); +describe('FunctionData', () => { + it(`serializes to buffer and deserializes it back`, () => { + const expected = new FunctionData(new FunctionSelector(123), false, true, true); + const buffer = expected.toBuffer(); + const res = FunctionData.fromBuffer(buffer); + expect(res).toEqual(expected); + expect(res.isEmpty()).toBe(false); }); }); diff --git a/yarn-project/circuits.js/src/structs/function_leaf_preimage.test.ts b/yarn-project/circuits.js/src/structs/function_leaf_preimage.test.ts index ca0296167b0..71d28180452 100644 --- a/yarn-project/circuits.js/src/structs/function_leaf_preimage.test.ts +++ b/yarn-project/circuits.js/src/structs/function_leaf_preimage.test.ts @@ -1,15 +1,13 @@ import { FunctionSelector } from '@aztec/foundation/abi'; import { Fr } from '@aztec/foundation/fields'; -import { expectSerializeToMatchSnapshot } from '../tests/expectSerialize.js'; import { FunctionLeafPreimage } from './function_leaf_preimage.js'; -describe('basic FunctionLeafPreimage serialization', () => { - it(`serializes a trivial Function Leaf Preimage and prints it`, async () => { - // Test the data case: writing (mostly) sequential numbers - await expectSerializeToMatchSnapshot( - new FunctionLeafPreimage(new FunctionSelector(8972), false, true, Fr.ZERO, Fr.ZERO).toBuffer(), - 'abis__test_roundtrip_serialize_function_leaf_preimage', - ); +describe('FunctionLeafPreimage', () => { + it(`serializes to buffer and deserializes it back`, () => { + const expected = new FunctionLeafPreimage(new FunctionSelector(8972), false, true, Fr.ZERO, Fr.ZERO); + const buffer = expected.toBuffer(); + const res = FunctionLeafPreimage.fromBuffer(buffer); + expect(res).toEqual(expected); }); }); diff --git a/yarn-project/circuits.js/src/structs/kernel/__snapshots__/index.test.ts.snap b/yarn-project/circuits.js/src/structs/kernel/__snapshots__/index.test.ts.snap deleted file mode 100644 index 301bdd4f30d..00000000000 --- a/yarn-project/circuits.js/src/structs/kernel/__snapshots__/index.test.ts.snap +++ /dev/null @@ -1,2716 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`structs/kernel serializes and prints CombinedAccumulatedData 1`] = ` -"aggregation_object: -P0: { 0x1, 0x2 } -P1: { 0x101, 0x102 } -public_inputs: [ - 0x3 - 0x4 - 0x5 - 0x6 -] -proof_witness_indices: [ 7 8 9 10 11 12 ] -has_data: 0 - -read_requests: [ 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xea 0xeb 0xec 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff 0x100 ] -pending_read_requests: [ 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xea 0xeb 0xec 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff 0x100 ] -new_commitments: [ 0x101 0x102 0x103 0x104 0x105 0x106 0x107 0x108 0x109 0x10a 0x10b 0x10c 0x10d 0x10e 0x10f 0x110 0x111 0x112 0x113 0x114 0x115 0x116 0x117 0x118 0x119 0x11a 0x11b 0x11c 0x11d 0x11e 0x11f 0x120 0x121 0x122 0x123 0x124 0x125 0x126 0x127 0x128 0x129 0x12a 0x12b 0x12c 0x12d 0x12e 0x12f 0x130 0x131 0x132 0x133 0x134 0x135 0x136 0x137 0x138 0x139 0x13a 0x13b 0x13c 0x13d 0x13e 0x13f 0x140 ] -new_nullifiers: [ 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 0x209 0x20a 0x20b 0x20c 0x20d 0x20e 0x20f 0x210 0x211 0x212 0x213 0x214 0x215 0x216 0x217 0x218 0x219 0x21a 0x21b 0x21c 0x21d 0x21e 0x21f 0x220 0x221 0x222 0x223 0x224 0x225 0x226 0x227 0x228 0x229 0x22a 0x22b 0x22c 0x22d 0x22e 0x22f 0x230 0x231 0x232 0x233 0x234 0x235 0x236 0x237 0x238 0x239 0x23a 0x23b 0x23c 0x23d 0x23e 0x23f 0x240 ] -nullified_commitments: [ 0x301 0x302 0x303 0x304 0x305 0x306 0x307 0x308 0x309 0x30a 0x30b 0x30c 0x30d 0x30e 0x30f 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f 0x320 0x321 0x322 0x323 0x324 0x325 0x326 0x327 0x328 0x329 0x32a 0x32b 0x32c 0x32d 0x32e 0x32f 0x330 0x331 0x332 0x333 0x334 0x335 0x336 0x337 0x338 0x339 0x33a 0x33b 0x33c 0x33d 0x33e 0x33f 0x340 ] -private_call_stack: [ 0x401 0x402 0x403 0x404 0x405 0x406 0x407 0x408 ] -public_call_stack: [ 0x501 0x502 0x503 0x504 0x505 0x506 0x507 0x508 ] -new_l2_to_l1_msgs: [ 0x601 0x602 ] -encrypted_logs_hash: [ 0x701 0x702 ] -unencrypted_logs_hash: [ 0x801 0x802 ] -encrypted_log_preimages_length: 0x901 -unencrypted_log_preimages_length: 0xa01 -new_contracts: [ contract_address: 0xb01 -portal_contract_address: 0x202020202020202020202020202020202020202 -function_tree_root: 0xb03 - ] -optionally_revealed_data: [ call_stack_item_hash: 0xc01 -function_data: selector: -value: c02 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc03 -portal_contract_address: 0x404040404040404040404040404040404040404 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc02 -function_data: selector: -value: c03 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc04 -portal_contract_address: 0x505050505050505050505050505050505050505 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc03 -function_data: selector: -value: c04 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc05 -portal_contract_address: 0x606060606060606060606060606060606060606 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc04 -function_data: selector: -value: c05 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc06 -portal_contract_address: 0x707070707070707070707070707070707070707 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - ] -public_data_update_requests: [ leaf_index: 0xd01 -old_value: 0xd02 -new_value: 0xd03 - leaf_index: 0xd02 -old_value: 0xd03 -new_value: 0xd04 - leaf_index: 0xd03 -old_value: 0xd04 -new_value: 0xd05 - leaf_index: 0xd04 -old_value: 0xd05 -new_value: 0xd06 - leaf_index: 0xd05 -old_value: 0xd06 -new_value: 0xd07 - leaf_index: 0xd06 -old_value: 0xd07 -new_value: 0xd08 - leaf_index: 0xd07 -old_value: 0xd08 -new_value: 0xd09 - leaf_index: 0xd08 -old_value: 0xd09 -new_value: 0xd0a - leaf_index: 0xd09 -old_value: 0xd0a -new_value: 0xd0b - leaf_index: 0xd0a -old_value: 0xd0b -new_value: 0xd0c - leaf_index: 0xd0b -old_value: 0xd0c -new_value: 0xd0d - leaf_index: 0xd0c -old_value: 0xd0d -new_value: 0xd0e - leaf_index: 0xd0d -old_value: 0xd0e -new_value: 0xd0f - leaf_index: 0xd0e -old_value: 0xd0f -new_value: 0xd10 - leaf_index: 0xd0f -old_value: 0xd10 -new_value: 0xd11 - leaf_index: 0xd10 -old_value: 0xd11 -new_value: 0xd12 - ] -public_data_reads: [ leaf_index: 0xe01 -value: 0xe02 - leaf_index: 0xe02 -value: 0xe03 - leaf_index: 0xe03 -value: 0xe04 - leaf_index: 0xe04 -value: 0xe05 - leaf_index: 0xe05 -value: 0xe06 - leaf_index: 0xe06 -value: 0xe07 - leaf_index: 0xe07 -value: 0xe08 - leaf_index: 0xe08 -value: 0xe09 - leaf_index: 0xe09 -value: 0xe0a - leaf_index: 0xe0a -value: 0xe0b - leaf_index: 0xe0b -value: 0xe0c - leaf_index: 0xe0c -value: 0xe0d - leaf_index: 0xe0d -value: 0xe0e - leaf_index: 0xe0e -value: 0xe0f - leaf_index: 0xe0f -value: 0xe10 - leaf_index: 0xe10 -value: 0xe11 - ] -" -`; - -exports[`structs/kernel serializes and prints EcdsaSignature 1`] = `"{ 0101010101010101010101010101010101010101010101010101010101010101, 0101010101010101010101010101010101010101010101010101010101010101 }"`; - -exports[`structs/kernel serializes and prints FinalAccumulatedData 1`] = ` -"aggregation_object: -P0: { 0x1, 0x2 } -P1: { 0x101, 0x102 } -public_inputs: [ - 0x3 - 0x4 - 0x5 - 0x6 -] -proof_witness_indices: [ 7 8 9 10 11 12 ] -has_data: 0 - -new_commitments: [ 0x101 0x102 0x103 0x104 0x105 0x106 0x107 0x108 0x109 0x10a 0x10b 0x10c 0x10d 0x10e 0x10f 0x110 0x111 0x112 0x113 0x114 0x115 0x116 0x117 0x118 0x119 0x11a 0x11b 0x11c 0x11d 0x11e 0x11f 0x120 0x121 0x122 0x123 0x124 0x125 0x126 0x127 0x128 0x129 0x12a 0x12b 0x12c 0x12d 0x12e 0x12f 0x130 0x131 0x132 0x133 0x134 0x135 0x136 0x137 0x138 0x139 0x13a 0x13b 0x13c 0x13d 0x13e 0x13f 0x140 ] -new_nullifiers: [ 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 0x209 0x20a 0x20b 0x20c 0x20d 0x20e 0x20f 0x210 0x211 0x212 0x213 0x214 0x215 0x216 0x217 0x218 0x219 0x21a 0x21b 0x21c 0x21d 0x21e 0x21f 0x220 0x221 0x222 0x223 0x224 0x225 0x226 0x227 0x228 0x229 0x22a 0x22b 0x22c 0x22d 0x22e 0x22f 0x230 0x231 0x232 0x233 0x234 0x235 0x236 0x237 0x238 0x239 0x23a 0x23b 0x23c 0x23d 0x23e 0x23f 0x240 ] -nullified_commitments: [ 0x301 0x302 0x303 0x304 0x305 0x306 0x307 0x308 0x309 0x30a 0x30b 0x30c 0x30d 0x30e 0x30f 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f 0x320 0x321 0x322 0x323 0x324 0x325 0x326 0x327 0x328 0x329 0x32a 0x32b 0x32c 0x32d 0x32e 0x32f 0x330 0x331 0x332 0x333 0x334 0x335 0x336 0x337 0x338 0x339 0x33a 0x33b 0x33c 0x33d 0x33e 0x33f 0x340 ] -private_call_stack: [ 0x401 0x402 0x403 0x404 0x405 0x406 0x407 0x408 ] -public_call_stack: [ 0x501 0x502 0x503 0x504 0x505 0x506 0x507 0x508 ] -new_l2_to_l1_msgs: [ 0x601 0x602 ] -encrypted_logs_hash: [ 0x701 0x702 ] -unencrypted_logs_hash: [ 0x801 0x802 ] -encrypted_log_preimages_length: 0x901 -unencrypted_log_preimages_length: 0xa01 -new_contracts: [ contract_address: 0xb01 -portal_contract_address: 0x202020202020202020202020202020202020202 -function_tree_root: 0xb03 - ] -optionally_revealed_data: [ call_stack_item_hash: 0xc01 -function_data: selector: -value: c02 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc03 -portal_contract_address: 0x404040404040404040404040404040404040404 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc02 -function_data: selector: -value: c03 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc04 -portal_contract_address: 0x505050505050505050505050505050505050505 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc03 -function_data: selector: -value: c04 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc05 -portal_contract_address: 0x606060606060606060606060606060606060606 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc04 -function_data: selector: -value: c05 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc06 -portal_contract_address: 0x707070707070707070707070707070707070707 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - ] -" -`; - -exports[`structs/kernel serializes and prints previous_kernel_data 1`] = ` -"public_inputs: -end: -aggregation_object: -P0: { 0x1, 0x2 } -P1: { 0x101, 0x102 } -public_inputs: [ - 0x3 - 0x4 - 0x5 - 0x6 -] -proof_witness_indices: [ 7 8 9 10 11 12 ] -has_data: 0 - -read_requests: [ 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xea 0xeb 0xec 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff 0x100 ] -pending_read_requests: [ 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xea 0xeb 0xec 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff 0x100 ] -new_commitments: [ 0x101 0x102 0x103 0x104 0x105 0x106 0x107 0x108 0x109 0x10a 0x10b 0x10c 0x10d 0x10e 0x10f 0x110 0x111 0x112 0x113 0x114 0x115 0x116 0x117 0x118 0x119 0x11a 0x11b 0x11c 0x11d 0x11e 0x11f 0x120 0x121 0x122 0x123 0x124 0x125 0x126 0x127 0x128 0x129 0x12a 0x12b 0x12c 0x12d 0x12e 0x12f 0x130 0x131 0x132 0x133 0x134 0x135 0x136 0x137 0x138 0x139 0x13a 0x13b 0x13c 0x13d 0x13e 0x13f 0x140 ] -new_nullifiers: [ 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 0x209 0x20a 0x20b 0x20c 0x20d 0x20e 0x20f 0x210 0x211 0x212 0x213 0x214 0x215 0x216 0x217 0x218 0x219 0x21a 0x21b 0x21c 0x21d 0x21e 0x21f 0x220 0x221 0x222 0x223 0x224 0x225 0x226 0x227 0x228 0x229 0x22a 0x22b 0x22c 0x22d 0x22e 0x22f 0x230 0x231 0x232 0x233 0x234 0x235 0x236 0x237 0x238 0x239 0x23a 0x23b 0x23c 0x23d 0x23e 0x23f 0x240 ] -nullified_commitments: [ 0x301 0x302 0x303 0x304 0x305 0x306 0x307 0x308 0x309 0x30a 0x30b 0x30c 0x30d 0x30e 0x30f 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f 0x320 0x321 0x322 0x323 0x324 0x325 0x326 0x327 0x328 0x329 0x32a 0x32b 0x32c 0x32d 0x32e 0x32f 0x330 0x331 0x332 0x333 0x334 0x335 0x336 0x337 0x338 0x339 0x33a 0x33b 0x33c 0x33d 0x33e 0x33f 0x340 ] -private_call_stack: [ 0x401 0x402 0x403 0x404 0x405 0x406 0x407 0x408 ] -public_call_stack: [ 0x501 0x502 0x503 0x504 0x505 0x506 0x507 0x508 ] -new_l2_to_l1_msgs: [ 0x601 0x602 ] -encrypted_logs_hash: [ 0x701 0x702 ] -unencrypted_logs_hash: [ 0x801 0x802 ] -encrypted_log_preimages_length: 0x901 -unencrypted_log_preimages_length: 0xa01 -new_contracts: [ contract_address: 0xb01 -portal_contract_address: 0x202020202020202020202020202020202020202 -function_tree_root: 0xb03 - ] -optionally_revealed_data: [ call_stack_item_hash: 0xc01 -function_data: selector: -value: c02 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc03 -portal_contract_address: 0x404040404040404040404040404040404040404 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc02 -function_data: selector: -value: c03 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc04 -portal_contract_address: 0x505050505050505050505050505050505050505 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc03 -function_data: selector: -value: c04 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc05 -portal_contract_address: 0x606060606060606060606060606060606060606 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc04 -function_data: selector: -value: c05 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc06 -portal_contract_address: 0x707070707070707070707070707070707070707 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - ] -public_data_update_requests: [ leaf_index: 0xd01 -old_value: 0xd02 -new_value: 0xd03 - leaf_index: 0xd02 -old_value: 0xd03 -new_value: 0xd04 - leaf_index: 0xd03 -old_value: 0xd04 -new_value: 0xd05 - leaf_index: 0xd04 -old_value: 0xd05 -new_value: 0xd06 - leaf_index: 0xd05 -old_value: 0xd06 -new_value: 0xd07 - leaf_index: 0xd06 -old_value: 0xd07 -new_value: 0xd08 - leaf_index: 0xd07 -old_value: 0xd08 -new_value: 0xd09 - leaf_index: 0xd08 -old_value: 0xd09 -new_value: 0xd0a - leaf_index: 0xd09 -old_value: 0xd0a -new_value: 0xd0b - leaf_index: 0xd0a -old_value: 0xd0b -new_value: 0xd0c - leaf_index: 0xd0b -old_value: 0xd0c -new_value: 0xd0d - leaf_index: 0xd0c -old_value: 0xd0d -new_value: 0xd0e - leaf_index: 0xd0d -old_value: 0xd0e -new_value: 0xd0f - leaf_index: 0xd0e -old_value: 0xd0f -new_value: 0xd10 - leaf_index: 0xd0f -old_value: 0xd10 -new_value: 0xd11 - leaf_index: 0xd10 -old_value: 0xd11 -new_value: 0xd12 - ] -public_data_reads: [ leaf_index: 0xe01 -value: 0xe02 - leaf_index: 0xe02 -value: 0xe03 - leaf_index: 0xe03 -value: 0xe04 - leaf_index: 0xe04 -value: 0xe05 - leaf_index: 0xe05 -value: 0xe06 - leaf_index: 0xe06 -value: 0xe07 - leaf_index: 0xe07 -value: 0xe08 - leaf_index: 0xe08 -value: 0xe09 - leaf_index: 0xe09 -value: 0xe0a - leaf_index: 0xe0a -value: 0xe0b - leaf_index: 0xe0b -value: 0xe0c - leaf_index: 0xe0c -value: 0xe0d - leaf_index: 0xe0d -value: 0xe0e - leaf_index: 0xe0e -value: 0xe0f - leaf_index: 0xe0f -value: 0xe10 - leaf_index: 0xe10 -value: 0xe11 - ] - -constants: -block_data: -note_hash_tree_root: 0x101 -nullifier_tree_root: 0x102 -contract_tree_root: 0x103 -l1_to_l2_messages_tree_root: 0x104 -blocks_tree_root: 0x105 -private_kernel_vk_tree_root: 0x106 -public_data_tree_root: 0x107 -global_variables_hash: 0x108 - -tx_context: -is_fee_payment_tx: 0 -is_rebate_payment_tx: 0 -is_contract_deployment_tx: 1 -contract_deployment_data: deployer_public_key: -x: 0x105 -y: 0x106 - -constructor_vk_hash: 0x106 -function_tree_root: 0x107 -contract_address_salt: 0x108 -portal_contract_address: 0x909090909090909090909090909090909090909 - -chain_id: 0x0 -version: 0x0 - - -is_private: 1 - -proof: [ 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 ] -vk: key.circuit_type: 0 -key.circuit_size: 101 -key.num_public_inputs: 102 -key.commitments: [ - A: { 0x200, 0x300 } -] -key.contains_recursive_proof: 1 -key.recursive_proof_public_input_indices: [ 400 401 402 403 404 ] - -vk_index: 66 -vk_path: [ 0x1000 0x1001 0x1002 ] -" -`; - -exports[`structs/kernel serializes and prints private_kernel_inputs_init 1`] = ` -"tx_request: -origin: 0x1 -function_data: selector: -value: 257 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -args_hash: 0x201 -tx_context: -is_fee_payment_tx: 0 -is_rebate_payment_tx: 0 -is_contract_deployment_tx: 1 -contract_deployment_data: deployer_public_key: -x: 0x401 -y: 0x402 - -constructor_vk_hash: 0x402 -function_tree_root: 0x403 -contract_address_salt: 0x404 -portal_contract_address: 0x505050505050505050505050505050505050505 - -chain_id: 0x0 -version: 0x0 - - -private_call: -call_stack_item: -contract_address: 0x1001 -function_data: selector: -value: 4098 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -public_inputs: call_context: -msg_sender: 0x1012 -storage_contract_address: 0x1013 -portal_contract_address: 0x1014 -function_selector: value: 4117 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x1111 -return_values: [ 0x1211 0x1212 0x1213 0x1214 ] -read_requests: [ 0x1311 0x1312 0x1313 0x1314 0x1315 0x1316 0x1317 0x1318 0x1319 0x131a 0x131b 0x131c 0x131d 0x131e 0x131f 0x1320 0x1321 0x1322 0x1323 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 ] -pending_read_requests: [ 0x1321 0x1322 0x1323 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 ] -new_commitments: [ 0x1411 0x1412 0x1413 0x1414 0x1415 0x1416 0x1417 0x1418 0x1419 0x141a 0x141b 0x141c 0x141d 0x141e 0x141f 0x1420 ] -new_nullifiers: [ 0x1511 0x1512 0x1513 0x1514 0x1515 0x1516 0x1517 0x1518 0x1519 0x151a 0x151b 0x151c 0x151d 0x151e 0x151f 0x1520 ] -nullified_commitments: [ 0x1521 0x1522 0x1523 0x1524 0x1525 0x1526 0x1527 0x1528 0x1529 0x152a 0x152b 0x152c 0x152d 0x152e 0x152f 0x1530 ] -private_call_stack: [ 0x1611 0x1612 0x1613 0x1614 ] -public_call_stack: [ 0x1711 0x1712 0x1713 0x1714 ] -new_l2_to_l1_msgs: [ 0x1811 0x1812 ] -encrypted_logs_hash: [ 0x1911 0x1912 ] -unencrypted_logs_hash: [ 0x1a11 0x1a12 ] -encrypted_log_preimages_length: 0x1b11 -unencrypted_log_preimages_length: 0x1c11 -historic_block_data: note_hash_tree_root: 0x1d11 -nullifier_tree_root: 0x1d12 -contract_tree_root: 0x1d13 -l1_to_l2_messages_tree_root: 0x1d14 -blocks_tree_root: 0x1d15 -private_kernel_vk_tree_root: 0x1d16 -public_data_tree_root: 0x1d17 -global_variables_hash: 0x1d18 - -contract_deployment_data: deployer_public_key: -x: 0x1e11 -y: 0x1e12 - -constructor_vk_hash: 0x1e12 -function_tree_root: 0x1e13 -contract_address_salt: 0x1e14 -portal_contract_address: 0x1515151515151515151515151515151515151515 - -chain_id: 0x2411 -version: 0x2511 - -is_execution_request: 0 - -private_call_stack_preimages: [ contract_address: 0x1011 -function_data: selector: -value: 1012 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -public_inputs: call_context: -msg_sender: 0x1022 -storage_contract_address: 0x1023 -portal_contract_address: 0x1024 -function_selector: value: 1025 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x1121 -return_values: [ 0x1221 0x1222 0x1223 0x1224 ] -read_requests: [ 0x1321 0x1322 0x1323 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 ] -pending_read_requests: [ 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 0x1343 0x1344 0x1345 0x1346 0x1347 0x1348 0x1349 0x134a 0x134b 0x134c 0x134d 0x134e 0x134f 0x1350 ] -new_commitments: [ 0x1421 0x1422 0x1423 0x1424 0x1425 0x1426 0x1427 0x1428 0x1429 0x142a 0x142b 0x142c 0x142d 0x142e 0x142f 0x1430 ] -new_nullifiers: [ 0x1521 0x1522 0x1523 0x1524 0x1525 0x1526 0x1527 0x1528 0x1529 0x152a 0x152b 0x152c 0x152d 0x152e 0x152f 0x1530 ] -nullified_commitments: [ 0x1531 0x1532 0x1533 0x1534 0x1535 0x1536 0x1537 0x1538 0x1539 0x153a 0x153b 0x153c 0x153d 0x153e 0x153f 0x1540 ] -private_call_stack: [ 0x1621 0x1622 0x1623 0x1624 ] -public_call_stack: [ 0x1721 0x1722 0x1723 0x1724 ] -new_l2_to_l1_msgs: [ 0x1821 0x1822 ] -encrypted_logs_hash: [ 0x1921 0x1922 ] -unencrypted_logs_hash: [ 0x1a21 0x1a22 ] -encrypted_log_preimages_length: 0x1b21 -unencrypted_log_preimages_length: 0x1c21 -historic_block_data: note_hash_tree_root: 0x1d21 -nullifier_tree_root: 0x1d22 -contract_tree_root: 0x1d23 -l1_to_l2_messages_tree_root: 0x1d24 -blocks_tree_root: 0x1d25 -private_kernel_vk_tree_root: 0x1d26 -public_data_tree_root: 0x1d27 -global_variables_hash: 0x1d28 - -contract_deployment_data: deployer_public_key: -x: 0x1e21 -y: 0x1e22 - -constructor_vk_hash: 0x1e22 -function_tree_root: 0x1e23 -contract_address_salt: 0x1e24 -portal_contract_address: 0x2525252525252525252525252525252525252525 - -chain_id: 0x2421 -version: 0x2521 - -is_execution_request: 0 - contract_address: 0x1012 -function_data: selector: -value: 1013 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -public_inputs: call_context: -msg_sender: 0x1023 -storage_contract_address: 0x1024 -portal_contract_address: 0x1025 -function_selector: value: 1026 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x1122 -return_values: [ 0x1222 0x1223 0x1224 0x1225 ] -read_requests: [ 0x1322 0x1323 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 ] -pending_read_requests: [ 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 0x1343 0x1344 0x1345 0x1346 0x1347 0x1348 0x1349 0x134a 0x134b 0x134c 0x134d 0x134e 0x134f 0x1350 0x1351 ] -new_commitments: [ 0x1422 0x1423 0x1424 0x1425 0x1426 0x1427 0x1428 0x1429 0x142a 0x142b 0x142c 0x142d 0x142e 0x142f 0x1430 0x1431 ] -new_nullifiers: [ 0x1522 0x1523 0x1524 0x1525 0x1526 0x1527 0x1528 0x1529 0x152a 0x152b 0x152c 0x152d 0x152e 0x152f 0x1530 0x1531 ] -nullified_commitments: [ 0x1532 0x1533 0x1534 0x1535 0x1536 0x1537 0x1538 0x1539 0x153a 0x153b 0x153c 0x153d 0x153e 0x153f 0x1540 0x1541 ] -private_call_stack: [ 0x1622 0x1623 0x1624 0x1625 ] -public_call_stack: [ 0x1722 0x1723 0x1724 0x1725 ] -new_l2_to_l1_msgs: [ 0x1822 0x1823 ] -encrypted_logs_hash: [ 0x1922 0x1923 ] -unencrypted_logs_hash: [ 0x1a22 0x1a23 ] -encrypted_log_preimages_length: 0x1b22 -unencrypted_log_preimages_length: 0x1c22 -historic_block_data: note_hash_tree_root: 0x1d22 -nullifier_tree_root: 0x1d23 -contract_tree_root: 0x1d24 -l1_to_l2_messages_tree_root: 0x1d25 -blocks_tree_root: 0x1d26 -private_kernel_vk_tree_root: 0x1d27 -public_data_tree_root: 0x1d28 -global_variables_hash: 0x1d29 - -contract_deployment_data: deployer_public_key: -x: 0x1e22 -y: 0x1e23 - -constructor_vk_hash: 0x1e23 -function_tree_root: 0x1e24 -contract_address_salt: 0x1e25 -portal_contract_address: 0x2626262626262626262626262626262626262626 - -chain_id: 0x2422 -version: 0x2522 - -is_execution_request: 0 - contract_address: 0x1013 -function_data: selector: -value: 1014 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -public_inputs: call_context: -msg_sender: 0x1024 -storage_contract_address: 0x1025 -portal_contract_address: 0x1026 -function_selector: value: 1027 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x1123 -return_values: [ 0x1223 0x1224 0x1225 0x1226 ] -read_requests: [ 0x1323 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 ] -pending_read_requests: [ 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 0x1343 0x1344 0x1345 0x1346 0x1347 0x1348 0x1349 0x134a 0x134b 0x134c 0x134d 0x134e 0x134f 0x1350 0x1351 0x1352 ] -new_commitments: [ 0x1423 0x1424 0x1425 0x1426 0x1427 0x1428 0x1429 0x142a 0x142b 0x142c 0x142d 0x142e 0x142f 0x1430 0x1431 0x1432 ] -new_nullifiers: [ 0x1523 0x1524 0x1525 0x1526 0x1527 0x1528 0x1529 0x152a 0x152b 0x152c 0x152d 0x152e 0x152f 0x1530 0x1531 0x1532 ] -nullified_commitments: [ 0x1533 0x1534 0x1535 0x1536 0x1537 0x1538 0x1539 0x153a 0x153b 0x153c 0x153d 0x153e 0x153f 0x1540 0x1541 0x1542 ] -private_call_stack: [ 0x1623 0x1624 0x1625 0x1626 ] -public_call_stack: [ 0x1723 0x1724 0x1725 0x1726 ] -new_l2_to_l1_msgs: [ 0x1823 0x1824 ] -encrypted_logs_hash: [ 0x1923 0x1924 ] -unencrypted_logs_hash: [ 0x1a23 0x1a24 ] -encrypted_log_preimages_length: 0x1b23 -unencrypted_log_preimages_length: 0x1c23 -historic_block_data: note_hash_tree_root: 0x1d23 -nullifier_tree_root: 0x1d24 -contract_tree_root: 0x1d25 -l1_to_l2_messages_tree_root: 0x1d26 -blocks_tree_root: 0x1d27 -private_kernel_vk_tree_root: 0x1d28 -public_data_tree_root: 0x1d29 -global_variables_hash: 0x1d2a - -contract_deployment_data: deployer_public_key: -x: 0x1e23 -y: 0x1e24 - -constructor_vk_hash: 0x1e24 -function_tree_root: 0x1e25 -contract_address_salt: 0x1e26 -portal_contract_address: 0x2727272727272727272727272727272727272727 - -chain_id: 0x2423 -version: 0x2523 - -is_execution_request: 0 - contract_address: 0x1014 -function_data: selector: -value: 1015 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -public_inputs: call_context: -msg_sender: 0x1025 -storage_contract_address: 0x1026 -portal_contract_address: 0x1027 -function_selector: value: 1028 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x1124 -return_values: [ 0x1224 0x1225 0x1226 0x1227 ] -read_requests: [ 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 0x1343 ] -pending_read_requests: [ 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 0x1343 0x1344 0x1345 0x1346 0x1347 0x1348 0x1349 0x134a 0x134b 0x134c 0x134d 0x134e 0x134f 0x1350 0x1351 0x1352 0x1353 ] -new_commitments: [ 0x1424 0x1425 0x1426 0x1427 0x1428 0x1429 0x142a 0x142b 0x142c 0x142d 0x142e 0x142f 0x1430 0x1431 0x1432 0x1433 ] -new_nullifiers: [ 0x1524 0x1525 0x1526 0x1527 0x1528 0x1529 0x152a 0x152b 0x152c 0x152d 0x152e 0x152f 0x1530 0x1531 0x1532 0x1533 ] -nullified_commitments: [ 0x1534 0x1535 0x1536 0x1537 0x1538 0x1539 0x153a 0x153b 0x153c 0x153d 0x153e 0x153f 0x1540 0x1541 0x1542 0x1543 ] -private_call_stack: [ 0x1624 0x1625 0x1626 0x1627 ] -public_call_stack: [ 0x1724 0x1725 0x1726 0x1727 ] -new_l2_to_l1_msgs: [ 0x1824 0x1825 ] -encrypted_logs_hash: [ 0x1924 0x1925 ] -unencrypted_logs_hash: [ 0x1a24 0x1a25 ] -encrypted_log_preimages_length: 0x1b24 -unencrypted_log_preimages_length: 0x1c24 -historic_block_data: note_hash_tree_root: 0x1d24 -nullifier_tree_root: 0x1d25 -contract_tree_root: 0x1d26 -l1_to_l2_messages_tree_root: 0x1d27 -blocks_tree_root: 0x1d28 -private_kernel_vk_tree_root: 0x1d29 -public_data_tree_root: 0x1d2a -global_variables_hash: 0x1d2b - -contract_deployment_data: deployer_public_key: -x: 0x1e24 -y: 0x1e25 - -constructor_vk_hash: 0x1e25 -function_tree_root: 0x1e26 -contract_address_salt: 0x1e27 -portal_contract_address: 0x2828282828282828282828282828282828282828 - -chain_id: 0x2424 -version: 0x2524 - -is_execution_request: 0 - ] -proof: [ 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 ] -vk: key.circuit_type: 0 -key.circuit_size: 101 -key.num_public_inputs: 102 -key.commitments: [ - A: { 0x200, 0x300 } -] -key.contains_recursive_proof: 1 -key.recursive_proof_public_input_indices: [ 400 401 402 403 404 ] - -function_leaf_membership_witness: leaf_index: 0x1031 -sibling_path: [ 0x1031 0x1032 0x1033 0x1034 ] - -contract_leaf_membership_witness: leaf_index: 0x1021 -sibling_path: [ 0x1021 0x1022 0x1023 0x1024 0x1025 0x1026 0x1027 0x1028 0x1029 0x102a 0x102b 0x102c 0x102d 0x102e 0x102f 0x1030 ] - -read_request_membership_witnesses: [ leaf_index: 0x1071 -sibling_path: [ 0x1072 0x1073 0x1074 0x1075 0x1076 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1072 -sibling_path: [ 0x1073 0x1074 0x1075 0x1076 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1073 -sibling_path: [ 0x1074 0x1075 0x1076 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1074 -sibling_path: [ 0x1075 0x1076 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1075 -sibling_path: [ 0x1076 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1076 -sibling_path: [ 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1077 -sibling_path: [ 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1078 -sibling_path: [ 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1079 -sibling_path: [ 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107a -sibling_path: [ 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107b -sibling_path: [ 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107c -sibling_path: [ 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107d -sibling_path: [ 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107e -sibling_path: [ 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107f -sibling_path: [ 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1080 -sibling_path: [ 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1081 -sibling_path: [ 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1082 -sibling_path: [ 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1083 -sibling_path: [ 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1084 -sibling_path: [ 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1085 -sibling_path: [ 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1086 -sibling_path: [ 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1087 -sibling_path: [ 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1088 -sibling_path: [ 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1089 -sibling_path: [ 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108a -sibling_path: [ 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108b -sibling_path: [ 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108c -sibling_path: [ 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab 0x10ac ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108d -sibling_path: [ 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab 0x10ac 0x10ad ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108e -sibling_path: [ 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab 0x10ac 0x10ad 0x10ae ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108f -sibling_path: [ 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab 0x10ac 0x10ad 0x10ae 0x10af ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1090 -sibling_path: [ 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab 0x10ac 0x10ad 0x10ae 0x10af 0x10b0 ] -is_transient: 0 -hint_to_commitment: 0x0 - ] -portal_contract_address: 0x4141414141414141414141414141414141414141 -acir_hash: 0x1061 - -" -`; - -exports[`structs/kernel serializes and prints private_kernel_inputs_inner 1`] = ` -"previous_kernel: -public_inputs: -end: -aggregation_object: -P0: { 0x1, 0x2 } -P1: { 0x101, 0x102 } -public_inputs: [ - 0x3 - 0x4 - 0x5 - 0x6 -] -proof_witness_indices: [ 7 8 9 10 11 12 ] -has_data: 0 - -read_requests: [ 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xea 0xeb 0xec 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff 0x100 ] -pending_read_requests: [ 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xea 0xeb 0xec 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff 0x100 ] -new_commitments: [ 0x101 0x102 0x103 0x104 0x105 0x106 0x107 0x108 0x109 0x10a 0x10b 0x10c 0x10d 0x10e 0x10f 0x110 0x111 0x112 0x113 0x114 0x115 0x116 0x117 0x118 0x119 0x11a 0x11b 0x11c 0x11d 0x11e 0x11f 0x120 0x121 0x122 0x123 0x124 0x125 0x126 0x127 0x128 0x129 0x12a 0x12b 0x12c 0x12d 0x12e 0x12f 0x130 0x131 0x132 0x133 0x134 0x135 0x136 0x137 0x138 0x139 0x13a 0x13b 0x13c 0x13d 0x13e 0x13f 0x140 ] -new_nullifiers: [ 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 0x209 0x20a 0x20b 0x20c 0x20d 0x20e 0x20f 0x210 0x211 0x212 0x213 0x214 0x215 0x216 0x217 0x218 0x219 0x21a 0x21b 0x21c 0x21d 0x21e 0x21f 0x220 0x221 0x222 0x223 0x224 0x225 0x226 0x227 0x228 0x229 0x22a 0x22b 0x22c 0x22d 0x22e 0x22f 0x230 0x231 0x232 0x233 0x234 0x235 0x236 0x237 0x238 0x239 0x23a 0x23b 0x23c 0x23d 0x23e 0x23f 0x240 ] -nullified_commitments: [ 0x301 0x302 0x303 0x304 0x305 0x306 0x307 0x308 0x309 0x30a 0x30b 0x30c 0x30d 0x30e 0x30f 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f 0x320 0x321 0x322 0x323 0x324 0x325 0x326 0x327 0x328 0x329 0x32a 0x32b 0x32c 0x32d 0x32e 0x32f 0x330 0x331 0x332 0x333 0x334 0x335 0x336 0x337 0x338 0x339 0x33a 0x33b 0x33c 0x33d 0x33e 0x33f 0x340 ] -private_call_stack: [ 0x401 0x402 0x403 0x404 0x405 0x406 0x407 0x408 ] -public_call_stack: [ 0x501 0x502 0x503 0x504 0x505 0x506 0x507 0x508 ] -new_l2_to_l1_msgs: [ 0x601 0x602 ] -encrypted_logs_hash: [ 0x701 0x702 ] -unencrypted_logs_hash: [ 0x801 0x802 ] -encrypted_log_preimages_length: 0x901 -unencrypted_log_preimages_length: 0xa01 -new_contracts: [ contract_address: 0xb01 -portal_contract_address: 0x202020202020202020202020202020202020202 -function_tree_root: 0xb03 - ] -optionally_revealed_data: [ call_stack_item_hash: 0xc01 -function_data: selector: -value: c02 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc03 -portal_contract_address: 0x404040404040404040404040404040404040404 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc02 -function_data: selector: -value: c03 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc04 -portal_contract_address: 0x505050505050505050505050505050505050505 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc03 -function_data: selector: -value: c04 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc05 -portal_contract_address: 0x606060606060606060606060606060606060606 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc04 -function_data: selector: -value: c05 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc06 -portal_contract_address: 0x707070707070707070707070707070707070707 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - ] -public_data_update_requests: [ leaf_index: 0xd01 -old_value: 0xd02 -new_value: 0xd03 - leaf_index: 0xd02 -old_value: 0xd03 -new_value: 0xd04 - leaf_index: 0xd03 -old_value: 0xd04 -new_value: 0xd05 - leaf_index: 0xd04 -old_value: 0xd05 -new_value: 0xd06 - leaf_index: 0xd05 -old_value: 0xd06 -new_value: 0xd07 - leaf_index: 0xd06 -old_value: 0xd07 -new_value: 0xd08 - leaf_index: 0xd07 -old_value: 0xd08 -new_value: 0xd09 - leaf_index: 0xd08 -old_value: 0xd09 -new_value: 0xd0a - leaf_index: 0xd09 -old_value: 0xd0a -new_value: 0xd0b - leaf_index: 0xd0a -old_value: 0xd0b -new_value: 0xd0c - leaf_index: 0xd0b -old_value: 0xd0c -new_value: 0xd0d - leaf_index: 0xd0c -old_value: 0xd0d -new_value: 0xd0e - leaf_index: 0xd0d -old_value: 0xd0e -new_value: 0xd0f - leaf_index: 0xd0e -old_value: 0xd0f -new_value: 0xd10 - leaf_index: 0xd0f -old_value: 0xd10 -new_value: 0xd11 - leaf_index: 0xd10 -old_value: 0xd11 -new_value: 0xd12 - ] -public_data_reads: [ leaf_index: 0xe01 -value: 0xe02 - leaf_index: 0xe02 -value: 0xe03 - leaf_index: 0xe03 -value: 0xe04 - leaf_index: 0xe04 -value: 0xe05 - leaf_index: 0xe05 -value: 0xe06 - leaf_index: 0xe06 -value: 0xe07 - leaf_index: 0xe07 -value: 0xe08 - leaf_index: 0xe08 -value: 0xe09 - leaf_index: 0xe09 -value: 0xe0a - leaf_index: 0xe0a -value: 0xe0b - leaf_index: 0xe0b -value: 0xe0c - leaf_index: 0xe0c -value: 0xe0d - leaf_index: 0xe0d -value: 0xe0e - leaf_index: 0xe0e -value: 0xe0f - leaf_index: 0xe0f -value: 0xe10 - leaf_index: 0xe10 -value: 0xe11 - ] - -constants: -block_data: -note_hash_tree_root: 0x101 -nullifier_tree_root: 0x102 -contract_tree_root: 0x103 -l1_to_l2_messages_tree_root: 0x104 -blocks_tree_root: 0x105 -private_kernel_vk_tree_root: 0x106 -public_data_tree_root: 0x107 -global_variables_hash: 0x108 - -tx_context: -is_fee_payment_tx: 0 -is_rebate_payment_tx: 0 -is_contract_deployment_tx: 1 -contract_deployment_data: deployer_public_key: -x: 0x105 -y: 0x106 - -constructor_vk_hash: 0x106 -function_tree_root: 0x107 -contract_address_salt: 0x108 -portal_contract_address: 0x909090909090909090909090909090909090909 - -chain_id: 0x0 -version: 0x0 - - -is_private: 1 - -proof: [ 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 ] -vk: key.circuit_type: 0 -key.circuit_size: 101 -key.num_public_inputs: 102 -key.commitments: [ - A: { 0x200, 0x300 } -] -key.contains_recursive_proof: 1 -key.recursive_proof_public_input_indices: [ 400 401 402 403 404 ] - -vk_index: 66 -vk_path: [ 0x1000 0x1001 0x1002 ] - -private_call: -call_stack_item: -contract_address: 0x1001 -function_data: selector: -value: 4098 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -public_inputs: call_context: -msg_sender: 0x1012 -storage_contract_address: 0x1013 -portal_contract_address: 0x1014 -function_selector: value: 4117 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x1111 -return_values: [ 0x1211 0x1212 0x1213 0x1214 ] -read_requests: [ 0x1311 0x1312 0x1313 0x1314 0x1315 0x1316 0x1317 0x1318 0x1319 0x131a 0x131b 0x131c 0x131d 0x131e 0x131f 0x1320 0x1321 0x1322 0x1323 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 ] -pending_read_requests: [ 0x1321 0x1322 0x1323 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 ] -new_commitments: [ 0x1411 0x1412 0x1413 0x1414 0x1415 0x1416 0x1417 0x1418 0x1419 0x141a 0x141b 0x141c 0x141d 0x141e 0x141f 0x1420 ] -new_nullifiers: [ 0x1511 0x1512 0x1513 0x1514 0x1515 0x1516 0x1517 0x1518 0x1519 0x151a 0x151b 0x151c 0x151d 0x151e 0x151f 0x1520 ] -nullified_commitments: [ 0x1521 0x1522 0x1523 0x1524 0x1525 0x1526 0x1527 0x1528 0x1529 0x152a 0x152b 0x152c 0x152d 0x152e 0x152f 0x1530 ] -private_call_stack: [ 0x1611 0x1612 0x1613 0x1614 ] -public_call_stack: [ 0x1711 0x1712 0x1713 0x1714 ] -new_l2_to_l1_msgs: [ 0x1811 0x1812 ] -encrypted_logs_hash: [ 0x1911 0x1912 ] -unencrypted_logs_hash: [ 0x1a11 0x1a12 ] -encrypted_log_preimages_length: 0x1b11 -unencrypted_log_preimages_length: 0x1c11 -historic_block_data: note_hash_tree_root: 0x1d11 -nullifier_tree_root: 0x1d12 -contract_tree_root: 0x1d13 -l1_to_l2_messages_tree_root: 0x1d14 -blocks_tree_root: 0x1d15 -private_kernel_vk_tree_root: 0x1d16 -public_data_tree_root: 0x1d17 -global_variables_hash: 0x1d18 - -contract_deployment_data: deployer_public_key: -x: 0x1e11 -y: 0x1e12 - -constructor_vk_hash: 0x1e12 -function_tree_root: 0x1e13 -contract_address_salt: 0x1e14 -portal_contract_address: 0x1515151515151515151515151515151515151515 - -chain_id: 0x2411 -version: 0x2511 - -is_execution_request: 0 - -private_call_stack_preimages: [ contract_address: 0x1011 -function_data: selector: -value: 1012 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -public_inputs: call_context: -msg_sender: 0x1022 -storage_contract_address: 0x1023 -portal_contract_address: 0x1024 -function_selector: value: 1025 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x1121 -return_values: [ 0x1221 0x1222 0x1223 0x1224 ] -read_requests: [ 0x1321 0x1322 0x1323 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 ] -pending_read_requests: [ 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 0x1343 0x1344 0x1345 0x1346 0x1347 0x1348 0x1349 0x134a 0x134b 0x134c 0x134d 0x134e 0x134f 0x1350 ] -new_commitments: [ 0x1421 0x1422 0x1423 0x1424 0x1425 0x1426 0x1427 0x1428 0x1429 0x142a 0x142b 0x142c 0x142d 0x142e 0x142f 0x1430 ] -new_nullifiers: [ 0x1521 0x1522 0x1523 0x1524 0x1525 0x1526 0x1527 0x1528 0x1529 0x152a 0x152b 0x152c 0x152d 0x152e 0x152f 0x1530 ] -nullified_commitments: [ 0x1531 0x1532 0x1533 0x1534 0x1535 0x1536 0x1537 0x1538 0x1539 0x153a 0x153b 0x153c 0x153d 0x153e 0x153f 0x1540 ] -private_call_stack: [ 0x1621 0x1622 0x1623 0x1624 ] -public_call_stack: [ 0x1721 0x1722 0x1723 0x1724 ] -new_l2_to_l1_msgs: [ 0x1821 0x1822 ] -encrypted_logs_hash: [ 0x1921 0x1922 ] -unencrypted_logs_hash: [ 0x1a21 0x1a22 ] -encrypted_log_preimages_length: 0x1b21 -unencrypted_log_preimages_length: 0x1c21 -historic_block_data: note_hash_tree_root: 0x1d21 -nullifier_tree_root: 0x1d22 -contract_tree_root: 0x1d23 -l1_to_l2_messages_tree_root: 0x1d24 -blocks_tree_root: 0x1d25 -private_kernel_vk_tree_root: 0x1d26 -public_data_tree_root: 0x1d27 -global_variables_hash: 0x1d28 - -contract_deployment_data: deployer_public_key: -x: 0x1e21 -y: 0x1e22 - -constructor_vk_hash: 0x1e22 -function_tree_root: 0x1e23 -contract_address_salt: 0x1e24 -portal_contract_address: 0x2525252525252525252525252525252525252525 - -chain_id: 0x2421 -version: 0x2521 - -is_execution_request: 0 - contract_address: 0x1012 -function_data: selector: -value: 1013 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -public_inputs: call_context: -msg_sender: 0x1023 -storage_contract_address: 0x1024 -portal_contract_address: 0x1025 -function_selector: value: 1026 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x1122 -return_values: [ 0x1222 0x1223 0x1224 0x1225 ] -read_requests: [ 0x1322 0x1323 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 ] -pending_read_requests: [ 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 0x1343 0x1344 0x1345 0x1346 0x1347 0x1348 0x1349 0x134a 0x134b 0x134c 0x134d 0x134e 0x134f 0x1350 0x1351 ] -new_commitments: [ 0x1422 0x1423 0x1424 0x1425 0x1426 0x1427 0x1428 0x1429 0x142a 0x142b 0x142c 0x142d 0x142e 0x142f 0x1430 0x1431 ] -new_nullifiers: [ 0x1522 0x1523 0x1524 0x1525 0x1526 0x1527 0x1528 0x1529 0x152a 0x152b 0x152c 0x152d 0x152e 0x152f 0x1530 0x1531 ] -nullified_commitments: [ 0x1532 0x1533 0x1534 0x1535 0x1536 0x1537 0x1538 0x1539 0x153a 0x153b 0x153c 0x153d 0x153e 0x153f 0x1540 0x1541 ] -private_call_stack: [ 0x1622 0x1623 0x1624 0x1625 ] -public_call_stack: [ 0x1722 0x1723 0x1724 0x1725 ] -new_l2_to_l1_msgs: [ 0x1822 0x1823 ] -encrypted_logs_hash: [ 0x1922 0x1923 ] -unencrypted_logs_hash: [ 0x1a22 0x1a23 ] -encrypted_log_preimages_length: 0x1b22 -unencrypted_log_preimages_length: 0x1c22 -historic_block_data: note_hash_tree_root: 0x1d22 -nullifier_tree_root: 0x1d23 -contract_tree_root: 0x1d24 -l1_to_l2_messages_tree_root: 0x1d25 -blocks_tree_root: 0x1d26 -private_kernel_vk_tree_root: 0x1d27 -public_data_tree_root: 0x1d28 -global_variables_hash: 0x1d29 - -contract_deployment_data: deployer_public_key: -x: 0x1e22 -y: 0x1e23 - -constructor_vk_hash: 0x1e23 -function_tree_root: 0x1e24 -contract_address_salt: 0x1e25 -portal_contract_address: 0x2626262626262626262626262626262626262626 - -chain_id: 0x2422 -version: 0x2522 - -is_execution_request: 0 - contract_address: 0x1013 -function_data: selector: -value: 1014 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -public_inputs: call_context: -msg_sender: 0x1024 -storage_contract_address: 0x1025 -portal_contract_address: 0x1026 -function_selector: value: 1027 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x1123 -return_values: [ 0x1223 0x1224 0x1225 0x1226 ] -read_requests: [ 0x1323 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 ] -pending_read_requests: [ 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 0x1343 0x1344 0x1345 0x1346 0x1347 0x1348 0x1349 0x134a 0x134b 0x134c 0x134d 0x134e 0x134f 0x1350 0x1351 0x1352 ] -new_commitments: [ 0x1423 0x1424 0x1425 0x1426 0x1427 0x1428 0x1429 0x142a 0x142b 0x142c 0x142d 0x142e 0x142f 0x1430 0x1431 0x1432 ] -new_nullifiers: [ 0x1523 0x1524 0x1525 0x1526 0x1527 0x1528 0x1529 0x152a 0x152b 0x152c 0x152d 0x152e 0x152f 0x1530 0x1531 0x1532 ] -nullified_commitments: [ 0x1533 0x1534 0x1535 0x1536 0x1537 0x1538 0x1539 0x153a 0x153b 0x153c 0x153d 0x153e 0x153f 0x1540 0x1541 0x1542 ] -private_call_stack: [ 0x1623 0x1624 0x1625 0x1626 ] -public_call_stack: [ 0x1723 0x1724 0x1725 0x1726 ] -new_l2_to_l1_msgs: [ 0x1823 0x1824 ] -encrypted_logs_hash: [ 0x1923 0x1924 ] -unencrypted_logs_hash: [ 0x1a23 0x1a24 ] -encrypted_log_preimages_length: 0x1b23 -unencrypted_log_preimages_length: 0x1c23 -historic_block_data: note_hash_tree_root: 0x1d23 -nullifier_tree_root: 0x1d24 -contract_tree_root: 0x1d25 -l1_to_l2_messages_tree_root: 0x1d26 -blocks_tree_root: 0x1d27 -private_kernel_vk_tree_root: 0x1d28 -public_data_tree_root: 0x1d29 -global_variables_hash: 0x1d2a - -contract_deployment_data: deployer_public_key: -x: 0x1e23 -y: 0x1e24 - -constructor_vk_hash: 0x1e24 -function_tree_root: 0x1e25 -contract_address_salt: 0x1e26 -portal_contract_address: 0x2727272727272727272727272727272727272727 - -chain_id: 0x2423 -version: 0x2523 - -is_execution_request: 0 - contract_address: 0x1014 -function_data: selector: -value: 1015 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -public_inputs: call_context: -msg_sender: 0x1025 -storage_contract_address: 0x1026 -portal_contract_address: 0x1027 -function_selector: value: 1028 - -is_delegate_call: 1 -is_static_call: 1 -is_contract_deployment: 1 - -args_hash: 0x1124 -return_values: [ 0x1224 0x1225 0x1226 0x1227 ] -read_requests: [ 0x1324 0x1325 0x1326 0x1327 0x1328 0x1329 0x132a 0x132b 0x132c 0x132d 0x132e 0x132f 0x1330 0x1331 0x1332 0x1333 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 0x1343 ] -pending_read_requests: [ 0x1334 0x1335 0x1336 0x1337 0x1338 0x1339 0x133a 0x133b 0x133c 0x133d 0x133e 0x133f 0x1340 0x1341 0x1342 0x1343 0x1344 0x1345 0x1346 0x1347 0x1348 0x1349 0x134a 0x134b 0x134c 0x134d 0x134e 0x134f 0x1350 0x1351 0x1352 0x1353 ] -new_commitments: [ 0x1424 0x1425 0x1426 0x1427 0x1428 0x1429 0x142a 0x142b 0x142c 0x142d 0x142e 0x142f 0x1430 0x1431 0x1432 0x1433 ] -new_nullifiers: [ 0x1524 0x1525 0x1526 0x1527 0x1528 0x1529 0x152a 0x152b 0x152c 0x152d 0x152e 0x152f 0x1530 0x1531 0x1532 0x1533 ] -nullified_commitments: [ 0x1534 0x1535 0x1536 0x1537 0x1538 0x1539 0x153a 0x153b 0x153c 0x153d 0x153e 0x153f 0x1540 0x1541 0x1542 0x1543 ] -private_call_stack: [ 0x1624 0x1625 0x1626 0x1627 ] -public_call_stack: [ 0x1724 0x1725 0x1726 0x1727 ] -new_l2_to_l1_msgs: [ 0x1824 0x1825 ] -encrypted_logs_hash: [ 0x1924 0x1925 ] -unencrypted_logs_hash: [ 0x1a24 0x1a25 ] -encrypted_log_preimages_length: 0x1b24 -unencrypted_log_preimages_length: 0x1c24 -historic_block_data: note_hash_tree_root: 0x1d24 -nullifier_tree_root: 0x1d25 -contract_tree_root: 0x1d26 -l1_to_l2_messages_tree_root: 0x1d27 -blocks_tree_root: 0x1d28 -private_kernel_vk_tree_root: 0x1d29 -public_data_tree_root: 0x1d2a -global_variables_hash: 0x1d2b - -contract_deployment_data: deployer_public_key: -x: 0x1e24 -y: 0x1e25 - -constructor_vk_hash: 0x1e25 -function_tree_root: 0x1e26 -contract_address_salt: 0x1e27 -portal_contract_address: 0x2828282828282828282828282828282828282828 - -chain_id: 0x2424 -version: 0x2524 - -is_execution_request: 0 - ] -proof: [ 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 ] -vk: key.circuit_type: 0 -key.circuit_size: 101 -key.num_public_inputs: 102 -key.commitments: [ - A: { 0x200, 0x300 } -] -key.contains_recursive_proof: 1 -key.recursive_proof_public_input_indices: [ 400 401 402 403 404 ] - -function_leaf_membership_witness: leaf_index: 0x1031 -sibling_path: [ 0x1031 0x1032 0x1033 0x1034 ] - -contract_leaf_membership_witness: leaf_index: 0x1021 -sibling_path: [ 0x1021 0x1022 0x1023 0x1024 0x1025 0x1026 0x1027 0x1028 0x1029 0x102a 0x102b 0x102c 0x102d 0x102e 0x102f 0x1030 ] - -read_request_membership_witnesses: [ leaf_index: 0x1071 -sibling_path: [ 0x1072 0x1073 0x1074 0x1075 0x1076 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1072 -sibling_path: [ 0x1073 0x1074 0x1075 0x1076 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1073 -sibling_path: [ 0x1074 0x1075 0x1076 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1074 -sibling_path: [ 0x1075 0x1076 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1075 -sibling_path: [ 0x1076 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1076 -sibling_path: [ 0x1077 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1077 -sibling_path: [ 0x1078 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1078 -sibling_path: [ 0x1079 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1079 -sibling_path: [ 0x107a 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107a -sibling_path: [ 0x107b 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107b -sibling_path: [ 0x107c 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107c -sibling_path: [ 0x107d 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107d -sibling_path: [ 0x107e 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107e -sibling_path: [ 0x107f 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x107f -sibling_path: [ 0x1080 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1080 -sibling_path: [ 0x1081 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1081 -sibling_path: [ 0x1082 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1082 -sibling_path: [ 0x1083 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1083 -sibling_path: [ 0x1084 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1084 -sibling_path: [ 0x1085 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1085 -sibling_path: [ 0x1086 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1086 -sibling_path: [ 0x1087 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1087 -sibling_path: [ 0x1088 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1088 -sibling_path: [ 0x1089 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1089 -sibling_path: [ 0x108a 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108a -sibling_path: [ 0x108b 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108b -sibling_path: [ 0x108c 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108c -sibling_path: [ 0x108d 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab 0x10ac ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108d -sibling_path: [ 0x108e 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab 0x10ac 0x10ad ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108e -sibling_path: [ 0x108f 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab 0x10ac 0x10ad 0x10ae ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x108f -sibling_path: [ 0x1090 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab 0x10ac 0x10ad 0x10ae 0x10af ] -is_transient: 0 -hint_to_commitment: 0x0 - leaf_index: 0x1090 -sibling_path: [ 0x1091 0x1092 0x1093 0x1094 0x1095 0x1096 0x1097 0x1098 0x1099 0x109a 0x109b 0x109c 0x109d 0x109e 0x109f 0x10a0 0x10a1 0x10a2 0x10a3 0x10a4 0x10a5 0x10a6 0x10a7 0x10a8 0x10a9 0x10aa 0x10ab 0x10ac 0x10ad 0x10ae 0x10af 0x10b0 ] -is_transient: 0 -hint_to_commitment: 0x0 - ] -portal_contract_address: 0x4141414141414141414141414141414141414141 -acir_hash: 0x1061 - -" -`; - -exports[`structs/kernel serializes and prints private_kernel_public_inputs 1`] = ` -"end: -aggregation_object: -P0: { 0x1, 0x2 } -P1: { 0x101, 0x102 } -public_inputs: [ - 0x3 - 0x4 - 0x5 - 0x6 -] -proof_witness_indices: [ 7 8 9 10 11 12 ] -has_data: 0 - -read_requests: [ 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xea 0xeb 0xec 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff 0x100 ] -pending_read_requests: [ 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xea 0xeb 0xec 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff 0x100 ] -new_commitments: [ 0x101 0x102 0x103 0x104 0x105 0x106 0x107 0x108 0x109 0x10a 0x10b 0x10c 0x10d 0x10e 0x10f 0x110 0x111 0x112 0x113 0x114 0x115 0x116 0x117 0x118 0x119 0x11a 0x11b 0x11c 0x11d 0x11e 0x11f 0x120 0x121 0x122 0x123 0x124 0x125 0x126 0x127 0x128 0x129 0x12a 0x12b 0x12c 0x12d 0x12e 0x12f 0x130 0x131 0x132 0x133 0x134 0x135 0x136 0x137 0x138 0x139 0x13a 0x13b 0x13c 0x13d 0x13e 0x13f 0x140 ] -new_nullifiers: [ 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 0x209 0x20a 0x20b 0x20c 0x20d 0x20e 0x20f 0x210 0x211 0x212 0x213 0x214 0x215 0x216 0x217 0x218 0x219 0x21a 0x21b 0x21c 0x21d 0x21e 0x21f 0x220 0x221 0x222 0x223 0x224 0x225 0x226 0x227 0x228 0x229 0x22a 0x22b 0x22c 0x22d 0x22e 0x22f 0x230 0x231 0x232 0x233 0x234 0x235 0x236 0x237 0x238 0x239 0x23a 0x23b 0x23c 0x23d 0x23e 0x23f 0x240 ] -nullified_commitments: [ 0x301 0x302 0x303 0x304 0x305 0x306 0x307 0x308 0x309 0x30a 0x30b 0x30c 0x30d 0x30e 0x30f 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f 0x320 0x321 0x322 0x323 0x324 0x325 0x326 0x327 0x328 0x329 0x32a 0x32b 0x32c 0x32d 0x32e 0x32f 0x330 0x331 0x332 0x333 0x334 0x335 0x336 0x337 0x338 0x339 0x33a 0x33b 0x33c 0x33d 0x33e 0x33f 0x340 ] -private_call_stack: [ 0x401 0x402 0x403 0x404 0x405 0x406 0x407 0x408 ] -public_call_stack: [ 0x501 0x502 0x503 0x504 0x505 0x506 0x507 0x508 ] -new_l2_to_l1_msgs: [ 0x601 0x602 ] -encrypted_logs_hash: [ 0x701 0x702 ] -unencrypted_logs_hash: [ 0x801 0x802 ] -encrypted_log_preimages_length: 0x901 -unencrypted_log_preimages_length: 0xa01 -new_contracts: [ contract_address: 0xb01 -portal_contract_address: 0x202020202020202020202020202020202020202 -function_tree_root: 0xb03 - ] -optionally_revealed_data: [ call_stack_item_hash: 0xc01 -function_data: selector: -value: c02 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc03 -portal_contract_address: 0x404040404040404040404040404040404040404 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc02 -function_data: selector: -value: c03 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc04 -portal_contract_address: 0x505050505050505050505050505050505050505 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc03 -function_data: selector: -value: c04 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc05 -portal_contract_address: 0x606060606060606060606060606060606060606 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc04 -function_data: selector: -value: c05 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc06 -portal_contract_address: 0x707070707070707070707070707070707070707 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - ] -public_data_update_requests: [ leaf_index: 0xd01 -old_value: 0xd02 -new_value: 0xd03 - leaf_index: 0xd02 -old_value: 0xd03 -new_value: 0xd04 - leaf_index: 0xd03 -old_value: 0xd04 -new_value: 0xd05 - leaf_index: 0xd04 -old_value: 0xd05 -new_value: 0xd06 - leaf_index: 0xd05 -old_value: 0xd06 -new_value: 0xd07 - leaf_index: 0xd06 -old_value: 0xd07 -new_value: 0xd08 - leaf_index: 0xd07 -old_value: 0xd08 -new_value: 0xd09 - leaf_index: 0xd08 -old_value: 0xd09 -new_value: 0xd0a - leaf_index: 0xd09 -old_value: 0xd0a -new_value: 0xd0b - leaf_index: 0xd0a -old_value: 0xd0b -new_value: 0xd0c - leaf_index: 0xd0b -old_value: 0xd0c -new_value: 0xd0d - leaf_index: 0xd0c -old_value: 0xd0d -new_value: 0xd0e - leaf_index: 0xd0d -old_value: 0xd0e -new_value: 0xd0f - leaf_index: 0xd0e -old_value: 0xd0f -new_value: 0xd10 - leaf_index: 0xd0f -old_value: 0xd10 -new_value: 0xd11 - leaf_index: 0xd10 -old_value: 0xd11 -new_value: 0xd12 - ] -public_data_reads: [ leaf_index: 0xe01 -value: 0xe02 - leaf_index: 0xe02 -value: 0xe03 - leaf_index: 0xe03 -value: 0xe04 - leaf_index: 0xe04 -value: 0xe05 - leaf_index: 0xe05 -value: 0xe06 - leaf_index: 0xe06 -value: 0xe07 - leaf_index: 0xe07 -value: 0xe08 - leaf_index: 0xe08 -value: 0xe09 - leaf_index: 0xe09 -value: 0xe0a - leaf_index: 0xe0a -value: 0xe0b - leaf_index: 0xe0b -value: 0xe0c - leaf_index: 0xe0c -value: 0xe0d - leaf_index: 0xe0d -value: 0xe0e - leaf_index: 0xe0e -value: 0xe0f - leaf_index: 0xe0f -value: 0xe10 - leaf_index: 0xe10 -value: 0xe11 - ] - -constants: -block_data: -note_hash_tree_root: 0x101 -nullifier_tree_root: 0x102 -contract_tree_root: 0x103 -l1_to_l2_messages_tree_root: 0x104 -blocks_tree_root: 0x105 -private_kernel_vk_tree_root: 0x106 -public_data_tree_root: 0x107 -global_variables_hash: 0x108 - -tx_context: -is_fee_payment_tx: 0 -is_rebate_payment_tx: 0 -is_contract_deployment_tx: 1 -contract_deployment_data: deployer_public_key: -x: 0x105 -y: 0x106 - -constructor_vk_hash: 0x106 -function_tree_root: 0x107 -contract_address_salt: 0x108 -portal_contract_address: 0x909090909090909090909090909090909090909 - -chain_id: 0x0 -version: 0x0 - - -is_private: 1 -" -`; - -exports[`structs/kernel serializes and prints private_kernel_public_inputs for ordering circuit 1`] = ` -"end: -aggregation_object: -P0: { 0x1, 0x2 } -P1: { 0x101, 0x102 } -public_inputs: [ - 0x3 - 0x4 - 0x5 - 0x6 -] -proof_witness_indices: [ 7 8 9 10 11 12 ] -has_data: 0 - -new_commitments: [ 0x101 0x102 0x103 0x104 0x105 0x106 0x107 0x108 0x109 0x10a 0x10b 0x10c 0x10d 0x10e 0x10f 0x110 0x111 0x112 0x113 0x114 0x115 0x116 0x117 0x118 0x119 0x11a 0x11b 0x11c 0x11d 0x11e 0x11f 0x120 0x121 0x122 0x123 0x124 0x125 0x126 0x127 0x128 0x129 0x12a 0x12b 0x12c 0x12d 0x12e 0x12f 0x130 0x131 0x132 0x133 0x134 0x135 0x136 0x137 0x138 0x139 0x13a 0x13b 0x13c 0x13d 0x13e 0x13f 0x140 ] -new_nullifiers: [ 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 0x209 0x20a 0x20b 0x20c 0x20d 0x20e 0x20f 0x210 0x211 0x212 0x213 0x214 0x215 0x216 0x217 0x218 0x219 0x21a 0x21b 0x21c 0x21d 0x21e 0x21f 0x220 0x221 0x222 0x223 0x224 0x225 0x226 0x227 0x228 0x229 0x22a 0x22b 0x22c 0x22d 0x22e 0x22f 0x230 0x231 0x232 0x233 0x234 0x235 0x236 0x237 0x238 0x239 0x23a 0x23b 0x23c 0x23d 0x23e 0x23f 0x240 ] -nullified_commitments: [ 0x301 0x302 0x303 0x304 0x305 0x306 0x307 0x308 0x309 0x30a 0x30b 0x30c 0x30d 0x30e 0x30f 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f 0x320 0x321 0x322 0x323 0x324 0x325 0x326 0x327 0x328 0x329 0x32a 0x32b 0x32c 0x32d 0x32e 0x32f 0x330 0x331 0x332 0x333 0x334 0x335 0x336 0x337 0x338 0x339 0x33a 0x33b 0x33c 0x33d 0x33e 0x33f 0x340 ] -private_call_stack: [ 0x401 0x402 0x403 0x404 0x405 0x406 0x407 0x408 ] -public_call_stack: [ 0x501 0x502 0x503 0x504 0x505 0x506 0x507 0x508 ] -new_l2_to_l1_msgs: [ 0x601 0x602 ] -encrypted_logs_hash: [ 0x701 0x702 ] -unencrypted_logs_hash: [ 0x801 0x802 ] -encrypted_log_preimages_length: 0x901 -unencrypted_log_preimages_length: 0xa01 -new_contracts: [ contract_address: 0xb01 -portal_contract_address: 0x202020202020202020202020202020202020202 -function_tree_root: 0xb03 - ] -optionally_revealed_data: [ call_stack_item_hash: 0xc01 -function_data: selector: -value: c02 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc03 -portal_contract_address: 0x404040404040404040404040404040404040404 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc02 -function_data: selector: -value: c03 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc04 -portal_contract_address: 0x505050505050505050505050505050505050505 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc03 -function_data: selector: -value: c04 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc05 -portal_contract_address: 0x606060606060606060606060606060606060606 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc04 -function_data: selector: -value: c05 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc06 -portal_contract_address: 0x707070707070707070707070707070707070707 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - ] - -constants: -block_data: -note_hash_tree_root: 0x101 -nullifier_tree_root: 0x102 -contract_tree_root: 0x103 -l1_to_l2_messages_tree_root: 0x104 -blocks_tree_root: 0x105 -private_kernel_vk_tree_root: 0x106 -public_data_tree_root: 0x107 -global_variables_hash: 0x108 - -tx_context: -is_fee_payment_tx: 0 -is_rebate_payment_tx: 0 -is_contract_deployment_tx: 1 -contract_deployment_data: deployer_public_key: -x: 0x105 -y: 0x106 - -constructor_vk_hash: 0x106 -function_tree_root: 0x107 -contract_address_salt: 0x108 -portal_contract_address: 0x909090909090909090909090909090909090909 - -chain_id: 0x0 -version: 0x0 - - -is_private: 1 -" -`; - -exports[`structs/kernel serializes and prints public_kernel_inputs 1`] = ` -"previous_kernel: -public_inputs: -end: -aggregation_object: -P0: { 0x1, 0x2 } -P1: { 0x101, 0x102 } -public_inputs: [ - 0x3 - 0x4 - 0x5 - 0x6 -] -proof_witness_indices: [ 7 8 9 10 11 12 ] -has_data: 0 - -read_requests: [ 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xea 0xeb 0xec 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff 0x100 ] -pending_read_requests: [ 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90 0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0 0xa1 0xa2 0xa3 0xa4 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc6 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd0 0xd1 0xd2 0xd3 0xd4 0xd5 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe4 0xe5 0xe6 0xe7 0xe8 0xe9 0xea 0xeb 0xec 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff 0x100 ] -new_commitments: [ 0x101 0x102 0x103 0x104 0x105 0x106 0x107 0x108 0x109 0x10a 0x10b 0x10c 0x10d 0x10e 0x10f 0x110 0x111 0x112 0x113 0x114 0x115 0x116 0x117 0x118 0x119 0x11a 0x11b 0x11c 0x11d 0x11e 0x11f 0x120 0x121 0x122 0x123 0x124 0x125 0x126 0x127 0x128 0x129 0x12a 0x12b 0x12c 0x12d 0x12e 0x12f 0x130 0x131 0x132 0x133 0x134 0x135 0x136 0x137 0x138 0x139 0x13a 0x13b 0x13c 0x13d 0x13e 0x13f 0x140 ] -new_nullifiers: [ 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 0x209 0x20a 0x20b 0x20c 0x20d 0x20e 0x20f 0x210 0x211 0x212 0x213 0x214 0x215 0x216 0x217 0x218 0x219 0x21a 0x21b 0x21c 0x21d 0x21e 0x21f 0x220 0x221 0x222 0x223 0x224 0x225 0x226 0x227 0x228 0x229 0x22a 0x22b 0x22c 0x22d 0x22e 0x22f 0x230 0x231 0x232 0x233 0x234 0x235 0x236 0x237 0x238 0x239 0x23a 0x23b 0x23c 0x23d 0x23e 0x23f 0x240 ] -nullified_commitments: [ 0x301 0x302 0x303 0x304 0x305 0x306 0x307 0x308 0x309 0x30a 0x30b 0x30c 0x30d 0x30e 0x30f 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f 0x320 0x321 0x322 0x323 0x324 0x325 0x326 0x327 0x328 0x329 0x32a 0x32b 0x32c 0x32d 0x32e 0x32f 0x330 0x331 0x332 0x333 0x334 0x335 0x336 0x337 0x338 0x339 0x33a 0x33b 0x33c 0x33d 0x33e 0x33f 0x340 ] -private_call_stack: [ 0x401 0x402 0x403 0x404 0x405 0x406 0x407 0x408 ] -public_call_stack: [ 0x501 0x502 0x503 0x504 0x505 0x506 0x507 0x508 ] -new_l2_to_l1_msgs: [ 0x601 0x602 ] -encrypted_logs_hash: [ 0x701 0x702 ] -unencrypted_logs_hash: [ 0x801 0x802 ] -encrypted_log_preimages_length: 0x901 -unencrypted_log_preimages_length: 0xa01 -new_contracts: [ contract_address: 0xb01 -portal_contract_address: 0x202020202020202020202020202020202020202 -function_tree_root: 0xb03 - ] -optionally_revealed_data: [ call_stack_item_hash: 0xc01 -function_data: selector: -value: c02 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc03 -portal_contract_address: 0x404040404040404040404040404040404040404 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc02 -function_data: selector: -value: c03 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc04 -portal_contract_address: 0x505050505050505050505050505050505050505 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc03 -function_data: selector: -value: c04 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc05 -portal_contract_address: 0x606060606060606060606060606060606060606 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xc04 -function_data: selector: -value: c05 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xc06 -portal_contract_address: 0x707070707070707070707070707070707070707 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - ] -public_data_update_requests: [ leaf_index: 0xd01 -old_value: 0xd02 -new_value: 0xd03 - leaf_index: 0xd02 -old_value: 0xd03 -new_value: 0xd04 - leaf_index: 0xd03 -old_value: 0xd04 -new_value: 0xd05 - leaf_index: 0xd04 -old_value: 0xd05 -new_value: 0xd06 - leaf_index: 0xd05 -old_value: 0xd06 -new_value: 0xd07 - leaf_index: 0xd06 -old_value: 0xd07 -new_value: 0xd08 - leaf_index: 0xd07 -old_value: 0xd08 -new_value: 0xd09 - leaf_index: 0xd08 -old_value: 0xd09 -new_value: 0xd0a - leaf_index: 0xd09 -old_value: 0xd0a -new_value: 0xd0b - leaf_index: 0xd0a -old_value: 0xd0b -new_value: 0xd0c - leaf_index: 0xd0b -old_value: 0xd0c -new_value: 0xd0d - leaf_index: 0xd0c -old_value: 0xd0d -new_value: 0xd0e - leaf_index: 0xd0d -old_value: 0xd0e -new_value: 0xd0f - leaf_index: 0xd0e -old_value: 0xd0f -new_value: 0xd10 - leaf_index: 0xd0f -old_value: 0xd10 -new_value: 0xd11 - leaf_index: 0xd10 -old_value: 0xd11 -new_value: 0xd12 - ] -public_data_reads: [ leaf_index: 0xe01 -value: 0xe02 - leaf_index: 0xe02 -value: 0xe03 - leaf_index: 0xe03 -value: 0xe04 - leaf_index: 0xe04 -value: 0xe05 - leaf_index: 0xe05 -value: 0xe06 - leaf_index: 0xe06 -value: 0xe07 - leaf_index: 0xe07 -value: 0xe08 - leaf_index: 0xe08 -value: 0xe09 - leaf_index: 0xe09 -value: 0xe0a - leaf_index: 0xe0a -value: 0xe0b - leaf_index: 0xe0b -value: 0xe0c - leaf_index: 0xe0c -value: 0xe0d - leaf_index: 0xe0d -value: 0xe0e - leaf_index: 0xe0e -value: 0xe0f - leaf_index: 0xe0f -value: 0xe10 - leaf_index: 0xe10 -value: 0xe11 - ] - -constants: -block_data: -note_hash_tree_root: 0x101 -nullifier_tree_root: 0x102 -contract_tree_root: 0x103 -l1_to_l2_messages_tree_root: 0x104 -blocks_tree_root: 0x105 -private_kernel_vk_tree_root: 0x106 -public_data_tree_root: 0x107 -global_variables_hash: 0x108 - -tx_context: -is_fee_payment_tx: 0 -is_rebate_payment_tx: 0 -is_contract_deployment_tx: 1 -contract_deployment_data: deployer_public_key: -x: 0x105 -y: 0x106 - -constructor_vk_hash: 0x106 -function_tree_root: 0x107 -contract_address_salt: 0x108 -portal_contract_address: 0x909090909090909090909090909090909090909 - -chain_id: 0x0 -version: 0x0 - - -is_private: 1 - -proof: [ 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 ] -vk: key.circuit_type: 0 -key.circuit_size: 101 -key.num_public_inputs: 102 -key.commitments: [ - A: { 0x200, 0x300 } -] -key.contains_recursive_proof: 1 -key.recursive_proof_public_input_indices: [ 400 401 402 403 404 ] - -vk_index: 66 -vk_path: [ 0x1000 0x1001 0x1002 ] - -public_call: -call_stack_item: -contract_address: 0x1001 -function_data: selector: -value: 4098 - -is_internal: 0 -is_private: 0 -is_constructor: 0 - -public_inputs: call_context: -msg_sender: 0x1011 -storage_contract_address: 0x1001 -portal_contract_address: 0x1313131313131313131313131313131313131313 -function_selector: value: 4116 - -is_delegate_call: 0 -is_static_call: 0 -is_contract_deployment: 0 - -args_hash: 0x1111 -return_values: [ 0x1211 0x1212 0x0 0x0 ] -contract_storage_update_requests: [ storage_slot: 0x1411 -old_value: 0x1412 -new_value: 0x1413 - storage_slot: 0x1412 -old_value: 0x1413 -new_value: 0x1414 - storage_slot: 0x1413 -old_value: 0x1414 -new_value: 0x1415 - storage_slot: 0x1414 -old_value: 0x1415 -new_value: 0x1416 - storage_slot: 0x1415 -old_value: 0x1416 -new_value: 0x1417 - storage_slot: 0x1416 -old_value: 0x1417 -new_value: 0x1418 - storage_slot: 0x1417 -old_value: 0x1418 -new_value: 0x1419 - storage_slot: 0x1418 -old_value: 0x1419 -new_value: 0x141a - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - ] -contract_storage_reads: [ storage_slot: 0x1511 -current_value: 0x1512 - storage_slot: 0x1512 -current_value: 0x1513 - storage_slot: 0x1513 -current_value: 0x1514 - storage_slot: 0x1514 -current_value: 0x1515 - storage_slot: 0x1515 -current_value: 0x1516 - storage_slot: 0x1516 -current_value: 0x1517 - storage_slot: 0x1517 -current_value: 0x1518 - storage_slot: 0x1518 -current_value: 0x1519 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - ] -public_call_stack: [ 0x2664d89d2cb89f95b48d1a49578b0e0be75ac75a8c343ec3a6bc1652c0a8838a 0x1c4b4b5da0a9976b4ec5fc4c4a90f331fd1ac80df03470244c39d3db0d284f9 0x1d274eeb18b364cf125d822e4e8a0ad2a597648cfba441845db243c8098f62fc 0x1f8fc65d176ec9bf208bdee1b150a3df076e37cbda4db8c852d638fae54746b9 ] -new_commitments: [ 0x1711 0x1712 0x1713 0x1714 0x1715 0x1716 0x1717 0x1718 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_nullifiers: [ 0x1811 0x1812 0x1813 0x1814 0x1815 0x1816 0x1817 0x1818 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_l2_to_l1_msgs: [ 0x1911 0x0 ] -unencrypted_logs_hash: [ 0x1912 0x0 ] -unencrypted_log_preimages_length: 0x1913 -historic_block_data: note_hash_tree_root: 0x1a11 -nullifier_tree_root: 0x1a12 -contract_tree_root: 0x1a13 -l1_to_l2_messages_tree_root: 0x1a14 -blocks_tree_root: 0x1a15 -private_kernel_vk_tree_root: 0x1a16 -public_data_tree_root: 0x1a17 -global_variables_hash: 0x1a18 - -prover_address: 0x1b12 - -is_execution_request: 0 - -public_call_stack_preimages: [ contract_address: 0x1301 -function_data: selector: -value: 1302 - -is_internal: 0 -is_private: 0 -is_constructor: 0 - -public_inputs: call_context: -msg_sender: 0x1001 -storage_contract_address: 0x1301 -portal_contract_address: 0x1313131313131313131313131313131313131313 -function_selector: value: 1314 - -is_delegate_call: 0 -is_static_call: 0 -is_contract_deployment: 0 - -args_hash: 0x1411 -return_values: [ 0x1511 0x1512 0x0 0x0 ] -contract_storage_update_requests: [ storage_slot: 0x1711 -old_value: 0x1712 -new_value: 0x1713 - storage_slot: 0x1712 -old_value: 0x1713 -new_value: 0x1714 - storage_slot: 0x1713 -old_value: 0x1714 -new_value: 0x1715 - storage_slot: 0x1714 -old_value: 0x1715 -new_value: 0x1716 - storage_slot: 0x1715 -old_value: 0x1716 -new_value: 0x1717 - storage_slot: 0x1716 -old_value: 0x1717 -new_value: 0x1718 - storage_slot: 0x1717 -old_value: 0x1718 -new_value: 0x1719 - storage_slot: 0x1718 -old_value: 0x1719 -new_value: 0x171a - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - ] -contract_storage_reads: [ storage_slot: 0x1811 -current_value: 0x1812 - storage_slot: 0x1812 -current_value: 0x1813 - storage_slot: 0x1813 -current_value: 0x1814 - storage_slot: 0x1814 -current_value: 0x1815 - storage_slot: 0x1815 -current_value: 0x1816 - storage_slot: 0x1816 -current_value: 0x1817 - storage_slot: 0x1817 -current_value: 0x1818 - storage_slot: 0x1818 -current_value: 0x1819 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - ] -public_call_stack: [ 0x1911 0x1912 0x0 0x0 ] -new_commitments: [ 0x1a11 0x1a12 0x1a13 0x1a14 0x1a15 0x1a16 0x1a17 0x1a18 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_nullifiers: [ 0x1b11 0x1b12 0x1b13 0x1b14 0x1b15 0x1b16 0x1b17 0x1b18 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_l2_to_l1_msgs: [ 0x1c11 0x0 ] -unencrypted_logs_hash: [ 0x1c12 0x0 ] -unencrypted_log_preimages_length: 0x1c13 -historic_block_data: note_hash_tree_root: 0x1d11 -nullifier_tree_root: 0x1d12 -contract_tree_root: 0x1d13 -l1_to_l2_messages_tree_root: 0x1d14 -blocks_tree_root: 0x1d15 -private_kernel_vk_tree_root: 0x1d16 -public_data_tree_root: 0x1d17 -global_variables_hash: 0x1d18 - -prover_address: 0x1e12 - -is_execution_request: 0 - contract_address: 0x1302 -function_data: selector: -value: 1303 - -is_internal: 0 -is_private: 0 -is_constructor: 0 - -public_inputs: call_context: -msg_sender: 0x1001 -storage_contract_address: 0x1302 -portal_contract_address: 0x1414141414141414141414141414141414141414 -function_selector: value: 1315 - -is_delegate_call: 0 -is_static_call: 0 -is_contract_deployment: 0 - -args_hash: 0x1412 -return_values: [ 0x1512 0x1513 0x0 0x0 ] -contract_storage_update_requests: [ storage_slot: 0x1712 -old_value: 0x1713 -new_value: 0x1714 - storage_slot: 0x1713 -old_value: 0x1714 -new_value: 0x1715 - storage_slot: 0x1714 -old_value: 0x1715 -new_value: 0x1716 - storage_slot: 0x1715 -old_value: 0x1716 -new_value: 0x1717 - storage_slot: 0x1716 -old_value: 0x1717 -new_value: 0x1718 - storage_slot: 0x1717 -old_value: 0x1718 -new_value: 0x1719 - storage_slot: 0x1718 -old_value: 0x1719 -new_value: 0x171a - storage_slot: 0x1719 -old_value: 0x171a -new_value: 0x171b - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - ] -contract_storage_reads: [ storage_slot: 0x1812 -current_value: 0x1813 - storage_slot: 0x1813 -current_value: 0x1814 - storage_slot: 0x1814 -current_value: 0x1815 - storage_slot: 0x1815 -current_value: 0x1816 - storage_slot: 0x1816 -current_value: 0x1817 - storage_slot: 0x1817 -current_value: 0x1818 - storage_slot: 0x1818 -current_value: 0x1819 - storage_slot: 0x1819 -current_value: 0x181a - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - ] -public_call_stack: [ 0x1912 0x1913 0x0 0x0 ] -new_commitments: [ 0x1a12 0x1a13 0x1a14 0x1a15 0x1a16 0x1a17 0x1a18 0x1a19 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_nullifiers: [ 0x1b12 0x1b13 0x1b14 0x1b15 0x1b16 0x1b17 0x1b18 0x1b19 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_l2_to_l1_msgs: [ 0x1c12 0x0 ] -unencrypted_logs_hash: [ 0x1c13 0x0 ] -unencrypted_log_preimages_length: 0x1c14 -historic_block_data: note_hash_tree_root: 0x1d12 -nullifier_tree_root: 0x1d13 -contract_tree_root: 0x1d14 -l1_to_l2_messages_tree_root: 0x1d15 -blocks_tree_root: 0x1d16 -private_kernel_vk_tree_root: 0x1d17 -public_data_tree_root: 0x1d18 -global_variables_hash: 0x1d19 - -prover_address: 0x1e13 - -is_execution_request: 0 - contract_address: 0x1303 -function_data: selector: -value: 1304 - -is_internal: 0 -is_private: 0 -is_constructor: 0 - -public_inputs: call_context: -msg_sender: 0x1001 -storage_contract_address: 0x1303 -portal_contract_address: 0x1515151515151515151515151515151515151515 -function_selector: value: 1316 - -is_delegate_call: 0 -is_static_call: 0 -is_contract_deployment: 0 - -args_hash: 0x1413 -return_values: [ 0x1513 0x1514 0x0 0x0 ] -contract_storage_update_requests: [ storage_slot: 0x1713 -old_value: 0x1714 -new_value: 0x1715 - storage_slot: 0x1714 -old_value: 0x1715 -new_value: 0x1716 - storage_slot: 0x1715 -old_value: 0x1716 -new_value: 0x1717 - storage_slot: 0x1716 -old_value: 0x1717 -new_value: 0x1718 - storage_slot: 0x1717 -old_value: 0x1718 -new_value: 0x1719 - storage_slot: 0x1718 -old_value: 0x1719 -new_value: 0x171a - storage_slot: 0x1719 -old_value: 0x171a -new_value: 0x171b - storage_slot: 0x171a -old_value: 0x171b -new_value: 0x171c - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - ] -contract_storage_reads: [ storage_slot: 0x1813 -current_value: 0x1814 - storage_slot: 0x1814 -current_value: 0x1815 - storage_slot: 0x1815 -current_value: 0x1816 - storage_slot: 0x1816 -current_value: 0x1817 - storage_slot: 0x1817 -current_value: 0x1818 - storage_slot: 0x1818 -current_value: 0x1819 - storage_slot: 0x1819 -current_value: 0x181a - storage_slot: 0x181a -current_value: 0x181b - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - ] -public_call_stack: [ 0x1913 0x1914 0x0 0x0 ] -new_commitments: [ 0x1a13 0x1a14 0x1a15 0x1a16 0x1a17 0x1a18 0x1a19 0x1a1a 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_nullifiers: [ 0x1b13 0x1b14 0x1b15 0x1b16 0x1b17 0x1b18 0x1b19 0x1b1a 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_l2_to_l1_msgs: [ 0x1c13 0x0 ] -unencrypted_logs_hash: [ 0x1c14 0x0 ] -unencrypted_log_preimages_length: 0x1c15 -historic_block_data: note_hash_tree_root: 0x1d13 -nullifier_tree_root: 0x1d14 -contract_tree_root: 0x1d15 -l1_to_l2_messages_tree_root: 0x1d16 -blocks_tree_root: 0x1d17 -private_kernel_vk_tree_root: 0x1d18 -public_data_tree_root: 0x1d19 -global_variables_hash: 0x1d1a - -prover_address: 0x1e14 - -is_execution_request: 0 - contract_address: 0x1304 -function_data: selector: -value: 1305 - -is_internal: 0 -is_private: 0 -is_constructor: 0 - -public_inputs: call_context: -msg_sender: 0x1001 -storage_contract_address: 0x1304 -portal_contract_address: 0x1616161616161616161616161616161616161616 -function_selector: value: 1317 - -is_delegate_call: 0 -is_static_call: 0 -is_contract_deployment: 0 - -args_hash: 0x1414 -return_values: [ 0x1514 0x1515 0x0 0x0 ] -contract_storage_update_requests: [ storage_slot: 0x1714 -old_value: 0x1715 -new_value: 0x1716 - storage_slot: 0x1715 -old_value: 0x1716 -new_value: 0x1717 - storage_slot: 0x1716 -old_value: 0x1717 -new_value: 0x1718 - storage_slot: 0x1717 -old_value: 0x1718 -new_value: 0x1719 - storage_slot: 0x1718 -old_value: 0x1719 -new_value: 0x171a - storage_slot: 0x1719 -old_value: 0x171a -new_value: 0x171b - storage_slot: 0x171a -old_value: 0x171b -new_value: 0x171c - storage_slot: 0x171b -old_value: 0x171c -new_value: 0x171d - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - storage_slot: 0x0 -old_value: 0x1 -new_value: 0x2 - ] -contract_storage_reads: [ storage_slot: 0x1814 -current_value: 0x1815 - storage_slot: 0x1815 -current_value: 0x1816 - storage_slot: 0x1816 -current_value: 0x1817 - storage_slot: 0x1817 -current_value: 0x1818 - storage_slot: 0x1818 -current_value: 0x1819 - storage_slot: 0x1819 -current_value: 0x181a - storage_slot: 0x181a -current_value: 0x181b - storage_slot: 0x181b -current_value: 0x181c - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - storage_slot: 0x0 -current_value: 0x1 - ] -public_call_stack: [ 0x1914 0x1915 0x0 0x0 ] -new_commitments: [ 0x1a14 0x1a15 0x1a16 0x1a17 0x1a18 0x1a19 0x1a1a 0x1a1b 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_nullifiers: [ 0x1b14 0x1b15 0x1b16 0x1b17 0x1b18 0x1b19 0x1b1a 0x1b1b 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 ] -new_l2_to_l1_msgs: [ 0x1c14 0x0 ] -unencrypted_logs_hash: [ 0x1c15 0x0 ] -unencrypted_log_preimages_length: 0x1c16 -historic_block_data: note_hash_tree_root: 0x1d14 -nullifier_tree_root: 0x1d15 -contract_tree_root: 0x1d16 -l1_to_l2_messages_tree_root: 0x1d17 -blocks_tree_root: 0x1d18 -private_kernel_vk_tree_root: 0x1d19 -public_data_tree_root: 0x1d1a -global_variables_hash: 0x1d1b - -prover_address: 0x1e15 - -is_execution_request: 0 - ] -proof: [ 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ] -portal_contract_address: 0x1002 -bytecode_hash: 0x1003 - -" -`; diff --git a/yarn-project/circuits.js/src/structs/kernel/index.test.ts b/yarn-project/circuits.js/src/structs/kernel/index.test.ts deleted file mode 100644 index f81fa01c4b4..00000000000 --- a/yarn-project/circuits.js/src/structs/kernel/index.test.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { expectSerializeToMatchSnapshot } from '../../tests/expectSerialize.js'; -import { - makeAccumulatedData, - makeFinalAccumulatedData, - makeKernelPublicInputs, - makePreviousKernelData, - makePrivateKernelInputsInit, - makePrivateKernelInputsInner, - makePrivateKernelPublicInputsFinal, - makePublicKernelInputs, - makeSchnorrSignature, -} from '../../tests/factories.js'; - -// TODO: Remove `expectSerialize` and `expectMsgpack` and just test .toBuffer() and .fromBuffer() of each struct. -describe.skip('structs/kernel', () => { - it(`serializes and prints previous_kernel_data`, async () => { - const previousKernelData = makePreviousKernelData(); - await expectSerializeToMatchSnapshot( - previousKernelData.toBuffer(), - 'abis__test_roundtrip_serialize_previous_kernel_data', - ); - }); - - it(`serializes and prints private_kernel_inputs_init`, async () => { - const kernelInputs = makePrivateKernelInputsInit(); - await expectSerializeToMatchSnapshot( - kernelInputs.toBuffer(), - 'abis__test_roundtrip_serialize_private_kernel_inputs_init', - ); - }); - - it(`serializes and prints private_kernel_inputs_inner`, async () => { - const kernelInputs = makePrivateKernelInputsInner(); - await expectSerializeToMatchSnapshot( - kernelInputs.toBuffer(), - 'abis__test_roundtrip_serialize_private_kernel_inputs_inner', - ); - }); - - it(`serializes and prints EcdsaSignature`, async () => { - await expectSerializeToMatchSnapshot(makeSchnorrSignature().toBuffer(), 'abis__test_roundtrip_serialize_signature'); - }); - - it(`serializes and prints CombinedAccumulatedData`, async (seed = 1) => { - await expectSerializeToMatchSnapshot( - makeAccumulatedData(seed, true).toBuffer(), - 'abis__test_roundtrip_serialize_combined_accumulated_data', - ); - }); - - it(`serializes and prints FinalAccumulatedData`, async (seed = 1) => { - await expectSerializeToMatchSnapshot( - makeFinalAccumulatedData(seed, true).toBuffer(), - 'abis__test_roundtrip_serialize_final_accumulated_data', - ); - }); - - it(`serializes and prints private_kernel_public_inputs`, async () => { - const kernelInputs = makeKernelPublicInputs(); - await expectSerializeToMatchSnapshot( - kernelInputs.toBuffer(), - 'abis__test_roundtrip_serialize_kernel_circuit_public_inputs', - ); - }); - - it(`serializes and prints private_kernel_public_inputs for ordering circuit`, async () => { - const kernelInputs = makePrivateKernelPublicInputsFinal(); - await expectSerializeToMatchSnapshot( - kernelInputs.toBuffer(), - 'abis__test_roundtrip_serialize_kernel_circuit_public_inputs_final', - ); - }); - - it(`serializes and prints public_kernel_inputs`, async () => { - const kernelInputs = makePublicKernelInputs(); - await expectSerializeToMatchSnapshot( - kernelInputs.toBuffer(), - 'abis__test_roundtrip_serialize_public_kernel_inputs', - ); - }); -}); diff --git a/yarn-project/circuits.js/src/structs/kernel/previous_kernel_data.test.ts b/yarn-project/circuits.js/src/structs/kernel/previous_kernel_data.test.ts new file mode 100644 index 00000000000..9b0a9ea6fec --- /dev/null +++ b/yarn-project/circuits.js/src/structs/kernel/previous_kernel_data.test.ts @@ -0,0 +1,11 @@ +import { makePreviousKernelData } from '../../tests/factories.js'; +import { PreviousKernelData } from './previous_kernel_data.js'; + +describe('PreviousKernelData', () => { + it(`serializes to buffer and deserializes it back`, () => { + const expected = makePreviousKernelData(); + const buffer = expected.toBuffer(); + const res = PreviousKernelData.fromBuffer(buffer); + expect(res).toEqual(expected); + }); +}); diff --git a/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts b/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts index ae06b810543..0a02fa3d858 100644 --- a/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts +++ b/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts @@ -77,7 +77,6 @@ export class PrivateCallData { */ static getFields(fields: FieldsOf) { return [ - // NOTE: Must have same order as CPP. fields.callStackItem, fields.privateCallStack, fields.publicCallStack, diff --git a/yarn-project/circuits.js/src/structs/kernel/public_inputs.test.ts b/yarn-project/circuits.js/src/structs/kernel/public_inputs.test.ts new file mode 100644 index 00000000000..07f91a35619 --- /dev/null +++ b/yarn-project/circuits.js/src/structs/kernel/public_inputs.test.ts @@ -0,0 +1,11 @@ +import { makeKernelPublicInputs } from '../../tests/factories.js'; +import { KernelCircuitPublicInputs } from './public_inputs.js'; + +describe('KernelCircuitPublicInputs', () => { + it(`serializes to buffer and deserializes it back`, () => { + const expected = makeKernelPublicInputs(); + const buffer = expected.toBuffer(); + const res = KernelCircuitPublicInputs.fromBuffer(buffer); + expect(res).toEqual(expected); + }); +}); diff --git a/yarn-project/circuits.js/src/structs/kernel/public_inputs_final.test.ts b/yarn-project/circuits.js/src/structs/kernel/public_inputs_final.test.ts new file mode 100644 index 00000000000..d120196b7f1 --- /dev/null +++ b/yarn-project/circuits.js/src/structs/kernel/public_inputs_final.test.ts @@ -0,0 +1,11 @@ +import { makePrivateKernelPublicInputsFinal } from '../../tests/factories.js'; +import { PrivateKernelPublicInputsFinal } from './public_inputs_final.js'; + +describe('PrivateKernelPublicInputsFinal', () => { + it(`serializes to buffer and deserializes it back`, () => { + const expected = makePrivateKernelPublicInputsFinal(); + const buffer = expected.toBuffer(); + const res = PrivateKernelPublicInputsFinal.fromBuffer(buffer); + expect(res).toEqual(expected); + }); +}); diff --git a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.test.ts b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.test.ts index 3d3c5f0cbd6..a5f54760c11 100644 --- a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.test.ts +++ b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.test.ts @@ -1,12 +1,8 @@ -import { expectSerializeToMatchSnapshot } from '../tests/expectSerialize.js'; -import { makePrivateCircuitPublicInputs } from '../tests/factories.js'; +import { PrivateCircuitPublicInputs } from './private_circuit_public_inputs.js'; -describe('basic PrivateCircuitPublicInputs serialization', () => { - it(`serializes a trivial PrivateCircuitPublicInputs and prints it`, async () => { - // Test the data case: writing (mostly) sequential numbers - await expectSerializeToMatchSnapshot( - makePrivateCircuitPublicInputs().toBuffer(), - 'abis__test_roundtrip_serialize_private_circuit_public_inputs', - ); +describe('PrivateCircuitPublicInputs', () => { + it(`initializes an empty PrivateCircuitPublicInputs`, () => { + const target = PrivateCircuitPublicInputs.empty(); + expect(target.isEmpty()).toBe(true); }); }); diff --git a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts index 01624ad2398..11dd3c26d39 100644 --- a/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/private_circuit_public_inputs.ts @@ -175,7 +175,6 @@ export class PrivateCircuitPublicInputs { */ static getFields(fields: FieldsOf) { return [ - // NOTE: Must have same order as CPP. fields.callContext, fields.argsHash, fields.returnValues, diff --git a/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.test.ts b/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.test.ts index 7f65acd2fd2..531a766e2fe 100644 --- a/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.test.ts +++ b/yarn-project/circuits.js/src/structs/public_circuit_public_inputs.test.ts @@ -1,12 +1,8 @@ -import { expectSerializeToMatchSnapshot } from '../tests/expectSerialize.js'; -import { makePublicCircuitPublicInputs } from '../tests/factories.js'; +import { PublicCircuitPublicInputs } from './public_circuit_public_inputs.js'; -describe('basic PublicCircuitPublicInputs serialization', () => { - it(`serializes a trivial PublicCircuitPublicInputs and prints it`, async () => { - // Test the data case: writing (mostly) sequential numbers - await expectSerializeToMatchSnapshot( - makePublicCircuitPublicInputs().toBuffer(), - 'abis__test_roundtrip_serialize_public_circuit_public_inputs', - ); +describe('PublicCircuitPublicInputs', () => { + it(`initializes an empty PrivateCircuitPublicInputs`, () => { + const target = PublicCircuitPublicInputs.empty(); + expect(target.isEmpty()).toBe(true); }); }); diff --git a/yarn-project/circuits.js/src/structs/rollup/__snapshots__/base_rollup.test.ts.snap b/yarn-project/circuits.js/src/structs/rollup/__snapshots__/base_rollup.test.ts.snap deleted file mode 100644 index 15a2f622f3b..00000000000 --- a/yarn-project/circuits.js/src/structs/rollup/__snapshots__/base_rollup.test.ts.snap +++ /dev/null @@ -1,1161 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`structs/base_rollup serializes and prints BaseRollupInputs 1`] = ` -"kernel_data: [ public_inputs: -end: -aggregation_object: -P0: { 0x100, 0x101 } -P1: { 0x200, 0x201 } -public_inputs: [ - 0x102 - 0x103 - 0x104 - 0x105 -] -proof_witness_indices: [ 106 107 108 109 10a 10b ] -has_data: 0 - -read_requests: [ 0x180 0x181 0x182 0x183 0x184 0x185 0x186 0x187 0x188 0x189 0x18a 0x18b 0x18c 0x18d 0x18e 0x18f 0x190 0x191 0x192 0x193 0x194 0x195 0x196 0x197 0x198 0x199 0x19a 0x19b 0x19c 0x19d 0x19e 0x19f 0x1a0 0x1a1 0x1a2 0x1a3 0x1a4 0x1a5 0x1a6 0x1a7 0x1a8 0x1a9 0x1aa 0x1ab 0x1ac 0x1ad 0x1ae 0x1af 0x1b0 0x1b1 0x1b2 0x1b3 0x1b4 0x1b5 0x1b6 0x1b7 0x1b8 0x1b9 0x1ba 0x1bb 0x1bc 0x1bd 0x1be 0x1bf 0x1c0 0x1c1 0x1c2 0x1c3 0x1c4 0x1c5 0x1c6 0x1c7 0x1c8 0x1c9 0x1ca 0x1cb 0x1cc 0x1cd 0x1ce 0x1cf 0x1d0 0x1d1 0x1d2 0x1d3 0x1d4 0x1d5 0x1d6 0x1d7 0x1d8 0x1d9 0x1da 0x1db 0x1dc 0x1dd 0x1de 0x1df 0x1e0 0x1e1 0x1e2 0x1e3 0x1e4 0x1e5 0x1e6 0x1e7 0x1e8 0x1e9 0x1ea 0x1eb 0x1ec 0x1ed 0x1ee 0x1ef 0x1f0 0x1f1 0x1f2 0x1f3 0x1f4 0x1f5 0x1f6 0x1f7 0x1f8 0x1f9 0x1fa 0x1fb 0x1fc 0x1fd 0x1fe 0x1ff ] -pending_read_requests: [ 0x180 0x181 0x182 0x183 0x184 0x185 0x186 0x187 0x188 0x189 0x18a 0x18b 0x18c 0x18d 0x18e 0x18f 0x190 0x191 0x192 0x193 0x194 0x195 0x196 0x197 0x198 0x199 0x19a 0x19b 0x19c 0x19d 0x19e 0x19f 0x1a0 0x1a1 0x1a2 0x1a3 0x1a4 0x1a5 0x1a6 0x1a7 0x1a8 0x1a9 0x1aa 0x1ab 0x1ac 0x1ad 0x1ae 0x1af 0x1b0 0x1b1 0x1b2 0x1b3 0x1b4 0x1b5 0x1b6 0x1b7 0x1b8 0x1b9 0x1ba 0x1bb 0x1bc 0x1bd 0x1be 0x1bf 0x1c0 0x1c1 0x1c2 0x1c3 0x1c4 0x1c5 0x1c6 0x1c7 0x1c8 0x1c9 0x1ca 0x1cb 0x1cc 0x1cd 0x1ce 0x1cf 0x1d0 0x1d1 0x1d2 0x1d3 0x1d4 0x1d5 0x1d6 0x1d7 0x1d8 0x1d9 0x1da 0x1db 0x1dc 0x1dd 0x1de 0x1df 0x1e0 0x1e1 0x1e2 0x1e3 0x1e4 0x1e5 0x1e6 0x1e7 0x1e8 0x1e9 0x1ea 0x1eb 0x1ec 0x1ed 0x1ee 0x1ef 0x1f0 0x1f1 0x1f2 0x1f3 0x1f4 0x1f5 0x1f6 0x1f7 0x1f8 0x1f9 0x1fa 0x1fb 0x1fc 0x1fd 0x1fe 0x1ff ] -new_commitments: [ 0x200 0x201 0x202 0x203 0x204 0x205 0x206 0x207 0x208 0x209 0x20a 0x20b 0x20c 0x20d 0x20e 0x20f 0x210 0x211 0x212 0x213 0x214 0x215 0x216 0x217 0x218 0x219 0x21a 0x21b 0x21c 0x21d 0x21e 0x21f 0x220 0x221 0x222 0x223 0x224 0x225 0x226 0x227 0x228 0x229 0x22a 0x22b 0x22c 0x22d 0x22e 0x22f 0x230 0x231 0x232 0x233 0x234 0x235 0x236 0x237 0x238 0x239 0x23a 0x23b 0x23c 0x23d 0x23e 0x23f ] -new_nullifiers: [ 0x300 0x301 0x302 0x303 0x304 0x305 0x306 0x307 0x308 0x309 0x30a 0x30b 0x30c 0x30d 0x30e 0x30f 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f 0x320 0x321 0x322 0x323 0x324 0x325 0x326 0x327 0x328 0x329 0x32a 0x32b 0x32c 0x32d 0x32e 0x32f 0x330 0x331 0x332 0x333 0x334 0x335 0x336 0x337 0x338 0x339 0x33a 0x33b 0x33c 0x33d 0x33e 0x33f ] -nullified_commitments: [ 0x400 0x401 0x402 0x403 0x404 0x405 0x406 0x407 0x408 0x409 0x40a 0x40b 0x40c 0x40d 0x40e 0x40f 0x410 0x411 0x412 0x413 0x414 0x415 0x416 0x417 0x418 0x419 0x41a 0x41b 0x41c 0x41d 0x41e 0x41f 0x420 0x421 0x422 0x423 0x424 0x425 0x426 0x427 0x428 0x429 0x42a 0x42b 0x42c 0x42d 0x42e 0x42f 0x430 0x431 0x432 0x433 0x434 0x435 0x436 0x437 0x438 0x439 0x43a 0x43b 0x43c 0x43d 0x43e 0x43f ] -private_call_stack: [ 0x500 0x501 0x502 0x503 0x504 0x505 0x506 0x507 ] -public_call_stack: [ 0x600 0x601 0x602 0x603 0x604 0x605 0x606 0x607 ] -new_l2_to_l1_msgs: [ 0x700 0x701 ] -encrypted_logs_hash: [ 0x800 0x801 ] -unencrypted_logs_hash: [ 0x900 0x901 ] -encrypted_log_preimages_length: 0xa00 -unencrypted_log_preimages_length: 0xb00 -new_contracts: [ contract_address: 0xc00 -portal_contract_address: 0x101010101010101010101010101010101010101 -function_tree_root: 0xc02 - ] -optionally_revealed_data: [ call_stack_item_hash: 0xd00 -function_data: selector: -value: d01 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xd02 -portal_contract_address: 0x303030303030303030303030303030303030303 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xd01 -function_data: selector: -value: d02 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xd03 -portal_contract_address: 0x404040404040404040404040404040404040404 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xd02 -function_data: selector: -value: d03 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xd04 -portal_contract_address: 0x505050505050505050505050505050505050505 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xd03 -function_data: selector: -value: d04 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xd05 -portal_contract_address: 0x606060606060606060606060606060606060606 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - ] -public_data_update_requests: [ leaf_index: 0xe00 -old_value: 0xe01 -new_value: 0xe02 - leaf_index: 0xe01 -old_value: 0xe02 -new_value: 0xe03 - leaf_index: 0xe02 -old_value: 0xe03 -new_value: 0xe04 - leaf_index: 0xe03 -old_value: 0xe04 -new_value: 0xe05 - leaf_index: 0xe04 -old_value: 0xe05 -new_value: 0xe06 - leaf_index: 0xe05 -old_value: 0xe06 -new_value: 0xe07 - leaf_index: 0xe06 -old_value: 0xe07 -new_value: 0xe08 - leaf_index: 0xe07 -old_value: 0xe08 -new_value: 0xe09 - leaf_index: 0xe08 -old_value: 0xe09 -new_value: 0xe0a - leaf_index: 0xe09 -old_value: 0xe0a -new_value: 0xe0b - leaf_index: 0xe0a -old_value: 0xe0b -new_value: 0xe0c - leaf_index: 0xe0b -old_value: 0xe0c -new_value: 0xe0d - leaf_index: 0xe0c -old_value: 0xe0d -new_value: 0xe0e - leaf_index: 0xe0d -old_value: 0xe0e -new_value: 0xe0f - leaf_index: 0xe0e -old_value: 0xe0f -new_value: 0xe10 - leaf_index: 0xe0f -old_value: 0xe10 -new_value: 0xe11 - ] -public_data_reads: [ leaf_index: 0xf00 -value: 0xf01 - leaf_index: 0xf01 -value: 0xf02 - leaf_index: 0xf02 -value: 0xf03 - leaf_index: 0xf03 -value: 0xf04 - leaf_index: 0xf04 -value: 0xf05 - leaf_index: 0xf05 -value: 0xf06 - leaf_index: 0xf06 -value: 0xf07 - leaf_index: 0xf07 -value: 0xf08 - leaf_index: 0xf08 -value: 0xf09 - leaf_index: 0xf09 -value: 0xf0a - leaf_index: 0xf0a -value: 0xf0b - leaf_index: 0xf0b -value: 0xf0c - leaf_index: 0xf0c -value: 0xf0d - leaf_index: 0xf0d -value: 0xf0e - leaf_index: 0xf0e -value: 0xf0f - leaf_index: 0xf0f -value: 0xf10 - ] - -constants: -block_data: -note_hash_tree_root: 0x200 -nullifier_tree_root: 0x201 -contract_tree_root: 0x202 -l1_to_l2_messages_tree_root: 0x203 -blocks_tree_root: 0x204 -private_kernel_vk_tree_root: 0x205 -public_data_tree_root: 0x206 -global_variables_hash: 0x207 - -tx_context: -is_fee_payment_tx: 0 -is_rebate_payment_tx: 0 -is_contract_deployment_tx: 1 -contract_deployment_data: deployer_public_key: -x: 0x204 -y: 0x205 - -constructor_vk_hash: 0x205 -function_tree_root: 0x206 -contract_address_salt: 0x207 -portal_contract_address: 0x808080808080808080808080808080808080808 - -chain_id: 0x0 -version: 0x0 - - -is_private: 1 - -proof: [ 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ] -vk: key.circuit_type: 0 -key.circuit_size: 65 -key.num_public_inputs: 66 -key.commitments: [ - A: { 0x200, 0x300 } -] -key.contains_recursive_proof: 1 -key.recursive_proof_public_input_indices: [ 190 191 192 193 194 ] - -vk_index: 42 -vk_path: [ 0x1000 0x1001 0x1002 ] - public_inputs: -end: -aggregation_object: -P0: { 0x200, 0x201 } -P1: { 0x300, 0x301 } -public_inputs: [ - 0x202 - 0x203 - 0x204 - 0x205 -] -proof_witness_indices: [ 206 207 208 209 20a 20b ] -has_data: 0 - -read_requests: [ 0x280 0x281 0x282 0x283 0x284 0x285 0x286 0x287 0x288 0x289 0x28a 0x28b 0x28c 0x28d 0x28e 0x28f 0x290 0x291 0x292 0x293 0x294 0x295 0x296 0x297 0x298 0x299 0x29a 0x29b 0x29c 0x29d 0x29e 0x29f 0x2a0 0x2a1 0x2a2 0x2a3 0x2a4 0x2a5 0x2a6 0x2a7 0x2a8 0x2a9 0x2aa 0x2ab 0x2ac 0x2ad 0x2ae 0x2af 0x2b0 0x2b1 0x2b2 0x2b3 0x2b4 0x2b5 0x2b6 0x2b7 0x2b8 0x2b9 0x2ba 0x2bb 0x2bc 0x2bd 0x2be 0x2bf 0x2c0 0x2c1 0x2c2 0x2c3 0x2c4 0x2c5 0x2c6 0x2c7 0x2c8 0x2c9 0x2ca 0x2cb 0x2cc 0x2cd 0x2ce 0x2cf 0x2d0 0x2d1 0x2d2 0x2d3 0x2d4 0x2d5 0x2d6 0x2d7 0x2d8 0x2d9 0x2da 0x2db 0x2dc 0x2dd 0x2de 0x2df 0x2e0 0x2e1 0x2e2 0x2e3 0x2e4 0x2e5 0x2e6 0x2e7 0x2e8 0x2e9 0x2ea 0x2eb 0x2ec 0x2ed 0x2ee 0x2ef 0x2f0 0x2f1 0x2f2 0x2f3 0x2f4 0x2f5 0x2f6 0x2f7 0x2f8 0x2f9 0x2fa 0x2fb 0x2fc 0x2fd 0x2fe 0x2ff ] -pending_read_requests: [ 0x280 0x281 0x282 0x283 0x284 0x285 0x286 0x287 0x288 0x289 0x28a 0x28b 0x28c 0x28d 0x28e 0x28f 0x290 0x291 0x292 0x293 0x294 0x295 0x296 0x297 0x298 0x299 0x29a 0x29b 0x29c 0x29d 0x29e 0x29f 0x2a0 0x2a1 0x2a2 0x2a3 0x2a4 0x2a5 0x2a6 0x2a7 0x2a8 0x2a9 0x2aa 0x2ab 0x2ac 0x2ad 0x2ae 0x2af 0x2b0 0x2b1 0x2b2 0x2b3 0x2b4 0x2b5 0x2b6 0x2b7 0x2b8 0x2b9 0x2ba 0x2bb 0x2bc 0x2bd 0x2be 0x2bf 0x2c0 0x2c1 0x2c2 0x2c3 0x2c4 0x2c5 0x2c6 0x2c7 0x2c8 0x2c9 0x2ca 0x2cb 0x2cc 0x2cd 0x2ce 0x2cf 0x2d0 0x2d1 0x2d2 0x2d3 0x2d4 0x2d5 0x2d6 0x2d7 0x2d8 0x2d9 0x2da 0x2db 0x2dc 0x2dd 0x2de 0x2df 0x2e0 0x2e1 0x2e2 0x2e3 0x2e4 0x2e5 0x2e6 0x2e7 0x2e8 0x2e9 0x2ea 0x2eb 0x2ec 0x2ed 0x2ee 0x2ef 0x2f0 0x2f1 0x2f2 0x2f3 0x2f4 0x2f5 0x2f6 0x2f7 0x2f8 0x2f9 0x2fa 0x2fb 0x2fc 0x2fd 0x2fe 0x2ff ] -new_commitments: [ 0x300 0x301 0x302 0x303 0x304 0x305 0x306 0x307 0x308 0x309 0x30a 0x30b 0x30c 0x30d 0x30e 0x30f 0x310 0x311 0x312 0x313 0x314 0x315 0x316 0x317 0x318 0x319 0x31a 0x31b 0x31c 0x31d 0x31e 0x31f 0x320 0x321 0x322 0x323 0x324 0x325 0x326 0x327 0x328 0x329 0x32a 0x32b 0x32c 0x32d 0x32e 0x32f 0x330 0x331 0x332 0x333 0x334 0x335 0x336 0x337 0x338 0x339 0x33a 0x33b 0x33c 0x33d 0x33e 0x33f ] -new_nullifiers: [ 0x400 0x401 0x402 0x403 0x404 0x405 0x406 0x407 0x408 0x409 0x40a 0x40b 0x40c 0x40d 0x40e 0x40f 0x410 0x411 0x412 0x413 0x414 0x415 0x416 0x417 0x418 0x419 0x41a 0x41b 0x41c 0x41d 0x41e 0x41f 0x420 0x421 0x422 0x423 0x424 0x425 0x426 0x427 0x428 0x429 0x42a 0x42b 0x42c 0x42d 0x42e 0x42f 0x430 0x431 0x432 0x433 0x434 0x435 0x436 0x437 0x438 0x439 0x43a 0x43b 0x43c 0x43d 0x43e 0x43f ] -nullified_commitments: [ 0x500 0x501 0x502 0x503 0x504 0x505 0x506 0x507 0x508 0x509 0x50a 0x50b 0x50c 0x50d 0x50e 0x50f 0x510 0x511 0x512 0x513 0x514 0x515 0x516 0x517 0x518 0x519 0x51a 0x51b 0x51c 0x51d 0x51e 0x51f 0x520 0x521 0x522 0x523 0x524 0x525 0x526 0x527 0x528 0x529 0x52a 0x52b 0x52c 0x52d 0x52e 0x52f 0x530 0x531 0x532 0x533 0x534 0x535 0x536 0x537 0x538 0x539 0x53a 0x53b 0x53c 0x53d 0x53e 0x53f ] -private_call_stack: [ 0x600 0x601 0x602 0x603 0x604 0x605 0x606 0x607 ] -public_call_stack: [ 0x700 0x701 0x702 0x703 0x704 0x705 0x706 0x707 ] -new_l2_to_l1_msgs: [ 0x800 0x801 ] -encrypted_logs_hash: [ 0x900 0x901 ] -unencrypted_logs_hash: [ 0xa00 0xa01 ] -encrypted_log_preimages_length: 0xb00 -unencrypted_log_preimages_length: 0xc00 -new_contracts: [ contract_address: 0xd00 -portal_contract_address: 0x101010101010101010101010101010101010101 -function_tree_root: 0xd02 - ] -optionally_revealed_data: [ call_stack_item_hash: 0xe00 -function_data: selector: -value: e01 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xe02 -portal_contract_address: 0x303030303030303030303030303030303030303 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xe01 -function_data: selector: -value: e02 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xe03 -portal_contract_address: 0x404040404040404040404040404040404040404 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xe02 -function_data: selector: -value: e03 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xe04 -portal_contract_address: 0x505050505050505050505050505050505050505 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - call_stack_item_hash: 0xe03 -function_data: selector: -value: e04 - -is_internal: 0 -is_private: 1 -is_constructor: 1 - -vk_hash: 0xe05 -portal_contract_address: 0x606060606060606060606060606060606060606 -pay_fee_from_l1: 1 -pay_fee_from_public_l2: 0 -called_from_l1: 1 -called_from_public_l2: 0 - ] -public_data_update_requests: [ leaf_index: 0xf00 -old_value: 0xf01 -new_value: 0xf02 - leaf_index: 0xf01 -old_value: 0xf02 -new_value: 0xf03 - leaf_index: 0xf02 -old_value: 0xf03 -new_value: 0xf04 - leaf_index: 0xf03 -old_value: 0xf04 -new_value: 0xf05 - leaf_index: 0xf04 -old_value: 0xf05 -new_value: 0xf06 - leaf_index: 0xf05 -old_value: 0xf06 -new_value: 0xf07 - leaf_index: 0xf06 -old_value: 0xf07 -new_value: 0xf08 - leaf_index: 0xf07 -old_value: 0xf08 -new_value: 0xf09 - leaf_index: 0xf08 -old_value: 0xf09 -new_value: 0xf0a - leaf_index: 0xf09 -old_value: 0xf0a -new_value: 0xf0b - leaf_index: 0xf0a -old_value: 0xf0b -new_value: 0xf0c - leaf_index: 0xf0b -old_value: 0xf0c -new_value: 0xf0d - leaf_index: 0xf0c -old_value: 0xf0d -new_value: 0xf0e - leaf_index: 0xf0d -old_value: 0xf0e -new_value: 0xf0f - leaf_index: 0xf0e -old_value: 0xf0f -new_value: 0xf10 - leaf_index: 0xf0f -old_value: 0xf10 -new_value: 0xf11 - ] -public_data_reads: [ leaf_index: 0x1000 -value: 0x1001 - leaf_index: 0x1001 -value: 0x1002 - leaf_index: 0x1002 -value: 0x1003 - leaf_index: 0x1003 -value: 0x1004 - leaf_index: 0x1004 -value: 0x1005 - leaf_index: 0x1005 -value: 0x1006 - leaf_index: 0x1006 -value: 0x1007 - leaf_index: 0x1007 -value: 0x1008 - leaf_index: 0x1008 -value: 0x1009 - leaf_index: 0x1009 -value: 0x100a - leaf_index: 0x100a -value: 0x100b - leaf_index: 0x100b -value: 0x100c - leaf_index: 0x100c -value: 0x100d - leaf_index: 0x100d -value: 0x100e - leaf_index: 0x100e -value: 0x100f - leaf_index: 0x100f -value: 0x1010 - ] - -constants: -block_data: -note_hash_tree_root: 0x300 -nullifier_tree_root: 0x301 -contract_tree_root: 0x302 -l1_to_l2_messages_tree_root: 0x303 -blocks_tree_root: 0x304 -private_kernel_vk_tree_root: 0x305 -public_data_tree_root: 0x306 -global_variables_hash: 0x307 - -tx_context: -is_fee_payment_tx: 0 -is_rebate_payment_tx: 0 -is_contract_deployment_tx: 1 -contract_deployment_data: deployer_public_key: -x: 0x304 -y: 0x305 - -constructor_vk_hash: 0x305 -function_tree_root: 0x306 -contract_address_salt: 0x307 -portal_contract_address: 0x808080808080808080808080808080808080808 - -chain_id: 0x0 -version: 0x0 - - -is_private: 1 - -proof: [ 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ] -vk: key.circuit_type: 0 -key.circuit_size: 65 -key.num_public_inputs: 66 -key.commitments: [ - A: { 0x200, 0x300 } -] -key.contains_recursive_proof: 1 -key.recursive_proof_public_input_indices: [ 190 191 192 193 194 ] - -vk_index: 42 -vk_path: [ 0x1000 0x1001 0x1002 ] - ] -start_note_hash_tree_snapshot: root: 0x100 -next_available_leaf_index: 256 - -start_nullifier_tree_snapshot: root: 0x200 -next_available_leaf_index: 512 - -start_contract_tree_snapshot: root: 0x300 -next_available_leaf_index: 768 - -start_public_data_tree_root: 0x400 -start_historic_blocks_tree_snapshot: root: 0x500 -next_available_leaf_index: 1280 - -low_nullifier_leaf_preimages: [ leaf_value: 0x1000 -next_value: 0x1100 -next_index: 1200 - leaf_value: 0x1001 -next_value: 0x1101 -next_index: 1201 - leaf_value: 0x1002 -next_value: 0x1102 -next_index: 1202 - leaf_value: 0x1003 -next_value: 0x1103 -next_index: 1203 - leaf_value: 0x1004 -next_value: 0x1104 -next_index: 1204 - leaf_value: 0x1005 -next_value: 0x1105 -next_index: 1205 - leaf_value: 0x1006 -next_value: 0x1106 -next_index: 1206 - leaf_value: 0x1007 -next_value: 0x1107 -next_index: 1207 - leaf_value: 0x1008 -next_value: 0x1108 -next_index: 1208 - leaf_value: 0x1009 -next_value: 0x1109 -next_index: 1209 - leaf_value: 0x100a -next_value: 0x110a -next_index: 120a - leaf_value: 0x100b -next_value: 0x110b -next_index: 120b - leaf_value: 0x100c -next_value: 0x110c -next_index: 120c - leaf_value: 0x100d -next_value: 0x110d -next_index: 120d - leaf_value: 0x100e -next_value: 0x110e -next_index: 120e - leaf_value: 0x100f -next_value: 0x110f -next_index: 120f - leaf_value: 0x1010 -next_value: 0x1110 -next_index: 1210 - leaf_value: 0x1011 -next_value: 0x1111 -next_index: 1211 - leaf_value: 0x1012 -next_value: 0x1112 -next_index: 1212 - leaf_value: 0x1013 -next_value: 0x1113 -next_index: 1213 - leaf_value: 0x1014 -next_value: 0x1114 -next_index: 1214 - leaf_value: 0x1015 -next_value: 0x1115 -next_index: 1215 - leaf_value: 0x1016 -next_value: 0x1116 -next_index: 1216 - leaf_value: 0x1017 -next_value: 0x1117 -next_index: 1217 - leaf_value: 0x1018 -next_value: 0x1118 -next_index: 1218 - leaf_value: 0x1019 -next_value: 0x1119 -next_index: 1219 - leaf_value: 0x101a -next_value: 0x111a -next_index: 121a - leaf_value: 0x101b -next_value: 0x111b -next_index: 121b - leaf_value: 0x101c -next_value: 0x111c -next_index: 121c - leaf_value: 0x101d -next_value: 0x111d -next_index: 121d - leaf_value: 0x101e -next_value: 0x111e -next_index: 121e - leaf_value: 0x101f -next_value: 0x111f -next_index: 121f - leaf_value: 0x1020 -next_value: 0x1120 -next_index: 1220 - leaf_value: 0x1021 -next_value: 0x1121 -next_index: 1221 - leaf_value: 0x1022 -next_value: 0x1122 -next_index: 1222 - leaf_value: 0x1023 -next_value: 0x1123 -next_index: 1223 - leaf_value: 0x1024 -next_value: 0x1124 -next_index: 1224 - leaf_value: 0x1025 -next_value: 0x1125 -next_index: 1225 - leaf_value: 0x1026 -next_value: 0x1126 -next_index: 1226 - leaf_value: 0x1027 -next_value: 0x1127 -next_index: 1227 - leaf_value: 0x1028 -next_value: 0x1128 -next_index: 1228 - leaf_value: 0x1029 -next_value: 0x1129 -next_index: 1229 - leaf_value: 0x102a -next_value: 0x112a -next_index: 122a - leaf_value: 0x102b -next_value: 0x112b -next_index: 122b - leaf_value: 0x102c -next_value: 0x112c -next_index: 122c - leaf_value: 0x102d -next_value: 0x112d -next_index: 122d - leaf_value: 0x102e -next_value: 0x112e -next_index: 122e - leaf_value: 0x102f -next_value: 0x112f -next_index: 122f - leaf_value: 0x1030 -next_value: 0x1130 -next_index: 1230 - leaf_value: 0x1031 -next_value: 0x1131 -next_index: 1231 - leaf_value: 0x1032 -next_value: 0x1132 -next_index: 1232 - leaf_value: 0x1033 -next_value: 0x1133 -next_index: 1233 - leaf_value: 0x1034 -next_value: 0x1134 -next_index: 1234 - leaf_value: 0x1035 -next_value: 0x1135 -next_index: 1235 - leaf_value: 0x1036 -next_value: 0x1136 -next_index: 1236 - leaf_value: 0x1037 -next_value: 0x1137 -next_index: 1237 - leaf_value: 0x1038 -next_value: 0x1138 -next_index: 1238 - leaf_value: 0x1039 -next_value: 0x1139 -next_index: 1239 - leaf_value: 0x103a -next_value: 0x113a -next_index: 123a - leaf_value: 0x103b -next_value: 0x113b -next_index: 123b - leaf_value: 0x103c -next_value: 0x113c -next_index: 123c - leaf_value: 0x103d -next_value: 0x113d -next_index: 123d - leaf_value: 0x103e -next_value: 0x113e -next_index: 123e - leaf_value: 0x103f -next_value: 0x113f -next_index: 123f - leaf_value: 0x1040 -next_value: 0x1140 -next_index: 1240 - leaf_value: 0x1041 -next_value: 0x1141 -next_index: 1241 - leaf_value: 0x1042 -next_value: 0x1142 -next_index: 1242 - leaf_value: 0x1043 -next_value: 0x1143 -next_index: 1243 - leaf_value: 0x1044 -next_value: 0x1144 -next_index: 1244 - leaf_value: 0x1045 -next_value: 0x1145 -next_index: 1245 - leaf_value: 0x1046 -next_value: 0x1146 -next_index: 1246 - leaf_value: 0x1047 -next_value: 0x1147 -next_index: 1247 - leaf_value: 0x1048 -next_value: 0x1148 -next_index: 1248 - leaf_value: 0x1049 -next_value: 0x1149 -next_index: 1249 - leaf_value: 0x104a -next_value: 0x114a -next_index: 124a - leaf_value: 0x104b -next_value: 0x114b -next_index: 124b - leaf_value: 0x104c -next_value: 0x114c -next_index: 124c - leaf_value: 0x104d -next_value: 0x114d -next_index: 124d - leaf_value: 0x104e -next_value: 0x114e -next_index: 124e - leaf_value: 0x104f -next_value: 0x114f -next_index: 124f - leaf_value: 0x1050 -next_value: 0x1150 -next_index: 1250 - leaf_value: 0x1051 -next_value: 0x1151 -next_index: 1251 - leaf_value: 0x1052 -next_value: 0x1152 -next_index: 1252 - leaf_value: 0x1053 -next_value: 0x1153 -next_index: 1253 - leaf_value: 0x1054 -next_value: 0x1154 -next_index: 1254 - leaf_value: 0x1055 -next_value: 0x1155 -next_index: 1255 - leaf_value: 0x1056 -next_value: 0x1156 -next_index: 1256 - leaf_value: 0x1057 -next_value: 0x1157 -next_index: 1257 - leaf_value: 0x1058 -next_value: 0x1158 -next_index: 1258 - leaf_value: 0x1059 -next_value: 0x1159 -next_index: 1259 - leaf_value: 0x105a -next_value: 0x115a -next_index: 125a - leaf_value: 0x105b -next_value: 0x115b -next_index: 125b - leaf_value: 0x105c -next_value: 0x115c -next_index: 125c - leaf_value: 0x105d -next_value: 0x115d -next_index: 125d - leaf_value: 0x105e -next_value: 0x115e -next_index: 125e - leaf_value: 0x105f -next_value: 0x115f -next_index: 125f - leaf_value: 0x1060 -next_value: 0x1160 -next_index: 1260 - leaf_value: 0x1061 -next_value: 0x1161 -next_index: 1261 - leaf_value: 0x1062 -next_value: 0x1162 -next_index: 1262 - leaf_value: 0x1063 -next_value: 0x1163 -next_index: 1263 - leaf_value: 0x1064 -next_value: 0x1164 -next_index: 1264 - leaf_value: 0x1065 -next_value: 0x1165 -next_index: 1265 - leaf_value: 0x1066 -next_value: 0x1166 -next_index: 1266 - leaf_value: 0x1067 -next_value: 0x1167 -next_index: 1267 - leaf_value: 0x1068 -next_value: 0x1168 -next_index: 1268 - leaf_value: 0x1069 -next_value: 0x1169 -next_index: 1269 - leaf_value: 0x106a -next_value: 0x116a -next_index: 126a - leaf_value: 0x106b -next_value: 0x116b -next_index: 126b - leaf_value: 0x106c -next_value: 0x116c -next_index: 126c - leaf_value: 0x106d -next_value: 0x116d -next_index: 126d - leaf_value: 0x106e -next_value: 0x116e -next_index: 126e - leaf_value: 0x106f -next_value: 0x116f -next_index: 126f - leaf_value: 0x1070 -next_value: 0x1170 -next_index: 1270 - leaf_value: 0x1071 -next_value: 0x1171 -next_index: 1271 - leaf_value: 0x1072 -next_value: 0x1172 -next_index: 1272 - leaf_value: 0x1073 -next_value: 0x1173 -next_index: 1273 - leaf_value: 0x1074 -next_value: 0x1174 -next_index: 1274 - leaf_value: 0x1075 -next_value: 0x1175 -next_index: 1275 - leaf_value: 0x1076 -next_value: 0x1176 -next_index: 1276 - leaf_value: 0x1077 -next_value: 0x1177 -next_index: 1277 - leaf_value: 0x1078 -next_value: 0x1178 -next_index: 1278 - leaf_value: 0x1079 -next_value: 0x1179 -next_index: 1279 - leaf_value: 0x107a -next_value: 0x117a -next_index: 127a - leaf_value: 0x107b -next_value: 0x117b -next_index: 127b - leaf_value: 0x107c -next_value: 0x117c -next_index: 127c - leaf_value: 0x107d -next_value: 0x117d -next_index: 127d - leaf_value: 0x107e -next_value: 0x117e -next_index: 127e - leaf_value: 0x107f -next_value: 0x117f -next_index: 127f - ] -low_nullifier_membership_witness: [ leaf_index: 0x2000 -sibling_path: [ 0x2000 0x2001 0x2002 0x2003 0x2004 0x2005 0x2006 0x2007 0x2008 0x2009 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 ] - leaf_index: 0x2001 -sibling_path: [ 0x2001 0x2002 0x2003 0x2004 0x2005 0x2006 0x2007 0x2008 0x2009 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 ] - leaf_index: 0x2002 -sibling_path: [ 0x2002 0x2003 0x2004 0x2005 0x2006 0x2007 0x2008 0x2009 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 ] - leaf_index: 0x2003 -sibling_path: [ 0x2003 0x2004 0x2005 0x2006 0x2007 0x2008 0x2009 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 ] - leaf_index: 0x2004 -sibling_path: [ 0x2004 0x2005 0x2006 0x2007 0x2008 0x2009 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 ] - leaf_index: 0x2005 -sibling_path: [ 0x2005 0x2006 0x2007 0x2008 0x2009 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 ] - leaf_index: 0x2006 -sibling_path: [ 0x2006 0x2007 0x2008 0x2009 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 ] - leaf_index: 0x2007 -sibling_path: [ 0x2007 0x2008 0x2009 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a ] - leaf_index: 0x2008 -sibling_path: [ 0x2008 0x2009 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b ] - leaf_index: 0x2009 -sibling_path: [ 0x2009 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c ] - leaf_index: 0x200a -sibling_path: [ 0x200a 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d ] - leaf_index: 0x200b -sibling_path: [ 0x200b 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e ] - leaf_index: 0x200c -sibling_path: [ 0x200c 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f ] - leaf_index: 0x200d -sibling_path: [ 0x200d 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 ] - leaf_index: 0x200e -sibling_path: [ 0x200e 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 ] - leaf_index: 0x200f -sibling_path: [ 0x200f 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 ] - leaf_index: 0x2010 -sibling_path: [ 0x2010 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 ] - leaf_index: 0x2011 -sibling_path: [ 0x2011 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 ] - leaf_index: 0x2012 -sibling_path: [ 0x2012 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 ] - leaf_index: 0x2013 -sibling_path: [ 0x2013 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 ] - leaf_index: 0x2014 -sibling_path: [ 0x2014 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 ] - leaf_index: 0x2015 -sibling_path: [ 0x2015 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 ] - leaf_index: 0x2016 -sibling_path: [ 0x2016 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 ] - leaf_index: 0x2017 -sibling_path: [ 0x2017 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a ] - leaf_index: 0x2018 -sibling_path: [ 0x2018 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b ] - leaf_index: 0x2019 -sibling_path: [ 0x2019 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c ] - leaf_index: 0x201a -sibling_path: [ 0x201a 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d ] - leaf_index: 0x201b -sibling_path: [ 0x201b 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e ] - leaf_index: 0x201c -sibling_path: [ 0x201c 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f ] - leaf_index: 0x201d -sibling_path: [ 0x201d 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 ] - leaf_index: 0x201e -sibling_path: [ 0x201e 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 ] - leaf_index: 0x201f -sibling_path: [ 0x201f 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 ] - leaf_index: 0x2020 -sibling_path: [ 0x2020 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 ] - leaf_index: 0x2021 -sibling_path: [ 0x2021 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 ] - leaf_index: 0x2022 -sibling_path: [ 0x2022 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 ] - leaf_index: 0x2023 -sibling_path: [ 0x2023 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 ] - leaf_index: 0x2024 -sibling_path: [ 0x2024 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 ] - leaf_index: 0x2025 -sibling_path: [ 0x2025 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 ] - leaf_index: 0x2026 -sibling_path: [ 0x2026 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 ] - leaf_index: 0x2027 -sibling_path: [ 0x2027 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a ] - leaf_index: 0x2028 -sibling_path: [ 0x2028 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b ] - leaf_index: 0x2029 -sibling_path: [ 0x2029 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c ] - leaf_index: 0x202a -sibling_path: [ 0x202a 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d ] - leaf_index: 0x202b -sibling_path: [ 0x202b 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e ] - leaf_index: 0x202c -sibling_path: [ 0x202c 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f ] - leaf_index: 0x202d -sibling_path: [ 0x202d 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 ] - leaf_index: 0x202e -sibling_path: [ 0x202e 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 ] - leaf_index: 0x202f -sibling_path: [ 0x202f 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 ] - leaf_index: 0x2030 -sibling_path: [ 0x2030 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 ] - leaf_index: 0x2031 -sibling_path: [ 0x2031 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 ] - leaf_index: 0x2032 -sibling_path: [ 0x2032 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 ] - leaf_index: 0x2033 -sibling_path: [ 0x2033 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 ] - leaf_index: 0x2034 -sibling_path: [ 0x2034 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 ] - leaf_index: 0x2035 -sibling_path: [ 0x2035 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 ] - leaf_index: 0x2036 -sibling_path: [ 0x2036 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 ] - leaf_index: 0x2037 -sibling_path: [ 0x2037 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a ] - leaf_index: 0x2038 -sibling_path: [ 0x2038 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b ] - leaf_index: 0x2039 -sibling_path: [ 0x2039 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c ] - leaf_index: 0x203a -sibling_path: [ 0x203a 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d ] - leaf_index: 0x203b -sibling_path: [ 0x203b 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e ] - leaf_index: 0x203c -sibling_path: [ 0x203c 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f ] - leaf_index: 0x203d -sibling_path: [ 0x203d 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 ] - leaf_index: 0x203e -sibling_path: [ 0x203e 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 ] - leaf_index: 0x203f -sibling_path: [ 0x203f 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 ] - leaf_index: 0x2040 -sibling_path: [ 0x2040 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 ] - leaf_index: 0x2041 -sibling_path: [ 0x2041 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 ] - leaf_index: 0x2042 -sibling_path: [ 0x2042 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 ] - leaf_index: 0x2043 -sibling_path: [ 0x2043 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 ] - leaf_index: 0x2044 -sibling_path: [ 0x2044 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 ] - leaf_index: 0x2045 -sibling_path: [ 0x2045 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 ] - leaf_index: 0x2046 -sibling_path: [ 0x2046 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 ] - leaf_index: 0x2047 -sibling_path: [ 0x2047 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a ] - leaf_index: 0x2048 -sibling_path: [ 0x2048 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b ] - leaf_index: 0x2049 -sibling_path: [ 0x2049 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c ] - leaf_index: 0x204a -sibling_path: [ 0x204a 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d ] - leaf_index: 0x204b -sibling_path: [ 0x204b 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e ] - leaf_index: 0x204c -sibling_path: [ 0x204c 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f ] - leaf_index: 0x204d -sibling_path: [ 0x204d 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 ] - leaf_index: 0x204e -sibling_path: [ 0x204e 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 ] - leaf_index: 0x204f -sibling_path: [ 0x204f 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 ] - leaf_index: 0x2050 -sibling_path: [ 0x2050 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 ] - leaf_index: 0x2051 -sibling_path: [ 0x2051 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 ] - leaf_index: 0x2052 -sibling_path: [ 0x2052 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 ] - leaf_index: 0x2053 -sibling_path: [ 0x2053 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 ] - leaf_index: 0x2054 -sibling_path: [ 0x2054 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 ] - leaf_index: 0x2055 -sibling_path: [ 0x2055 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 ] - leaf_index: 0x2056 -sibling_path: [ 0x2056 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 ] - leaf_index: 0x2057 -sibling_path: [ 0x2057 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a ] - leaf_index: 0x2058 -sibling_path: [ 0x2058 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b ] - leaf_index: 0x2059 -sibling_path: [ 0x2059 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c ] - leaf_index: 0x205a -sibling_path: [ 0x205a 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d ] - leaf_index: 0x205b -sibling_path: [ 0x205b 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e ] - leaf_index: 0x205c -sibling_path: [ 0x205c 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f ] - leaf_index: 0x205d -sibling_path: [ 0x205d 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 ] - leaf_index: 0x205e -sibling_path: [ 0x205e 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 ] - leaf_index: 0x205f -sibling_path: [ 0x205f 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 ] - leaf_index: 0x2060 -sibling_path: [ 0x2060 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 ] - leaf_index: 0x2061 -sibling_path: [ 0x2061 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 ] - leaf_index: 0x2062 -sibling_path: [ 0x2062 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 ] - leaf_index: 0x2063 -sibling_path: [ 0x2063 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 ] - leaf_index: 0x2064 -sibling_path: [ 0x2064 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 ] - leaf_index: 0x2065 -sibling_path: [ 0x2065 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 ] - leaf_index: 0x2066 -sibling_path: [ 0x2066 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 ] - leaf_index: 0x2067 -sibling_path: [ 0x2067 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a ] - leaf_index: 0x2068 -sibling_path: [ 0x2068 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b ] - leaf_index: 0x2069 -sibling_path: [ 0x2069 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c ] - leaf_index: 0x206a -sibling_path: [ 0x206a 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d ] - leaf_index: 0x206b -sibling_path: [ 0x206b 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e ] - leaf_index: 0x206c -sibling_path: [ 0x206c 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f ] - leaf_index: 0x206d -sibling_path: [ 0x206d 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 ] - leaf_index: 0x206e -sibling_path: [ 0x206e 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 ] - leaf_index: 0x206f -sibling_path: [ 0x206f 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 ] - leaf_index: 0x2070 -sibling_path: [ 0x2070 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 ] - leaf_index: 0x2071 -sibling_path: [ 0x2071 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 ] - leaf_index: 0x2072 -sibling_path: [ 0x2072 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 ] - leaf_index: 0x2073 -sibling_path: [ 0x2073 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 ] - leaf_index: 0x2074 -sibling_path: [ 0x2074 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 ] - leaf_index: 0x2075 -sibling_path: [ 0x2075 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 ] - leaf_index: 0x2076 -sibling_path: [ 0x2076 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 0x2089 ] - leaf_index: 0x2077 -sibling_path: [ 0x2077 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 0x2089 0x208a ] - leaf_index: 0x2078 -sibling_path: [ 0x2078 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 0x2089 0x208a 0x208b ] - leaf_index: 0x2079 -sibling_path: [ 0x2079 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 0x2089 0x208a 0x208b 0x208c ] - leaf_index: 0x207a -sibling_path: [ 0x207a 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 0x2089 0x208a 0x208b 0x208c 0x208d ] - leaf_index: 0x207b -sibling_path: [ 0x207b 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 0x2089 0x208a 0x208b 0x208c 0x208d 0x208e ] - leaf_index: 0x207c -sibling_path: [ 0x207c 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 0x2089 0x208a 0x208b 0x208c 0x208d 0x208e 0x208f ] - leaf_index: 0x207d -sibling_path: [ 0x207d 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 0x2089 0x208a 0x208b 0x208c 0x208d 0x208e 0x208f 0x2090 ] - leaf_index: 0x207e -sibling_path: [ 0x207e 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 0x2089 0x208a 0x208b 0x208c 0x208d 0x208e 0x208f 0x2090 0x2091 ] - leaf_index: 0x207f -sibling_path: [ 0x207f 0x2080 0x2081 0x2082 0x2083 0x2084 0x2085 0x2086 0x2087 0x2088 0x2089 0x208a 0x208b 0x208c 0x208d 0x208e 0x208f 0x2090 0x2091 0x2092 ] - ] -new_commitments_subtree_sibling_path: [ 0x3000 0x3001 0x3002 0x3003 0x3004 0x3005 0x3006 0x3007 0x3008 0x3009 0x300a 0x300b 0x300c 0x300d 0x300e 0x300f 0x3010 0x3011 0x3012 0x3013 0x3014 0x3015 0x3016 0x3017 0x3018 ] -new_nullifiers_subtree_sibling_path: [ 0x4000 0x4001 0x4002 0x4003 0x4004 0x4005 0x4006 0x4007 0x4008 0x4009 0x400a 0x400b 0x400c ] -new_contracts_subtree_sibling_path: [ 0x5000 0x5001 0x5002 0x5003 0x5004 0x5005 0x5006 0x5007 0x5008 0x5009 0x500a 0x500b 0x500c 0x500d 0x500e ] -new_public_data_update_requests_sibling_paths: [ [ 0x6000 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd ] [ 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe ] [ 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff ] [ 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 ] [ 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 ] [ 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 ] [ 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 ] [ 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 ] [ 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 ] [ 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 ] [ 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 ] [ 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 ] [ 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 ] [ 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a ] [ 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b ] [ 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c ] [ 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d ] [ 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e ] [ 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f ] [ 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 ] [ 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 ] [ 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 ] [ 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 ] [ 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 ] [ 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 ] [ 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 ] [ 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 ] [ 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 0x6118 ] [ 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 0x6118 0x6119 ] [ 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 0x6118 0x6119 0x611a ] [ 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 0x6118 0x6119 0x611a 0x611b ] [ 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 0x6118 0x6119 0x611a 0x611b 0x611c ] ] -new_public_data_reads_sibling_paths: [ [ 0x6000 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd ] [ 0x6001 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe ] [ 0x6002 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff ] [ 0x6003 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 ] [ 0x6004 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 ] [ 0x6005 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 ] [ 0x6006 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 ] [ 0x6007 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 ] [ 0x6008 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 ] [ 0x6009 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 ] [ 0x600a 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 ] [ 0x600b 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 ] [ 0x600c 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 ] [ 0x600d 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a ] [ 0x600e 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b ] [ 0x600f 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c ] [ 0x6010 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d ] [ 0x6011 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e ] [ 0x6012 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f ] [ 0x6013 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 ] [ 0x6014 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 ] [ 0x6015 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 ] [ 0x6016 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 ] [ 0x6017 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 ] [ 0x6018 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 ] [ 0x6019 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 ] [ 0x601a 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 ] [ 0x601b 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 0x6118 ] [ 0x601c 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 0x6118 0x6119 ] [ 0x601d 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 0x6118 0x6119 0x611a ] [ 0x601e 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 0x6118 0x6119 0x611a 0x611b ] [ 0x601f 0x6020 0x6021 0x6022 0x6023 0x6024 0x6025 0x6026 0x6027 0x6028 0x6029 0x602a 0x602b 0x602c 0x602d 0x602e 0x602f 0x6030 0x6031 0x6032 0x6033 0x6034 0x6035 0x6036 0x6037 0x6038 0x6039 0x603a 0x603b 0x603c 0x603d 0x603e 0x603f 0x6040 0x6041 0x6042 0x6043 0x6044 0x6045 0x6046 0x6047 0x6048 0x6049 0x604a 0x604b 0x604c 0x604d 0x604e 0x604f 0x6050 0x6051 0x6052 0x6053 0x6054 0x6055 0x6056 0x6057 0x6058 0x6059 0x605a 0x605b 0x605c 0x605d 0x605e 0x605f 0x6060 0x6061 0x6062 0x6063 0x6064 0x6065 0x6066 0x6067 0x6068 0x6069 0x606a 0x606b 0x606c 0x606d 0x606e 0x606f 0x6070 0x6071 0x6072 0x6073 0x6074 0x6075 0x6076 0x6077 0x6078 0x6079 0x607a 0x607b 0x607c 0x607d 0x607e 0x607f 0x6080 0x6081 0x6082 0x6083 0x6084 0x6085 0x6086 0x6087 0x6088 0x6089 0x608a 0x608b 0x608c 0x608d 0x608e 0x608f 0x6090 0x6091 0x6092 0x6093 0x6094 0x6095 0x6096 0x6097 0x6098 0x6099 0x609a 0x609b 0x609c 0x609d 0x609e 0x609f 0x60a0 0x60a1 0x60a2 0x60a3 0x60a4 0x60a5 0x60a6 0x60a7 0x60a8 0x60a9 0x60aa 0x60ab 0x60ac 0x60ad 0x60ae 0x60af 0x60b0 0x60b1 0x60b2 0x60b3 0x60b4 0x60b5 0x60b6 0x60b7 0x60b8 0x60b9 0x60ba 0x60bb 0x60bc 0x60bd 0x60be 0x60bf 0x60c0 0x60c1 0x60c2 0x60c3 0x60c4 0x60c5 0x60c6 0x60c7 0x60c8 0x60c9 0x60ca 0x60cb 0x60cc 0x60cd 0x60ce 0x60cf 0x60d0 0x60d1 0x60d2 0x60d3 0x60d4 0x60d5 0x60d6 0x60d7 0x60d8 0x60d9 0x60da 0x60db 0x60dc 0x60dd 0x60de 0x60df 0x60e0 0x60e1 0x60e2 0x60e3 0x60e4 0x60e5 0x60e6 0x60e7 0x60e8 0x60e9 0x60ea 0x60eb 0x60ec 0x60ed 0x60ee 0x60ef 0x60f0 0x60f1 0x60f2 0x60f3 0x60f4 0x60f5 0x60f6 0x60f7 0x60f8 0x60f9 0x60fa 0x60fb 0x60fc 0x60fd 0x60fe 0x60ff 0x6100 0x6101 0x6102 0x6103 0x6104 0x6105 0x6106 0x6107 0x6108 0x6109 0x610a 0x610b 0x610c 0x610d 0x610e 0x610f 0x6110 0x6111 0x6112 0x6113 0x6114 0x6115 0x6116 0x6117 0x6118 0x6119 0x611a 0x611b 0x611c ] ] -historic_blocks_tree_root_membership_witnesses: [ leaf_index: 0x7000 -sibling_path: [ 0x7000 0x7001 0x7002 0x7003 0x7004 0x7005 0x7006 0x7007 0x7008 0x7009 0x700a 0x700b 0x700c 0x700d 0x700e 0x700f ] - leaf_index: 0x8000 -sibling_path: [ 0x8000 0x8001 0x8002 0x8003 0x8004 0x8005 0x8006 0x8007 0x8008 0x8009 0x800a 0x800b 0x800c 0x800d 0x800e 0x800f ] - ] -constants: start_historic_blocks_tree_roots_snapshot: -root: 0x400 -next_available_leaf_index: 1024 - -private_kernel_vk_tree_root: 0x501 -public_kernel_vk_tree_root: 0x502 -base_rollup_vk_hash: 0x503 -merge_rollup_vk_hash: 0x504 -global_variables: chain_id: 0x505 -version: 0x506 -block_number: 0x507 -timestamp: 0x508 - - -" -`; - -exports[`structs/base_rollup serializes and prints BaseRollupPublicInputs 1`] = ` -"rollup_type: 0 -rollup_subtree_height: 0x0 -end_aggregation_object: P0: { 0x100, 0x101 } -P1: { 0x200, 0x201 } -public_inputs: [ - 0x102 - 0x103 - 0x104 - 0x105 -] -proof_witness_indices: [ 262 263 264 265 266 267 ] -has_data: 0 - -constants: start_historic_blocks_tree_roots_snapshot: -root: 0x500 -next_available_leaf_index: 1280 - -private_kernel_vk_tree_root: 0x601 -public_kernel_vk_tree_root: 0x602 -base_rollup_vk_hash: 0x603 -merge_rollup_vk_hash: 0x604 -global_variables: chain_id: 0x605 -version: 0x606 -block_number: 0x607 -timestamp: 0x608 - - -start_note_hash_tree_snapshot: root: 0x300 -next_available_leaf_index: 768 - -end_note_hash_tree_snapshot: root: 0x400 -next_available_leaf_index: 1024 - -start_nullifier_tree_snapshot: root: 0x500 -next_available_leaf_index: 1280 - -end_nullifier_tree_snapshot: root: 0x600 -next_available_leaf_index: 1536 - -start_contract_tree_snapshot: root: 0x700 -next_available_leaf_index: 1792 - -end_contract_tree_snapshot: root: 0x800 -next_available_leaf_index: 2048 - -start_public_data_tree_root: 0x900 -end_public_data_tree_root: 0x1000 -calldata_hash: [ 0x901 0x902 ] -" -`; diff --git a/yarn-project/circuits.js/src/structs/rollup/__snapshots__/root_rollup.test.ts.snap b/yarn-project/circuits.js/src/structs/rollup/__snapshots__/root_rollup.test.ts.snap deleted file mode 100644 index 2f54698861d..00000000000 --- a/yarn-project/circuits.js/src/structs/rollup/__snapshots__/root_rollup.test.ts.snap +++ /dev/null @@ -1,223 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`structs/root_rollup serializes a RootRollupInput and prints it 1`] = ` -"previous_rollup_data: [ base_or_merge_rollup_public_inputs: -rollup_type: 0 -rollup_subtree_height: 0x0 -end_aggregation_object: P0: { 0x100, 0x101 } -P1: { 0x200, 0x201 } -public_inputs: [ - 0x102 - 0x103 - 0x104 - 0x105 -] -proof_witness_indices: [ 106 107 108 109 10a 10b ] -has_data: 0 - -constants: start_historic_blocks_tree_roots_snapshot: -root: 0x500 -next_available_leaf_index: 500 - -private_kernel_vk_tree_root: 0x601 -public_kernel_vk_tree_root: 0x602 -base_rollup_vk_hash: 0x603 -merge_rollup_vk_hash: 0x604 -global_variables: chain_id: 0x605 -version: 0x606 -block_number: 0x607 -timestamp: 0x608 - - -start_note_hash_tree_snapshot: root: 0x300 -next_available_leaf_index: 300 - -end_note_hash_tree_snapshot: root: 0x400 -next_available_leaf_index: 400 - -start_nullifier_tree_snapshot: root: 0x500 -next_available_leaf_index: 500 - -end_nullifier_tree_snapshot: root: 0x600 -next_available_leaf_index: 600 - -start_contract_tree_snapshot: root: 0x700 -next_available_leaf_index: 700 - -end_contract_tree_snapshot: root: 0x800 -next_available_leaf_index: 800 - -start_public_data_tree_root: 0x900 -end_public_data_tree_root: 0x1000 -calldata_hash: [ 0x901 0x902 ] - -proof: [ 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 ] -vk: key.circuit_type: 0 -key.circuit_size: 65 -key.num_public_inputs: 66 -key.commitments: [ - A: { 0x200, 0x300 } -] -key.contains_recursive_proof: 1 -key.recursive_proof_public_input_indices: [ 190 191 192 193 194 ] - -vk_index: 110 -vk_sibling_path: leaf_index: 0x120 -sibling_path: [ 0x120 0x121 0x122 0x123 0x124 0x125 0x126 0x127 ] - - base_or_merge_rollup_public_inputs: -rollup_type: 0 -rollup_subtree_height: 0x0 -end_aggregation_object: P0: { 0x1100, 0x1101 } -P1: { 0x1200, 0x1201 } -public_inputs: [ - 0x1102 - 0x1103 - 0x1104 - 0x1105 -] -proof_witness_indices: [ 1106 1107 1108 1109 110a 110b ] -has_data: 0 - -constants: start_historic_blocks_tree_roots_snapshot: -root: 0x1500 -next_available_leaf_index: 1500 - -private_kernel_vk_tree_root: 0x1601 -public_kernel_vk_tree_root: 0x1602 -base_rollup_vk_hash: 0x1603 -merge_rollup_vk_hash: 0x1604 -global_variables: chain_id: 0x1605 -version: 0x1606 -block_number: 0x1607 -timestamp: 0x1608 - - -start_note_hash_tree_snapshot: root: 0x1300 -next_available_leaf_index: 1300 - -end_note_hash_tree_snapshot: root: 0x1400 -next_available_leaf_index: 1400 - -start_nullifier_tree_snapshot: root: 0x1500 -next_available_leaf_index: 1500 - -end_nullifier_tree_snapshot: root: 0x1600 -next_available_leaf_index: 1600 - -start_contract_tree_snapshot: root: 0x1700 -next_available_leaf_index: 1700 - -end_contract_tree_snapshot: root: 0x1800 -next_available_leaf_index: 1800 - -start_public_data_tree_root: 0x1900 -end_public_data_tree_root: 0x2000 -calldata_hash: [ 0x1901 0x1902 ] - -proof: [ 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 ] -vk: key.circuit_type: 0 -key.circuit_size: 65 -key.num_public_inputs: 66 -key.commitments: [ - A: { 0x200, 0x300 } -] -key.contains_recursive_proof: 1 -key.recursive_proof_public_input_indices: [ 190 191 192 193 194 ] - -vk_index: 1110 -vk_sibling_path: leaf_index: 0x1120 -sibling_path: [ 0x1120 0x1121 0x1122 0x1123 0x1124 0x1125 0x1126 0x1127 ] - - ] -new_l1_to_l2_messages: [ 0x2100 0x2101 0x2102 0x2103 0x2104 0x2105 0x2106 0x2107 0x2108 0x2109 0x210a 0x210b 0x210c 0x210d 0x210e 0x210f ] -new_l1_to_l2_messages_tree_root_sibling_path: [ 0x2100 0x2101 0x2102 0x2103 0x2104 0x2105 0x2106 0x2107 0x2108 0x2109 0x210a 0x210b ] -start_l1_to_l2_messages_tree_snapshot: root: 0x2200 -next_available_leaf_index: 8704 - -start_historic_blocks_tree_snapshot: root: 0x2200 -next_available_leaf_index: 8704 - -new_historic_blocks_tree_sibling_path: [ 0x2400 0x2401 0x2402 0x2403 0x2404 0x2405 0x2406 0x2407 0x2408 0x2409 0x240a 0x240b 0x240c 0x240d 0x240e 0x240f ] -" -`; - -exports[`structs/root_rollup serializes a RootRollupPublicInputs and prints it 1`] = ` -"end_aggregation_object: -P0: { 0x0, 0x1 } -P1: { 0x100, 0x101 } -public_inputs: [ - 0x2 - 0x3 - 0x4 - 0x5 -] -proof_witness_indices: [ 6 7 8 9 10 11 ] -has_data: 0 - -global_variables: -chain_id: 0x100 -version: 0x101 -block_number: 0x102 -timestamp: 0x103 - -start_note_hash_tree_snapshot: -root: 0x200 -next_available_leaf_index: 512 - -end_note_hash_tree_snapshot: -root: 0x300 -next_available_leaf_index: 768 - -start_nullifier_tree_snapshot: -root: 0x400 -next_available_leaf_index: 1024 - -end_nullifier_tree_snapshot: -root: 0x500 -next_available_leaf_index: 1280 - -start_contract_tree_snapshot: -root: 0x600 -next_available_leaf_index: 1536 - -end_contract_tree_snapshot: -root: 0x700 -next_available_leaf_index: 1792 - -start_public_data_tree_root: 0x800 -end_public_data_tree_root: 0x900 -start_tree_of_historic_note_hash_tree_roots_snapshot: root: 0xa00 -next_available_leaf_index: 2560 - -end_tree_of_historic_note_hash_tree_roots_snapshot: root: 0xb00 -next_available_leaf_index: 2816 - -start_tree_of_historic_contract_tree_roots_snapshot: root: 0xc00 -next_available_leaf_index: 3072 - -end_tree_of_historic_contract_tree_roots_snapshot: root: 0xd00 -next_available_leaf_index: 3328 - -start_l1_to_l2_messages_tree_snapshot: root: 0xe00 -next_available_leaf_index: 3584 - -end_l1_to_l2_messages_tree_snapshot: root: 0xf00 -next_available_leaf_index: 3840 - -start_tree_of_historic_l1_to_l2_messages_tree_roots_snapshot: root: 0x1000 -next_available_leaf_index: 4096 - -end_tree_of_historic_l1_to_l2_messages_tree_roots_snapshot: root: 0x1100 -next_available_leaf_index: 4352 - -start_historic_blocks_tree_snapshot: root: 0x1200 -next_available_leaf_index: 4608 - -end_historic_blocks_tree_snapshot: root: 0x1300 -next_available_leaf_index: 4864 - -calldata_hash: [ 0x1 0x2 ] -l1_to_l2_messages_hash: [ 0x3 0x4 ] -" -`; diff --git a/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.test.ts b/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.test.ts new file mode 100644 index 00000000000..3a6d21315b3 --- /dev/null +++ b/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.test.ts @@ -0,0 +1,11 @@ +import { makeBaseOrMergeRollupPublicInputs } from '../../tests/factories.js'; +import { BaseOrMergeRollupPublicInputs } from './base_or_merge_rollup_public_inputs.js'; + +describe('BaseRollupPublicInputs', () => { + it(`serializes to buffer and deserializes it back`, () => { + const expected = makeBaseOrMergeRollupPublicInputs(); + const buffer = expected.toBuffer(); + const res = BaseOrMergeRollupPublicInputs.fromBuffer(buffer); + expect(res).toEqual(expected); + }); +}); diff --git a/yarn-project/circuits.js/src/structs/rollup/base_rollup.test.ts b/yarn-project/circuits.js/src/structs/rollup/base_rollup.test.ts deleted file mode 100644 index 873ded81e49..00000000000 --- a/yarn-project/circuits.js/src/structs/rollup/base_rollup.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { expectReserializeToMatchObject, expectSerializeToMatchSnapshot } from '../../tests/expectSerialize.js'; -import { makeBaseOrMergeRollupPublicInputs, makeBaseRollupInputs } from '../../tests/factories.js'; -import { BaseOrMergeRollupPublicInputs } from './base_or_merge_rollup_public_inputs.js'; - -describe.skip('structs/base_rollup', () => { - it(`serializes and prints BaseRollupInputs`, async () => { - const baseRollupInputs = makeBaseRollupInputs(); - - await expectSerializeToMatchSnapshot( - baseRollupInputs.toBuffer(), - 'abis__test_roundtrip_serialize_base_rollup_inputs', - ); - }); - - it(`serializes and prints BaseRollupPublicInputs`, async () => { - const baseRollupPublicInputs = makeBaseOrMergeRollupPublicInputs(); - - await expectSerializeToMatchSnapshot( - baseRollupPublicInputs.toBuffer(), - 'abis__test_roundtrip_serialize_base_or_merge_rollup_public_inputs', - ); - }); - - it(`serializes and deserializes BaseRollupPublicInputs`, async () => { - const baseRollupPublicInputs = makeBaseOrMergeRollupPublicInputs(); - - await expectReserializeToMatchObject( - baseRollupPublicInputs, - 'abis__test_roundtrip_reserialize_base_or_merge_rollup_public_inputs', - BaseOrMergeRollupPublicInputs.fromBuffer, - ); - }); -}); diff --git a/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts b/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts index bb99f7fba60..03085f63e42 100644 --- a/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts +++ b/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts @@ -1,27 +1,11 @@ -import { expectReserializeToMatchObject, expectSerializeToMatchSnapshot } from '../../tests/expectSerialize.js'; -import { makeRootRollupInputs, makeRootRollupPublicInputs } from '../../tests/factories.js'; +import { makeRootRollupPublicInputs } from '../../tests/factories.js'; import { RootRollupPublicInputs } from './root_rollup.js'; describe('structs/root_rollup', () => { - it(`serializes a RootRollupInput and prints it`, async () => { - await expectSerializeToMatchSnapshot( - makeRootRollupInputs().toBuffer(), - 'abis__test_roundtrip_serialize_root_rollup_inputs', - ); - }); - - it(`serializes a RootRollupPublicInputs and prints it`, async () => { - await expectSerializeToMatchSnapshot( - makeRootRollupPublicInputs().toBuffer(), - 'abis__test_roundtrip_serialize_root_rollup_public_inputs', - ); - }); - - it(`serializes a RootRollupPublicInputs and deserializes it back`, async () => { - await expectReserializeToMatchObject( - makeRootRollupPublicInputs(), - 'abis__test_roundtrip_reserialize_root_rollup_public_inputs', - RootRollupPublicInputs.fromBuffer, - ); + it(`serializes a RootRollupPublicInputs to buffer and deserializes it back`, () => { + const expected = makeRootRollupPublicInputs(); + const buffer = expected.toBuffer(); + const res = RootRollupPublicInputs.fromBuffer(buffer); + expect(res).toEqual(expected); }); }); diff --git a/yarn-project/circuits.js/src/structs/tx_context.test.ts b/yarn-project/circuits.js/src/structs/tx_context.test.ts index b19d5eb52e3..3fde72052f2 100644 --- a/yarn-project/circuits.js/src/structs/tx_context.test.ts +++ b/yarn-project/circuits.js/src/structs/tx_context.test.ts @@ -1,9 +1,17 @@ -import { expectSerializeToMatchSnapshot } from '../tests/expectSerialize.js'; import { makeTxContext } from '../tests/factories.js'; +import { TxContext } from './tx_context.js'; -describe('structs/tx', () => { - it(`serializes and prints object`, async () => { - const txContext = makeTxContext(1); - await expectSerializeToMatchSnapshot(txContext.toBuffer(), 'abis__test_roundtrip_serialize_tx_context'); +describe('TxContext', () => { + it(`serializes to buffer and deserializes it back`, () => { + const expected = makeTxContext(1); + const buffer = expected.toBuffer(); + const res = TxContext.fromBuffer(buffer); + expect(res).toEqual(expected); + expect(res.isEmpty()).toBe(false); + }); + + it(`initializes an empty TxContext`, () => { + const target = TxContext.empty(); + expect(target.isEmpty()).toBe(true); }); }); diff --git a/yarn-project/circuits.js/src/structs/tx_context.ts b/yarn-project/circuits.js/src/structs/tx_context.ts index 1dd2a166fe4..644c8812690 100644 --- a/yarn-project/circuits.js/src/structs/tx_context.ts +++ b/yarn-project/circuits.js/src/structs/tx_context.ts @@ -151,6 +151,17 @@ export class TxContext { return new TxContext(false, false, false, ContractDeploymentData.empty(), new Fr(chainId), new Fr(version)); } + isEmpty(): boolean { + return ( + !this.isFeePaymentTx && + !this.isRebatePaymentTx && + !this.isContractDeploymentTx && + this.contractDeploymentData.isEmpty() && + this.chainId.isZero() && + this.version.isZero() + ); + } + /** * Create a new instance from a fields dictionary. * @param fields - The dictionary. diff --git a/yarn-project/circuits.js/src/tests/expectSerialize.ts b/yarn-project/circuits.js/src/tests/expectSerialize.ts deleted file mode 100644 index 20da308f9a2..00000000000 --- a/yarn-project/circuits.js/src/tests/expectSerialize.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { uint8ArrayToNum } from '../utils/serialize.js'; -import { CircuitsWasm } from '../wasm/circuits_wasm.js'; - -/** - * Simplify e.g. 0x0003 into 0x3. - * @param input - The input string, with hex somewhere inside. - * @returns The output string with fixed hex. - */ -function simplifyHexValues(input: string) { - const regex = /0x[\dA-Fa-f]+/g; - const matches = input.match(regex) || []; - const simplifiedMatches = matches.map(match => '0x' + BigInt(match).toString(16)); - const result = input.replace(regex, () => simplifiedMatches.shift() || ''); - return result; -} - -/** - * Test utility. Sends a serialized buffer to wasm and gets the result. - * @param inputBuf - Buffer to write. - * @param serializeMethod - Method to use buffer with. - * @param wasm - Optional circuit wasm. If not set, we fetch a singleton. - */ -async function callWasm(inputBuf: Buffer, serializeMethod: string, wasm?: CircuitsWasm): Promise { - wasm = wasm || (await CircuitsWasm.get()); - const inputBufPtr = wasm.call('bbmalloc', inputBuf.length); - wasm.writeMemory(inputBufPtr, inputBuf); - const outputBufSizePtr = wasm.call('bbmalloc', 4); - - // Get a string version of our object. As a quick and dirty test, - // we compare a snapshot of its string form to its previous form. - const outputBufPtr = wasm.call(serializeMethod, inputBufPtr, outputBufSizePtr); - - // Read the size pointer - const outputBufSize = uint8ArrayToNum(wasm.getMemorySlice(outputBufSizePtr, outputBufSizePtr + 4)); - - // Copy into our own buffer - const outputBuf = Buffer.from(wasm.getMemorySlice(outputBufPtr, outputBufPtr + outputBufSize)); - - // Free memory - wasm.call('bbfree', outputBufPtr); - wasm.call('bbfree', outputBufSizePtr); - wasm.call('bbfree', inputBufPtr); - - return outputBuf; -} - -/** - * Test utility. Checks a buffer serialize against a snapshot. - * @param inputBuf - Buffer to write to. - * @param serializeMethod - Method to use buffer with. - * @param wasm - Optional circuit wasm. If not set, we fetch a singleton. - */ -export async function expectSerializeToMatchSnapshot(inputBuf: Buffer, serializeMethod: string, wasm?: CircuitsWasm) { - const outputBuf = await callWasm(inputBuf, serializeMethod, wasm); - const outputStr = simplifyHexValues(Buffer.from(outputBuf).toString('utf-8')); - expect(outputStr).toMatchSnapshot(); -} - -/** - * Test utility. Serializes an object, passes it to a wasm reserialize method, - * gets it back, deserializes it, and checks it matches the original. - * @param inputObj - Object to check. - * @param serializeMethod - Wasm method to send and get back the object. - * @param deserialize - Method to deserialize the object with. - * @param wasm - Optional circuit wasm. If not set, we fetch a singleton. - */ -export async function expectReserializeToMatchObject< - T extends { - /** - * Signature of the target serialization function. - */ - toBuffer: () => Buffer; - }, ->(inputObj: T, serializeMethod: string, deserialize: (buf: Buffer) => T, wasm?: CircuitsWasm) { - const outputBuf = await callWasm(inputObj.toBuffer(), serializeMethod, wasm); - const deserializedObj = deserialize(outputBuf); - expect(deserializedObj).toEqual(deserializedObj); -} From 380b17852dffca8a1ddb5fcd5e110f79b92be8b6 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Fri, 24 Nov 2023 13:05:55 +0000 Subject: [PATCH 05/11] Update import paths. --- yarn-project/circuits.js/src/abis/abis.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/yarn-project/circuits.js/src/abis/abis.ts b/yarn-project/circuits.js/src/abis/abis.ts index 909d33aa635..fda355297e4 100644 --- a/yarn-project/circuits.js/src/abis/abis.ts +++ b/yarn-project/circuits.js/src/abis/abis.ts @@ -1,36 +1,38 @@ +import { AztecAddress } from '@aztec/foundation/aztec-address'; import { padArrayEnd } from '@aztec/foundation/collection'; import { keccak, pedersenHash, pedersenHashBuffer } from '@aztec/foundation/crypto'; +import { Fr } from '@aztec/foundation/fields'; import { numToUInt8, numToUInt16BE, numToUInt32BE } from '@aztec/foundation/serialize'; import { Buffer } from 'buffer'; import chunk from 'lodash.chunk'; import { - AztecAddress, + FUNCTION_SELECTOR_NUM_BYTES, + FUNCTION_TREE_HEIGHT, + GeneratorIndex, + PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, + PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, +} from '../constants.gen.js'; +import { CallContext, CompleteAddress, ContractDeploymentData, ContractStorageRead, ContractStorageUpdateRequest, - FUNCTION_SELECTOR_NUM_BYTES, - FUNCTION_TREE_HEIGHT, - Fr, FunctionData, FunctionLeafPreimage, - GeneratorIndex, GlobalVariables, NewContractData, - PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, - PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, PrivateCallStackItem, PrivateCircuitPublicInputs, PublicCallStackItem, PublicCircuitPublicInputs, - PublicKey, TxContext, TxRequest, VerificationKey, -} from '../index.js'; +} from '../structs/index.js'; +import { PublicKey } from '../types/index.js'; import { boolToBuffer } from '../utils/serialize.js'; import { MerkleTreeCalculator } from './merkle_tree_calculator.js'; From f077fea2f0527bb7927c27390acf29b84659efda Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Fri, 24 Nov 2023 17:10:40 +0000 Subject: [PATCH 06/11] Deprecate circuits/cpp. --- .circleci/config.yml | 48 - README.md | 14 +- bootstrap.sh | 5 - build_manifest.yml | 15 - .../docs/dev_docs/debugging/sandbox-errors.md | 4 +- docs/docs/dev_docs/limitations/main.md | 2 +- yarn-project/Dockerfile | 12 - .../acir-simulator/src/public/execution.ts | 1 - yarn-project/acir-simulator/src/utils.ts | 1 - yarn-project/aztec-sandbox/README.md | 2 - yarn-project/aztec.js/src/index.ts | 1 - .../boxes/blank-react/webpack.config.js | 19 - yarn-project/boxes/blank/webpack.config.js | 16 - yarn-project/boxes/token/webpack.config.js | 19 - yarn-project/canary/Dockerfile | 1 - yarn-project/circuits.js/.gitignore | 1 - yarn-project/circuits.js/README.md | 13 +- yarn-project/circuits.js/package.json | 14 +- .../resources/aztec3-circuits.wasm | 1 - .../resources/download_ignition.sh | 65 -- .../circuits.js/src/abis/abis.test.ts | 2 +- yarn-project/circuits.js/src/cbind/cbind.ts | 69 -- .../circuits.js/src/cbind/circuits.gen.ts | 1021 ----------------- yarn-project/circuits.js/src/cbind/types.ts | 114 -- .../contract/contract_tree/contract_tree.ts | 2 - yarn-project/circuits.js/src/crs/index.ts | 225 ---- yarn-project/circuits.js/src/index.ts | 2 - yarn-project/circuits.js/src/rollup/index.ts | 1 - .../circuits.js/src/structs/circuit_error.ts | 32 - yarn-project/circuits.js/src/structs/index.ts | 1 - .../src/structs/kernel/private_kernel.ts | 1 - .../src/structs/kernel/public_inputs.ts | 1 - .../src/structs/kernel/public_inputs_final.ts | 1 - yarn-project/circuits.js/src/structs/proof.ts | 25 +- .../circuits.js/src/utils/call_wasm.ts | 114 -- .../circuits.js/src/utils/serialize.ts | 7 +- .../src/wasm/circuits_wasm.test.ts | 19 - .../circuits.js/src/wasm/circuits_wasm.ts | 171 --- yarn-project/circuits.js/src/wasm/index.ts | 1 - yarn-project/end-to-end/Dockerfile | 2 - .../src/integration_l1_publisher.test.ts | 4 +- .../foundation/src/serialize/free_funcs.ts | 1 - yarn-project/pxe/src/index.ts | 2 +- .../pxe/src/kernel_prover/proof_creator.ts | 8 +- .../block_builder/solo_block_builder.test.ts | 6 +- .../src/client/sequencer-client.ts | 4 +- yarn-project/sequencer-client/src/index.ts | 2 +- .../src/sequencer/public_processor.test.ts | 4 +- .../src/sequencer/public_processor.ts | 4 +- .../src/simulator/public_kernel.ts | 4 +- .../sequencer-client/src/simulator/rollup.ts | 11 +- .../src/world-state-db/merkle_trees.ts | 2 - yarn-project/yarn-project-base/Dockerfile | 7 +- yarn-project/yarn.lock | 43 +- 54 files changed, 49 insertions(+), 2118 deletions(-) delete mode 100644 yarn-project/circuits.js/.gitignore delete mode 120000 yarn-project/circuits.js/resources/aztec3-circuits.wasm delete mode 100755 yarn-project/circuits.js/resources/download_ignition.sh delete mode 100644 yarn-project/circuits.js/src/cbind/cbind.ts delete mode 100644 yarn-project/circuits.js/src/cbind/circuits.gen.ts delete mode 100644 yarn-project/circuits.js/src/cbind/types.ts delete mode 100644 yarn-project/circuits.js/src/crs/index.ts delete mode 100644 yarn-project/circuits.js/src/rollup/index.ts delete mode 100644 yarn-project/circuits.js/src/structs/circuit_error.ts delete mode 100644 yarn-project/circuits.js/src/utils/call_wasm.ts delete mode 100644 yarn-project/circuits.js/src/wasm/circuits_wasm.test.ts delete mode 100644 yarn-project/circuits.js/src/wasm/circuits_wasm.ts delete mode 100644 yarn-project/circuits.js/src/wasm/index.ts diff --git a/.circleci/config.yml b/.circleci/config.yml index 5e939431ab5..443bfd5e34b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -291,39 +291,6 @@ jobs: name: "Build and test" command: cond_spot_run_build barretenberg-acir-tests-bb.js 32 - circuits-wasm-linux-clang: - docker: - - image: aztecprotocol/alpine-build-image - resource_class: small - steps: - - *checkout - - *setup_env - - run: - name: "Build" - command: cond_spot_run_build circuits-wasm-linux-clang 32 - - circuits-x86_64-linux-clang-assert: - docker: - - image: aztecprotocol/alpine-build-image - resource_class: small - steps: - - *checkout - - *setup_env - - run: - name: "Build" - command: cond_spot_run_build circuits-x86_64-linux-clang-assert 32 - - circuits-x86_64-tests: - docker: - - image: aztecprotocol/alpine-build-image - resource_class: small - steps: - - *checkout - - *setup_env - - run: - name: "Test" - command: cond_spot_run_test circuits-x86_64-linux-clang-assert 32 ./scripts/run_tests 1 x86_64 scripts/a3-tests -*.skip* - l1-contracts: machine: image: ubuntu-2204:2023.07.2 @@ -1045,20 +1012,6 @@ workflows: - bb-js <<: *defaults - # Circuits - - circuits-wasm-linux-clang: - requires: - - barretenberg-wasm-linux-clang - <<: *defaults - - circuits-x86_64-linux-clang-assert: - requires: - - barretenberg-x86_64-linux-clang - <<: *defaults - - circuits-x86_64-tests: - requires: - - circuits-x86_64-linux-clang-assert - <<: *defaults - - l1-contracts: *defaults - mainnet-fork: *defaults @@ -1066,7 +1019,6 @@ workflows: # Yarn Project - yarn-project-base: requires: - - circuits-wasm-linux-clang - l1-contracts - bb-js <<: *defaults diff --git a/README.md b/README.md index 73a5faf3a79..cd96504e5eb 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ All the packages that make up [Aztec](https://docs.aztec.network). -- [**`circuits`**](/circuits): C++ code for circuits and cryptographic functions - [**`l1-contracts`**](/l1-contracts): Solidity code for the Ethereum contracts that process rollups - [**`yarn-project`**](/yarn-project): Typescript code for client and backend - [**`docs`**](/docs): Documentation source for the docs site @@ -22,15 +21,14 @@ All issues being worked on are tracked on the [Aztec Github Project](https://git ## Development Setup -Run `bootstrap.sh` in the project root to set up your environment. This will update git submodules, download ignition transcripts, build all C++ circuits code, install Foundry, compile Solidity contracts, install the current node version via nvm, and build all typescript packages. - -To build the C++ code, follow the [instructions in the circuits subdirectory](./circuits/README.md), which contains all of the ZK circuit logic for Aztec. Note that "barretenberg", Aztec's underlying cryptographic library, can be found inside the circuits subdirectory as well and is automatically built as a side effect of building the circuits. +Run `bootstrap.sh` in the project root to set up your environment. This will update git submodules, download ignition transcripts, install Foundry, compile Solidity contracts, install the current node version via nvm, and build all typescript packages. To build Typescript code, make sure to have [`nvm`](https://github.com/nvm-sh/nvm) (node version manager) installed. To build noir code, make sure that you are using the version from `yarn-project/noir-compiler/src/noir-version.json`. -Install nargo by running +Install nargo by running + ``` noirup -v TAG_FROM_THE_FILE ``` @@ -41,18 +39,20 @@ This repository uses CircleCI for continuous integration. Build steps are manage All packages need to be included in the [build manifest](`build_manifest.json`), which declares what paths belong to each package, as well as dependencies between packages. When the CI runs, if none of the rebuild patterns or dependencies were changed, then the build step is skipped and the last successful image is re-tagged with the current commit. Read more on the [`build-system`](https://github.com/AztecProtocol/build-system) repository README. -It is faster to debug CI failures within a persistent ssh session compared to pushing and waiting. You can create a session with "Rerun step with SSH" on CircleCI which will generate an ssh command for debugging on a worker. Run that command locally and then do +It is faster to debug CI failures within a persistent ssh session compared to pushing and waiting. You can create a session with "Rerun step with SSH" on CircleCI which will generate an ssh command for debugging on a worker. Run that command locally and then do + ```bash cd project ./build-system/scripts/setup_env "$(git rev-parse HEAD)" "" "" "" source /tmp/.bash_env* {start testing your CI commands here} ``` + This provide an interactive environment for debugging the CI test. ## Debugging -Logging goes through the [`info` and `debug`](barretenberg/cpp/src/barretenberg/common/log.hpp) functions in C++, and through the [DebugLogger](yarn-project/foundation/src/log/debug.ts) module in Typescript. To see the log output, set a `DEBUG` environment variable to the name of the module you want to debug, to `aztec:*`, or to `*` to see all logs. +Logging goes through the [DebugLogger](yarn-project/foundation/src/log/debug.ts) module in Typescript. To see the log output, set a `DEBUG` environment variable to the name of the module you want to debug, to `aztec:*`, or to `*` to see all logs. ## Releases diff --git a/bootstrap.sh b/bootstrap.sh index 55ee1711eab..ed1289c7de1 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -45,7 +45,6 @@ fi # Install pre-commit git hooks. HOOKS_DIR=$(git rev-parse --git-path hooks) echo "(cd barretenberg/cpp && ./format.sh staged)" > $HOOKS_DIR/pre-commit -echo "(cd circuits/cpp && ./format.sh staged)" >> $HOOKS_DIR/pre-commit # TODO: Call cci_gen to ensure .circleci/config.yml is up-to-date! chmod +x $HOOKS_DIR/pre-commit @@ -65,13 +64,9 @@ if [[ -f .bootstrapped && $(cat .bootstrapped) -eq "$VERSION" ]]; then echo -e '\n\033[1mRebuild barretenberg wasm...\033[0m' (cd barretenberg/cpp && cmake --build --preset default && cmake --build --preset wasm && cmake --build --preset wasm-threads) - - echo -e '\n\033[1mRebuild circuits wasm...\033[0m' - (cd circuits/cpp && cmake --build --preset wasm -j --target aztec3-circuits.wasm) else # Heavy bootstrap. barretenberg/bootstrap.sh - circuits/cpp/bootstrap.sh yarn-project/bootstrap.sh echo $VERSION > .bootstrapped diff --git a/build_manifest.yml b/build_manifest.yml index 53f1a8db4f1..ecfd28b98ba 100644 --- a/build_manifest.yml +++ b/build_manifest.yml @@ -52,20 +52,6 @@ barretenberg-acir-tests-bb.js: dependencies: - bb.js -circuits-wasm-linux-clang: - buildDir: circuits/cpp - dockerfile: dockerfiles/Dockerfile.wasm-linux-clang - rebuildPatterns: .rebuild_patterns - dependencies: - - barretenberg-wasm-linux-clang - -circuits-x86_64-linux-clang-assert: - buildDir: circuits/cpp - dockerfile: dockerfiles/Dockerfile.x86_64-linux-clang-assert - rebuildPatterns: .rebuild_patterns - dependencies: - - barretenberg-x86_64-linux-clang - l1-contracts: buildDir: l1-contracts @@ -76,7 +62,6 @@ yarn-project-base: - ^yarn-project/yarn-project-base/ - ^yarn-project/yarn.lock dependencies: - - circuits-wasm-linux-clang - l1-contracts - bb.js diff --git a/docs/docs/dev_docs/debugging/sandbox-errors.md b/docs/docs/dev_docs/debugging/sandbox-errors.md index 3cff6905f27..f31752a8d69 100644 --- a/docs/docs/dev_docs/debugging/sandbox-errors.md +++ b/docs/docs/dev_docs/debugging/sandbox-errors.md @@ -9,7 +9,7 @@ This section contains a list of errors you may encounter when using Aztec Sandbo ## Circuit Errors -**To prevent bloating this doc, here is a list of some of the common errors. Feel free to have a look at [circuit_errors.hpp](https://github.com/AztecProtocol/aztec-packages/blob/master/circuits/cpp/src/aztec3/utils/circuit_errors.hpp) for a list of all possible circuit errors.** +**To prevent bloating this doc, here is a list of some of the common errors.** ### Kernel Circuits @@ -160,7 +160,7 @@ Circuits work by having a fixed size array. As such, we have limits on how many - too many transient read requests in one tx - too many transient read request membership witnesses in one tx -You can have a look at our current constants/limitations in [constants.hpp](https://github.com/AztecProtocol/aztec-packages/blob/master/circuits/cpp/src/aztec3/constants.hpp) +You can have a look at our current constants/limitations in [constants.nr](https://github.com/AztecProtocol/aztec-packages/blob/master/yarn-project/aztec-nr/aztec/src/constants_gen.nr) #### 7008 - MEMBERSHIP_CHECK_FAILED diff --git a/docs/docs/dev_docs/limitations/main.md b/docs/docs/dev_docs/limitations/main.md index 8243b30ece3..08a911d29e2 100644 --- a/docs/docs/dev_docs/limitations/main.md +++ b/docs/docs/dev_docs/limitations/main.md @@ -189,7 +189,7 @@ Due to the rigidity of zk-SNARK circuits, there are upper bounds on the amount o Here are the current constants: -#include_code constants circuits/cpp/src/aztec3/constants.hpp cpp +#include_code constants /yarn-project/aztec-nr/aztec/src/constants_gen.nr rust #### What are the consequences? diff --git a/yarn-project/Dockerfile b/yarn-project/Dockerfile index 6a87e5515af..7c85a1fdae9 100644 --- a/yarn-project/Dockerfile +++ b/yarn-project/Dockerfile @@ -18,18 +18,6 @@ RUN cd /usr/src/yarn-project/aztec.js && yarn build:web FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base COPY --from=builder /usr/src/yarn-project /usr/src/yarn-project -# Download minimal CRS requirements -COPY --from=builder /usr/src/barretenberg/cpp/srs_db/download_ignition.sh /usr/src/yarn-project/circuits.js/resources/download_ignition.sh -WORKDIR /usr/src/yarn-project/circuits.js/resources -RUN ./download_ignition.sh 0 28 3200027 -RUN ./download_ignition.sh 0 322560092 322560219 true - -# Ensure wasm symlink is removed -RUN rm /usr/src/yarn-project/circuits.js/resources/aztec3-circuits.wasm - -# Copy real wasm into yarn-project -RUN cp /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm /usr/src/yarn-project/circuits.js/resources/aztec3-circuits.wasm - WORKDIR /usr/src/yarn-project ENTRYPOINT ["yarn"] diff --git a/yarn-project/acir-simulator/src/public/execution.ts b/yarn-project/acir-simulator/src/public/execution.ts index 46b1227a6e4..9d2b2047000 100644 --- a/yarn-project/acir-simulator/src/public/execution.ts +++ b/yarn-project/acir-simulator/src/public/execution.ts @@ -66,7 +66,6 @@ export function isPublicExecutionResult( /** * Collect all public storage reads across all nested executions * and convert them to PublicDataReads (to match kernel output). - * @param wasm - A module providing low-level wasm access. * @param execResult - The topmost execution result. * @returns All public data reads (in execution order). */ diff --git a/yarn-project/acir-simulator/src/utils.ts b/yarn-project/acir-simulator/src/utils.ts index bc1ff871737..b40f389bac8 100644 --- a/yarn-project/acir-simulator/src/utils.ts +++ b/yarn-project/acir-simulator/src/utils.ts @@ -17,7 +17,6 @@ export type NoirPoint = { * Computes the resulting storage slot for an entry in a mapping. * @param mappingSlot - The slot of the mapping within state. * @param owner - The key of the mapping. - * @param bbWasm - Wasm module for computing. * @returns The slot in the contract storage where the value is stored. */ export function computeSlotForMapping(mappingSlot: Fr, owner: NoirPoint | Fr) { diff --git a/yarn-project/aztec-sandbox/README.md b/yarn-project/aztec-sandbox/README.md index e2bafcdf806..b901d0b8b9d 100644 --- a/yarn-project/aztec-sandbox/README.md +++ b/yarn-project/aztec-sandbox/README.md @@ -21,8 +21,6 @@ yarn start It will look for a local Ethereum RPC to talk to but you can change this with the `ETHEREUM_HOST` environment variable. -You'll also need to run `./bootstrap.sh` in the `circuits/cpp` directory in order to build the WASM binaries. - ## Examples The package also includes 2 examples. There are some system prerequisites that you will need to run these locally: diff --git a/yarn-project/aztec.js/src/index.ts b/yarn-project/aztec.js/src/index.ts index ee1572613ee..e9e42ae309b 100644 --- a/yarn-project/aztec.js/src/index.ts +++ b/yarn-project/aztec.js/src/index.ts @@ -11,7 +11,6 @@ export * from './wallet/index.js'; // here once the issue is resolved. export { AztecAddress, - CircuitsWasm, EthAddress, Point, Fr, diff --git a/yarn-project/boxes/blank-react/webpack.config.js b/yarn-project/boxes/blank-react/webpack.config.js index b5f4f902bd3..153f7afe596 100644 --- a/yarn-project/boxes/blank-react/webpack.config.js +++ b/yarn-project/boxes/blank-react/webpack.config.js @@ -1,4 +1,3 @@ -import CopyWebpackPlugin from 'copy-webpack-plugin'; import { createRequire } from 'module'; import { dirname, resolve } from 'path'; import ResolveTypeScriptPlugin from 'resolve-typescript-plugin'; @@ -68,24 +67,6 @@ export default (_, argv) => ({ }, }), new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }), - new CopyWebpackPlugin({ - patterns: [ - { - from: `${dirname(require.resolve(`@aztec/circuits.js`)).replace( - /\/dest$/, - '', - )}/resources/aztec3-circuits.wasm`, - to: 'aztec3-circuits.wasm', - }, - { - from: './src/assets', - }, - { - from: './src/app/index.html', - to: 'index.html', - }, - ], - }), ], resolve: { plugins: [new ResolveTypeScriptPlugin()], diff --git a/yarn-project/boxes/blank/webpack.config.js b/yarn-project/boxes/blank/webpack.config.js index 429d2a52154..ce529b670e1 100644 --- a/yarn-project/boxes/blank/webpack.config.js +++ b/yarn-project/boxes/blank/webpack.config.js @@ -1,4 +1,3 @@ -import CopyWebpackPlugin from 'copy-webpack-plugin'; import { createRequire } from 'module'; import { dirname, resolve } from 'path'; import ResolveTypeScriptPlugin from 'resolve-typescript-plugin'; @@ -40,21 +39,6 @@ export default (_, argv) => ({ }, }), new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }), - new CopyWebpackPlugin({ - patterns: [ - { - from: `${dirname(require.resolve(`@aztec/circuits.js`)).replace( - /\/dest$/, - '', - )}/resources/aztec3-circuits.wasm`, - to: 'aztec3-circuits.wasm', - }, - { - from: './src/index.html', - to: 'index.html', - }, - ], - }), ], resolve: { plugins: [new ResolveTypeScriptPlugin()], diff --git a/yarn-project/boxes/token/webpack.config.js b/yarn-project/boxes/token/webpack.config.js index b5f4f902bd3..153f7afe596 100644 --- a/yarn-project/boxes/token/webpack.config.js +++ b/yarn-project/boxes/token/webpack.config.js @@ -1,4 +1,3 @@ -import CopyWebpackPlugin from 'copy-webpack-plugin'; import { createRequire } from 'module'; import { dirname, resolve } from 'path'; import ResolveTypeScriptPlugin from 'resolve-typescript-plugin'; @@ -68,24 +67,6 @@ export default (_, argv) => ({ }, }), new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }), - new CopyWebpackPlugin({ - patterns: [ - { - from: `${dirname(require.resolve(`@aztec/circuits.js`)).replace( - /\/dest$/, - '', - )}/resources/aztec3-circuits.wasm`, - to: 'aztec3-circuits.wasm', - }, - { - from: './src/assets', - }, - { - from: './src/app/index.html', - to: 'index.html', - }, - ], - }), ], resolve: { plugins: [new ResolveTypeScriptPlugin()], diff --git a/yarn-project/canary/Dockerfile b/yarn-project/canary/Dockerfile index e3aaabc9d18..64629daf71a 100644 --- a/yarn-project/canary/Dockerfile +++ b/yarn-project/canary/Dockerfile @@ -32,7 +32,6 @@ WORKDIR /usr/src/canary RUN cp ../end-to-end/scripts/start_e2e_ci_browser.sh ./scripts/start_e2e_ci_browser.sh RUN chmod +x scripts/start_e2e_ci_browser.sh -RUN cp ./node_modules/@aztec/circuits.js/resources/aztec3-circuits.wasm src/web/ RUN cp ./node_modules/@aztec/aztec.js/dest/main.js src/web/ ENTRYPOINT ["yarn", "test"] diff --git a/yarn-project/circuits.js/.gitignore b/yarn-project/circuits.js/.gitignore deleted file mode 100644 index 76fc89283e7..00000000000 --- a/yarn-project/circuits.js/.gitignore +++ /dev/null @@ -1 +0,0 @@ -resources/ignition/ \ No newline at end of file diff --git a/yarn-project/circuits.js/README.md b/yarn-project/circuits.js/README.md index f148e1dc375..2deefd5a725 100644 --- a/yarn-project/circuits.js/README.md +++ b/yarn-project/circuits.js/README.md @@ -1,7 +1,6 @@ # Circuits.js -Javascript bindings for the aztec3 circuits WASM. -High-level bindings to the raw C API to our core circuit logic. +Javascript types and helper functions for the aztec circuits. ## To run: @@ -10,7 +9,7 @@ High-level bindings to the raw C API to our core circuit logic. ## Updating Snapshots The tests will fail if you've made changes to things like the Public Inputs for the rollup/kernel circuits or the accumulators, -logic, or hashes. This is because snapshot data in places like `src/structs/__snapshots__` or `src/abis/__snapshots__` will need to be updated for the tests. +logic, or hashes. This is because snapshot data in places like `src/abis/__snapshots__` will need to be updated for the tests. You can update the snapshot data by running @@ -19,11 +18,3 @@ yarn test -u ``` and committing the updated snapshot files. - -## To rebundle local dependencies from aztec3-packages - -Currently relies on dependencies locally linked from `aztec3-packages`. -Run `yarn bundle-deps` to rebundle them (committed to the repo for simplicity). -Run `yarn dev-deps` if you have ../../.. as the `aztec3-packages` path. - -TODO worker API diff --git a/yarn-project/circuits.js/package.json b/yarn-project/circuits.js/package.json index f74c46295e6..23da8c4fbf4 100644 --- a/yarn-project/circuits.js/package.json +++ b/yarn-project/circuits.js/package.json @@ -40,30 +40,19 @@ "dependencies": { "@aztec/bb.js": "portal:../../barretenberg/ts", "@aztec/foundation": "workspace:^", - "@msgpack/msgpack": "^3.0.0-beta2", - "@noble/curves": "^1.0.0", - "@types/lodash.camelcase": "^4.3.7", - "@types/lodash.times": "^4.3.7", - "cross-fetch": "^3.1.5", - "detect-node": "^2.1.0", "eslint": "^8.35.0", - "lodash.capitalize": "^4.2.1", "lodash.chunk": "^4.2.0", - "lodash.mapvalues": "^4.6.0", - "lodash.snakecase": "^4.1.1", "lodash.times": "^4.3.2", "tslib": "^2.4.0" }, "devDependencies": { "@jest/globals": "^29.5.0", - "@types/detect-node": "^2.0.0", "@types/jest": "^29.5.0", "@types/lodash.chunk": "^4.2.7", - "@types/lodash.mapvalues": "^4.6.7", + "@types/lodash.times": "^4.3.7", "@types/node": "^18.7.23", "jest": "^29.5.0", "prettier": "^2.8.4", - "ts-dedent": "^2.2.0", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "typescript": "^5.0.4" @@ -71,7 +60,6 @@ "files": [ "dest", "src", - "resources", "!*.test.*" ], "types": "./dest/index.d.ts", diff --git a/yarn-project/circuits.js/resources/aztec3-circuits.wasm b/yarn-project/circuits.js/resources/aztec3-circuits.wasm deleted file mode 120000 index 94f54835106..00000000000 --- a/yarn-project/circuits.js/resources/aztec3-circuits.wasm +++ /dev/null @@ -1 +0,0 @@ -../../../circuits/cpp/build-wasm/bin/aztec3-circuits.wasm \ No newline at end of file diff --git a/yarn-project/circuits.js/resources/download_ignition.sh b/yarn-project/circuits.js/resources/download_ignition.sh deleted file mode 100755 index 87c86a8f88b..00000000000 --- a/yarn-project/circuits.js/resources/download_ignition.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/sh -# Downloads the ignition trusted setup transcripts. -# -# See here for details of the contents of the transcript.dat files: -# https://github.com/AztecProtocol/ignition-verification/blob/master/Transcript_spec.md -# -# To download all transcripts. -# ./download_ignition.sh -# -# To download a range of transcripts, e.g. 0, 1 and 2. -# ./download_ignition.sh 2 -# -# If a checksums file is available, it will be used to validate if a download is required -# and also check the validity of the downloaded transcripts. If not the script downloads -# whatever is requested but does not check the validity of the downloads. -set -eu - -mkdir -p ignition -cd ignition -mkdir -p monomial -cd monomial -NUM=${1:-19} -RANGE_START=${2:-} -RANGE_END=${3:-} -APPEND=${4:-"false"} - -if command -v sha256sum > /dev/null; then - SHASUM=sha256sum -else - SHASUM="shasum -a 256" -fi - -checksum() { - grep transcript${1}.dat checksums | $SHASUM -c - return $? -} - -download() { - # Initialize an empty variable for the Range header - RANGE_HEADER="" - - # If both RANGE_START and RANGE_END are set, add them to the Range header - if [ -n "$RANGE_START" ] && [ -n "$RANGE_END" ]; then - RANGE_HEADER="-H Range:bytes=$RANGE_START-$RANGE_END" - fi - - # Download the file - if [ "$APPEND" = "true" ]; then - curl $RANGE_HEADER https://aztec-ignition.s3-eu-west-2.amazonaws.com/MAIN%20IGNITION/monomial/transcript${1}.dat >> transcript${1}.dat - else - curl $RANGE_HEADER https://aztec-ignition.s3-eu-west-2.amazonaws.com/MAIN%20IGNITION/monomial/transcript${1}.dat > transcript${1}.dat - fi - -} - -for TRANSCRIPT in $(seq 0 $NUM); do - NUM=$(printf %02d $TRANSCRIPT) - if [ -f checksums ] && [ -z "$RANGE_START" ] && [ -z "$RANGE_END" ] ; then - checksum $NUM && continue - download $NUM - checksum $NUM || exit 1 - else - download $NUM - fi -done diff --git a/yarn-project/circuits.js/src/abis/abis.test.ts b/yarn-project/circuits.js/src/abis/abis.test.ts index 9550c12e96c..5aac33e2968 100644 --- a/yarn-project/circuits.js/src/abis/abis.test.ts +++ b/yarn-project/circuits.js/src/abis/abis.test.ts @@ -43,7 +43,7 @@ import { siloNullifier, } from './abis.js'; -describe('abis wasm bindings', () => { +describe('abis', () => { it('hashes a tx request', () => { const txRequest = makeTxRequest(); const hash = hashTxRequest(txRequest); diff --git a/yarn-project/circuits.js/src/cbind/cbind.ts b/yarn-project/circuits.js/src/cbind/cbind.ts deleted file mode 100644 index 7cbdb548423..00000000000 --- a/yarn-project/circuits.js/src/cbind/cbind.ts +++ /dev/null @@ -1,69 +0,0 @@ -// TODO: Can be deleted once circuits.gen.ts is gone. -import { IWasmModule } from '@aztec/foundation/wasm'; - -import { decode, encode } from '@msgpack/msgpack'; - -/** - * Recursively converts Uint8Arrays to Buffers in the input data structure. - * The function traverses through the given data, and if it encounters a Uint8Array, - * it replaces it with a Buffer. It supports nested arrays and objects. - * - * @param data - The input data structure that may contain Uint8Arrays. - * @returns A new data structure with all instances of Uint8Array replaced by Buffer. - */ -function recursiveUint8ArrayToBuffer(data: any): any { - if (Array.isArray(data)) { - return data.map(recursiveUint8ArrayToBuffer); - } else if (data instanceof Uint8Array) { - return Buffer.from(data); - } else if (data && typeof data === 'object') { - const fixed: any = {}; - - for (const key in data) { - fixed[key] = recursiveUint8ArrayToBuffer(data[key]); - } - - return fixed; - } else { - return data; - } -} - -/** - * Read a 32-bit pointer value from the WebAssembly memory space. - * - * @param wasm - The CircuitsWasm. - * @param ptr32 - The address in WebAssembly memory. - * @returns The read unsigned 32-bit integer. - */ -function readPtr32(wasm: IWasmModule, ptr32: number) { - // Written in little-endian as WASM native - const dataView = new DataView(wasm.getMemorySlice(ptr32, ptr32 + 4).buffer); - return dataView.getUint32(0, /*little endian*/ true); -} - -/** - * Calls a C binding function in the WebAssembly module with the provided input arguments. - * - * @param wasm - The CircuitsWasm. - * @param cbind - The name of function. - * @param input - An array of input arguments to wrap with msgpack. - * @returns The msgpack-decoded result. - */ -export function callCbind(wasm: IWasmModule, cbind: string, input: any[]): any { - const outputSizePtr = wasm.call('bbmalloc', 4); - const outputMsgpackPtr = wasm.call('bbmalloc', 4); - const inputBuffer = encode(input); - const inputPtr = wasm.call('bbmalloc', inputBuffer.length); - wasm.writeMemory(inputPtr, inputBuffer); - wasm.call(cbind, inputPtr, inputBuffer.length, outputMsgpackPtr, outputSizePtr); - const encodedResult = wasm.getMemorySlice( - readPtr32(wasm, outputMsgpackPtr), - readPtr32(wasm, outputMsgpackPtr) + readPtr32(wasm, outputSizePtr), - ); - const result = recursiveUint8ArrayToBuffer(decode(encodedResult)); - wasm.call('bbfree', inputPtr); - wasm.call('bbfree', outputSizePtr); - wasm.call('bbfree', outputMsgpackPtr); - return result; -} diff --git a/yarn-project/circuits.js/src/cbind/circuits.gen.ts b/yarn-project/circuits.js/src/cbind/circuits.gen.ts deleted file mode 100644 index 1f31d126dc9..00000000000 --- a/yarn-project/circuits.js/src/cbind/circuits.gen.ts +++ /dev/null @@ -1,1021 +0,0 @@ -/* eslint-disable camelcase,jsdoc/require-jsdoc */ -// TODO: Can be deleted once baseRollupSim is not used. -import { Tuple, mapTuple } from '@aztec/foundation/serialize'; -import { IWasmModule } from '@aztec/foundation/wasm'; - -import { Buffer } from 'buffer'; -import mapValues from 'lodash.mapvalues'; - -import { CallRequest } from '../structs/call_request.js'; -import { callCbind } from './cbind.js'; -import { - AppendOnlyTreeSnapshot, - BaseOrMergeRollupPublicInputs, - BaseRollupInputs, - CircuitError, - CombinedAccumulatedData, - CombinedConstantData, - ConstantRollupData, - ContractDeploymentData, - Fq, - Fr, - FunctionData, - FunctionSelector, - G1AffineElement, - GlobalVariables, - HistoricBlockData, - KernelCircuitPublicInputs, - MembershipWitness16, - MembershipWitness20, - NativeAggregationState, - NewContractData, - NullifierLeafPreimage, - OptionallyRevealedData, - Point, - PreviousKernelData, - PublicDataRead, - PublicDataUpdateRequest, - TxContext, - VerificationKeyData, - toBuffer, -} from './types.js'; - -interface MsgpackPoint { - x: Buffer; - y: Buffer; -} - -function fromPoint(o: Point): MsgpackPoint { - if (o.x === undefined) { - throw new Error('Expected x in Point serialization'); - } - if (o.y === undefined) { - throw new Error('Expected y in Point serialization'); - } - return { - x: toBuffer(o.x), - y: toBuffer(o.y), - }; -} - -interface MsgpackGlobalVariables { - chain_id: Buffer; - version: Buffer; - block_number: Buffer; - timestamp: Buffer; -} - -function toGlobalVariables(o: MsgpackGlobalVariables): GlobalVariables { - if (o.chain_id === undefined) { - throw new Error('Expected chain_id in GlobalVariables deserialization'); - } - if (o.version === undefined) { - throw new Error('Expected version in GlobalVariables deserialization'); - } - if (o.block_number === undefined) { - throw new Error('Expected block_number in GlobalVariables deserialization'); - } - if (o.timestamp === undefined) { - throw new Error('Expected timestamp in GlobalVariables deserialization'); - } - return new GlobalVariables( - Fr.fromBuffer(o.chain_id), - Fr.fromBuffer(o.version), - Fr.fromBuffer(o.block_number), - Fr.fromBuffer(o.timestamp), - ); -} - -function fromGlobalVariables(o: GlobalVariables): MsgpackGlobalVariables { - if (o.chainId === undefined) { - throw new Error('Expected chainId in GlobalVariables serialization'); - } - if (o.version === undefined) { - throw new Error('Expected version in GlobalVariables serialization'); - } - if (o.blockNumber === undefined) { - throw new Error('Expected blockNumber in GlobalVariables serialization'); - } - if (o.timestamp === undefined) { - throw new Error('Expected timestamp in GlobalVariables serialization'); - } - return { - chain_id: toBuffer(o.chainId), - version: toBuffer(o.version), - block_number: toBuffer(o.blockNumber), - timestamp: toBuffer(o.timestamp), - }; -} - -interface MsgpackG1AffineElement { - x: Buffer; - y: Buffer; -} - -function toG1AffineElement(o: MsgpackG1AffineElement): G1AffineElement { - if (o.x === undefined) { - throw new Error('Expected x in G1AffineElement deserialization'); - } - if (o.y === undefined) { - throw new Error('Expected y in G1AffineElement deserialization'); - } - return new G1AffineElement(Fq.fromBuffer(o.x), Fq.fromBuffer(o.y)); -} - -function fromG1AffineElement(o: G1AffineElement): MsgpackG1AffineElement { - if (o.x === undefined) { - throw new Error('Expected x in G1AffineElement serialization'); - } - if (o.y === undefined) { - throw new Error('Expected y in G1AffineElement serialization'); - } - return { - x: toBuffer(o.x), - y: toBuffer(o.y), - }; -} - -interface MsgpackNativeAggregationState { - P0: MsgpackG1AffineElement; - P1: MsgpackG1AffineElement; - public_inputs: Buffer[]; - proof_witness_indices: number[]; - has_data: boolean; -} - -function toNativeAggregationState(o: MsgpackNativeAggregationState): NativeAggregationState { - if (o.P0 === undefined) { - throw new Error('Expected P0 in NativeAggregationState deserialization'); - } - if (o.P1 === undefined) { - throw new Error('Expected P1 in NativeAggregationState deserialization'); - } - if (o.public_inputs === undefined) { - throw new Error('Expected public_inputs in NativeAggregationState deserialization'); - } - if (o.proof_witness_indices === undefined) { - throw new Error('Expected proof_witness_indices in NativeAggregationState deserialization'); - } - if (o.has_data === undefined) { - throw new Error('Expected has_data in NativeAggregationState deserialization'); - } - return new NativeAggregationState( - toG1AffineElement(o.P0), - toG1AffineElement(o.P1), - o.public_inputs.map((v: Buffer) => Fr.fromBuffer(v)), - o.proof_witness_indices.map((v: number) => v), - o.has_data, - ); -} - -function fromNativeAggregationState(o: NativeAggregationState): MsgpackNativeAggregationState { - if (o.p0 === undefined) { - throw new Error('Expected p0 in NativeAggregationState serialization'); - } - if (o.p1 === undefined) { - throw new Error('Expected p1 in NativeAggregationState serialization'); - } - if (o.publicInputs === undefined) { - throw new Error('Expected publicInputs in NativeAggregationState serialization'); - } - if (o.proofWitnessIndices === undefined) { - throw new Error('Expected proofWitnessIndices in NativeAggregationState serialization'); - } - if (o.hasData === undefined) { - throw new Error('Expected hasData in NativeAggregationState serialization'); - } - return { - P0: fromG1AffineElement(o.p0), - P1: fromG1AffineElement(o.p1), - public_inputs: o.publicInputs.map((v: Fr) => toBuffer(v)), - proof_witness_indices: o.proofWitnessIndices.map((v: number) => v), - has_data: o.hasData, - }; -} - -interface MsgpackNewContractData { - contract_address: Buffer; - portal_contract_address: Buffer; - function_tree_root: Buffer; -} - -function fromNewContractData(o: NewContractData): MsgpackNewContractData { - if (o.contractAddress === undefined) { - throw new Error('Expected contractAddress in NewContractData serialization'); - } - if (o.portalContractAddress === undefined) { - throw new Error('Expected portalContractAddress in NewContractData serialization'); - } - if (o.functionTreeRoot === undefined) { - throw new Error('Expected functionTreeRoot in NewContractData serialization'); - } - return { - contract_address: toBuffer(o.contractAddress), - portal_contract_address: toBuffer(o.portalContractAddress), - function_tree_root: toBuffer(o.functionTreeRoot), - }; -} - -interface MsgpackFunctionSelector { - value: number; -} - -function fromFunctionSelector(o: FunctionSelector): MsgpackFunctionSelector { - if (o.value === undefined) { - throw new Error('Expected value in FunctionSelector serialization'); - } - return { - value: o.value, - }; -} - -interface MsgpackFunctionData { - selector: MsgpackFunctionSelector; - is_internal: boolean; - is_private: boolean; - is_constructor: boolean; -} - -function fromFunctionData(o: FunctionData): MsgpackFunctionData { - if (o.selector === undefined) { - throw new Error('Expected selector in FunctionData serialization'); - } - if (o.isInternal === undefined) { - throw new Error('Expected isInternal in FunctionData serialization'); - } - if (o.isPrivate === undefined) { - throw new Error('Expected isPrivate in FunctionData serialization'); - } - if (o.isConstructor === undefined) { - throw new Error('Expected isConstructor in FunctionData serialization'); - } - return { - selector: fromFunctionSelector(o.selector), - is_internal: o.isInternal, - is_private: o.isPrivate, - is_constructor: o.isConstructor, - }; -} - -interface MsgpackOptionallyRevealedData { - call_stack_item_hash: Buffer; - function_data: MsgpackFunctionData; - vk_hash: Buffer; - portal_contract_address: Buffer; - pay_fee_from_l1: boolean; - pay_fee_from_public_l2: boolean; - called_from_l1: boolean; - called_from_public_l2: boolean; -} - -function fromOptionallyRevealedData(o: OptionallyRevealedData): MsgpackOptionallyRevealedData { - if (o.callStackItemHash === undefined) { - throw new Error('Expected callStackItemHash in OptionallyRevealedData serialization'); - } - if (o.functionData === undefined) { - throw new Error('Expected functionData in OptionallyRevealedData serialization'); - } - if (o.vkHash === undefined) { - throw new Error('Expected vkHash in OptionallyRevealedData serialization'); - } - if (o.portalContractAddress === undefined) { - throw new Error('Expected portalContractAddress in OptionallyRevealedData serialization'); - } - if (o.payFeeFromL1 === undefined) { - throw new Error('Expected payFeeFromL1 in OptionallyRevealedData serialization'); - } - if (o.payFeeFromPublicL2 === undefined) { - throw new Error('Expected payFeeFromPublicL2 in OptionallyRevealedData serialization'); - } - if (o.calledFromL1 === undefined) { - throw new Error('Expected calledFromL1 in OptionallyRevealedData serialization'); - } - if (o.calledFromPublicL2 === undefined) { - throw new Error('Expected calledFromPublicL2 in OptionallyRevealedData serialization'); - } - return { - call_stack_item_hash: toBuffer(o.callStackItemHash), - function_data: fromFunctionData(o.functionData), - vk_hash: toBuffer(o.vkHash), - portal_contract_address: toBuffer(o.portalContractAddress), - pay_fee_from_l1: o.payFeeFromL1, - pay_fee_from_public_l2: o.payFeeFromPublicL2, - called_from_l1: o.calledFromL1, - called_from_public_l2: o.calledFromPublicL2, - }; -} - -interface MsgpackPublicDataUpdateRequest { - leaf_index: Buffer; - old_value: Buffer; - new_value: Buffer; -} - -function fromPublicDataUpdateRequest(o: PublicDataUpdateRequest): MsgpackPublicDataUpdateRequest { - if (o.leafIndex === undefined) { - throw new Error('Expected leafIndex in PublicDataUpdateRequest serialization'); - } - if (o.oldValue === undefined) { - throw new Error('Expected oldValue in PublicDataUpdateRequest serialization'); - } - if (o.newValue === undefined) { - throw new Error('Expected newValue in PublicDataUpdateRequest serialization'); - } - return { - leaf_index: toBuffer(o.leafIndex), - old_value: toBuffer(o.oldValue), - new_value: toBuffer(o.newValue), - }; -} - -interface MsgpackPublicDataRead { - leaf_index: Buffer; - value: Buffer; -} - -function fromPublicDataRead(o: PublicDataRead): MsgpackPublicDataRead { - if (o.leafIndex === undefined) { - throw new Error('Expected leafIndex in PublicDataRead serialization'); - } - if (o.value === undefined) { - throw new Error('Expected value in PublicDataRead serialization'); - } - return { - leaf_index: toBuffer(o.leafIndex), - value: toBuffer(o.value), - }; -} - -interface MsgpackCombinedAccumulatedData { - aggregation_object: MsgpackNativeAggregationState; - read_requests: Tuple; - pending_read_requests: Tuple; - new_commitments: Tuple; - new_nullifiers: Tuple; - nullified_commitments: Tuple; - private_call_stack: Tuple; - public_call_stack: Tuple; - new_l2_to_l1_msgs: Tuple; - encrypted_logs_hash: Tuple; - unencrypted_logs_hash: Tuple; - encrypted_log_preimages_length: Buffer; - unencrypted_log_preimages_length: Buffer; - new_contracts: Tuple; - optionally_revealed_data: Tuple; - public_data_update_requests: Tuple; - public_data_reads: Tuple; -} - -function fromCombinedAccumulatedData(o: CombinedAccumulatedData): MsgpackCombinedAccumulatedData { - if (o.aggregationObject === undefined) { - throw new Error('Expected aggregationObject in CombinedAccumulatedData serialization'); - } - if (o.readRequests === undefined) { - throw new Error('Expected readRequests in CombinedAccumulatedData serialization'); - } - if (o.pendingReadRequests === undefined) { - throw new Error('Expected pendingReadRequests in CombinedAccumulatedData serialization'); - } - if (o.newCommitments === undefined) { - throw new Error('Expected newCommitments in CombinedAccumulatedData serialization'); - } - if (o.newNullifiers === undefined) { - throw new Error('Expected newNullifiers in CombinedAccumulatedData serialization'); - } - if (o.nullifiedCommitments === undefined) { - throw new Error('Expected nullifiedCommitments in CombinedAccumulatedData serialization'); - } - if (o.privateCallStack === undefined) { - throw new Error('Expected privateCallStack in CombinedAccumulatedData serialization'); - } - if (o.publicCallStack === undefined) { - throw new Error('Expected publicCallStack in CombinedAccumulatedData serialization'); - } - if (o.newL2ToL1Msgs === undefined) { - throw new Error('Expected newL2ToL1Msgs in CombinedAccumulatedData serialization'); - } - if (o.encryptedLogsHash === undefined) { - throw new Error('Expected encryptedLogsHash in CombinedAccumulatedData serialization'); - } - if (o.unencryptedLogsHash === undefined) { - throw new Error('Expected unencryptedLogsHash in CombinedAccumulatedData serialization'); - } - if (o.encryptedLogPreimagesLength === undefined) { - throw new Error('Expected encryptedLogPreimagesLength in CombinedAccumulatedData serialization'); - } - if (o.unencryptedLogPreimagesLength === undefined) { - throw new Error('Expected unencryptedLogPreimagesLength in CombinedAccumulatedData serialization'); - } - if (o.newContracts === undefined) { - throw new Error('Expected newContracts in CombinedAccumulatedData serialization'); - } - if (o.optionallyRevealedData === undefined) { - throw new Error('Expected optionallyRevealedData in CombinedAccumulatedData serialization'); - } - if (o.publicDataUpdateRequests === undefined) { - throw new Error('Expected publicDataUpdateRequests in CombinedAccumulatedData serialization'); - } - if (o.publicDataReads === undefined) { - throw new Error('Expected publicDataReads in CombinedAccumulatedData serialization'); - } - return { - aggregation_object: fromNativeAggregationState(o.aggregationObject), - read_requests: mapTuple(o.readRequests, (v: Fr) => toBuffer(v)), - pending_read_requests: mapTuple(o.pendingReadRequests, (v: Fr) => toBuffer(v)), - new_commitments: mapTuple(o.newCommitments, (v: Fr) => toBuffer(v)), - new_nullifiers: mapTuple(o.newNullifiers, (v: Fr) => toBuffer(v)), - nullified_commitments: mapTuple(o.nullifiedCommitments, (v: Fr) => toBuffer(v)), - private_call_stack: mapTuple(o.privateCallStack, (v: CallRequest) => toBuffer(v.hash)), - public_call_stack: mapTuple(o.publicCallStack, (v: CallRequest) => toBuffer(v.hash)), - new_l2_to_l1_msgs: mapTuple(o.newL2ToL1Msgs, (v: Fr) => toBuffer(v)), - encrypted_logs_hash: mapTuple(o.encryptedLogsHash, (v: Fr) => toBuffer(v)), - unencrypted_logs_hash: mapTuple(o.unencryptedLogsHash, (v: Fr) => toBuffer(v)), - encrypted_log_preimages_length: toBuffer(o.encryptedLogPreimagesLength), - unencrypted_log_preimages_length: toBuffer(o.unencryptedLogPreimagesLength), - new_contracts: mapTuple(o.newContracts, (v: NewContractData) => fromNewContractData(v)), - optionally_revealed_data: mapTuple(o.optionallyRevealedData, (v: OptionallyRevealedData) => - fromOptionallyRevealedData(v), - ), - public_data_update_requests: mapTuple(o.publicDataUpdateRequests, (v: PublicDataUpdateRequest) => - fromPublicDataUpdateRequest(v), - ), - public_data_reads: mapTuple(o.publicDataReads, (v: PublicDataRead) => fromPublicDataRead(v)), - }; -} - -interface MsgpackHistoricBlockData { - note_hash_tree_root: Buffer; - nullifier_tree_root: Buffer; - contract_tree_root: Buffer; - l1_to_l2_messages_tree_root: Buffer; - blocks_tree_root: Buffer; - private_kernel_vk_tree_root: Buffer; - public_data_tree_root: Buffer; - global_variables_hash: Buffer; -} - -function fromHistoricBlockData(o: HistoricBlockData): MsgpackHistoricBlockData { - if (o.noteHashTreeRoot === undefined) { - throw new Error('Expected noteHashTreeRoot in HistoricBlockData serialization'); - } - if (o.nullifierTreeRoot === undefined) { - throw new Error('Expected nullifierTreeRoot in HistoricBlockData serialization'); - } - if (o.contractTreeRoot === undefined) { - throw new Error('Expected contractTreeRoot in HistoricBlockData serialization'); - } - if (o.l1ToL2MessagesTreeRoot === undefined) { - throw new Error('Expected l1ToL2MessagesTreeRoot in HistoricBlockData serialization'); - } - if (o.blocksTreeRoot === undefined) { - throw new Error('Expected blocksTreeRoot in HistoricBlockData serialization'); - } - if (o.privateKernelVkTreeRoot === undefined) { - throw new Error('Expected privateKernelVkTreeRoot in HistoricBlockData serialization'); - } - if (o.publicDataTreeRoot === undefined) { - throw new Error('Expected publicDataTreeRoot in HistoricBlockData serialization'); - } - if (o.globalVariablesHash === undefined) { - throw new Error('Expected globalVariablesHash in HistoricBlockData serialization'); - } - return { - note_hash_tree_root: toBuffer(o.noteHashTreeRoot), - nullifier_tree_root: toBuffer(o.nullifierTreeRoot), - contract_tree_root: toBuffer(o.contractTreeRoot), - l1_to_l2_messages_tree_root: toBuffer(o.l1ToL2MessagesTreeRoot), - blocks_tree_root: toBuffer(o.blocksTreeRoot), - private_kernel_vk_tree_root: toBuffer(o.privateKernelVkTreeRoot), - public_data_tree_root: toBuffer(o.publicDataTreeRoot), - global_variables_hash: toBuffer(o.globalVariablesHash), - }; -} - -interface MsgpackContractDeploymentData { - deployer_public_key: MsgpackPoint; - constructor_vk_hash: Buffer; - function_tree_root: Buffer; - contract_address_salt: Buffer; - portal_contract_address: Buffer; -} - -function fromContractDeploymentData(o: ContractDeploymentData): MsgpackContractDeploymentData { - if (o.deployerPublicKey === undefined) { - throw new Error('Expected deployerPublicKey in ContractDeploymentData serialization'); - } - if (o.constructorVkHash === undefined) { - throw new Error('Expected constructorVkHash in ContractDeploymentData serialization'); - } - if (o.functionTreeRoot === undefined) { - throw new Error('Expected functionTreeRoot in ContractDeploymentData serialization'); - } - if (o.contractAddressSalt === undefined) { - throw new Error('Expected contractAddressSalt in ContractDeploymentData serialization'); - } - if (o.portalContractAddress === undefined) { - throw new Error('Expected portalContractAddress in ContractDeploymentData serialization'); - } - return { - deployer_public_key: fromPoint(o.deployerPublicKey), - constructor_vk_hash: toBuffer(o.constructorVkHash), - function_tree_root: toBuffer(o.functionTreeRoot), - contract_address_salt: toBuffer(o.contractAddressSalt), - portal_contract_address: toBuffer(o.portalContractAddress), - }; -} - -interface MsgpackTxContext { - is_fee_payment_tx: boolean; - is_rebate_payment_tx: boolean; - is_contract_deployment_tx: boolean; - contract_deployment_data: MsgpackContractDeploymentData; - chain_id: Buffer; - version: Buffer; -} - -function fromTxContext(o: TxContext): MsgpackTxContext { - if (o.isFeePaymentTx === undefined) { - throw new Error('Expected isFeePaymentTx in TxContext serialization'); - } - if (o.isRebatePaymentTx === undefined) { - throw new Error('Expected isRebatePaymentTx in TxContext serialization'); - } - if (o.isContractDeploymentTx === undefined) { - throw new Error('Expected isContractDeploymentTx in TxContext serialization'); - } - if (o.contractDeploymentData === undefined) { - throw new Error('Expected contractDeploymentData in TxContext serialization'); - } - if (o.chainId === undefined) { - throw new Error('Expected chainId in TxContext serialization'); - } - if (o.version === undefined) { - throw new Error('Expected version in TxContext serialization'); - } - return { - is_fee_payment_tx: o.isFeePaymentTx, - is_rebate_payment_tx: o.isRebatePaymentTx, - is_contract_deployment_tx: o.isContractDeploymentTx, - contract_deployment_data: fromContractDeploymentData(o.contractDeploymentData), - chain_id: toBuffer(o.chainId), - version: toBuffer(o.version), - }; -} - -interface MsgpackCombinedConstantData { - block_data: MsgpackHistoricBlockData; - tx_context: MsgpackTxContext; -} - -function fromCombinedConstantData(o: CombinedConstantData): MsgpackCombinedConstantData { - if (o.blockData === undefined) { - throw new Error('Expected blockData in CombinedConstantData serialization'); - } - if (o.txContext === undefined) { - throw new Error('Expected txContext in CombinedConstantData serialization'); - } - return { - block_data: fromHistoricBlockData(o.blockData), - tx_context: fromTxContext(o.txContext), - }; -} - -interface MsgpackKernelCircuitPublicInputs { - end: MsgpackCombinedAccumulatedData; - constants: MsgpackCombinedConstantData; - is_private: boolean; -} - -function fromKernelCircuitPublicInputs(o: KernelCircuitPublicInputs): MsgpackKernelCircuitPublicInputs { - if (o.end === undefined) { - throw new Error('Expected end in KernelCircuitPublicInputs serialization'); - } - if (o.constants === undefined) { - throw new Error('Expected constants in KernelCircuitPublicInputs serialization'); - } - if (o.isPrivate === undefined) { - throw new Error('Expected isPrivate in KernelCircuitPublicInputs serialization'); - } - return { - end: fromCombinedAccumulatedData(o.end), - constants: fromCombinedConstantData(o.constants), - is_private: o.isPrivate, - }; -} - -interface MsgpackVerificationKeyData { - circuit_type: number; - circuit_size: number; - num_public_inputs: number; - commitments: Record; - contains_recursive_proof: boolean; - recursive_proof_public_input_indices: number[]; -} - -function fromVerificationKeyData(o: VerificationKeyData): MsgpackVerificationKeyData { - if (o.circuitType === undefined) { - throw new Error('Expected circuitType in VerificationKeyData serialization'); - } - if (o.circuitSize === undefined) { - throw new Error('Expected circuitSize in VerificationKeyData serialization'); - } - if (o.numPublicInputs === undefined) { - throw new Error('Expected numPublicInputs in VerificationKeyData serialization'); - } - if (o.commitments === undefined) { - throw new Error('Expected commitments in VerificationKeyData serialization'); - } - if (o.containsRecursiveProof === undefined) { - throw new Error('Expected containsRecursiveProof in VerificationKeyData serialization'); - } - if (o.recursiveProofPublicInputIndices === undefined) { - throw new Error('Expected recursiveProofPublicInputIndices in VerificationKeyData serialization'); - } - return { - circuit_type: o.circuitType, - circuit_size: o.circuitSize, - num_public_inputs: o.numPublicInputs, - commitments: mapValues(o.commitments, (v: G1AffineElement) => fromG1AffineElement(v)), - contains_recursive_proof: o.containsRecursiveProof, - recursive_proof_public_input_indices: o.recursiveProofPublicInputIndices.map((v: number) => v), - }; -} - -interface MsgpackPreviousKernelData { - public_inputs: MsgpackKernelCircuitPublicInputs; - proof: Buffer; - vk: MsgpackVerificationKeyData; - vk_index: number; - vk_path: Tuple; -} - -function fromPreviousKernelData(o: PreviousKernelData): MsgpackPreviousKernelData { - if (o.publicInputs === undefined) { - throw new Error('Expected publicInputs in PreviousKernelData serialization'); - } - if (o.proof === undefined) { - throw new Error('Expected proof in PreviousKernelData serialization'); - } - if (o.vk === undefined) { - throw new Error('Expected vk in PreviousKernelData serialization'); - } - if (o.vkIndex === undefined) { - throw new Error('Expected vkIndex in PreviousKernelData serialization'); - } - if (o.vkPath === undefined) { - throw new Error('Expected vkPath in PreviousKernelData serialization'); - } - return { - public_inputs: fromKernelCircuitPublicInputs(o.publicInputs), - proof: o.proof.toMsgpackBuffer(), - vk: fromVerificationKeyData(o.vk), - vk_index: o.vkIndex, - vk_path: mapTuple(o.vkPath, (v: Fr) => toBuffer(v)), - }; -} - -interface MsgpackMembershipWitness16 { - leaf_index: Buffer; - sibling_path: Tuple; -} - -function fromMembershipWitness16(o: MembershipWitness16): MsgpackMembershipWitness16 { - if (o.leafIndex === undefined) { - throw new Error('Expected leafIndex in MembershipWitness16 serialization'); - } - if (o.siblingPath === undefined) { - throw new Error('Expected siblingPath in MembershipWitness16 serialization'); - } - return { - leaf_index: toBuffer(o.leafIndex), - sibling_path: mapTuple(o.siblingPath, (v: Fr) => toBuffer(v)), - }; -} - -interface MsgpackCircuitError { - code: number; - message: string; -} - -function toCircuitError(o: MsgpackCircuitError): CircuitError { - if (o.code === undefined) { - throw new Error('Expected code in CircuitError deserialization'); - } - if (o.message === undefined) { - throw new Error('Expected message in CircuitError deserialization'); - } - return new CircuitError(o.code, o.message); -} - -interface MsgpackAppendOnlyTreeSnapshot { - root: Buffer; - next_available_leaf_index: number; -} - -function toAppendOnlyTreeSnapshot(o: MsgpackAppendOnlyTreeSnapshot): AppendOnlyTreeSnapshot { - if (o.root === undefined) { - throw new Error('Expected root in AppendOnlyTreeSnapshot deserialization'); - } - if (o.next_available_leaf_index === undefined) { - throw new Error('Expected next_available_leaf_index in AppendOnlyTreeSnapshot deserialization'); - } - return new AppendOnlyTreeSnapshot(Fr.fromBuffer(o.root), o.next_available_leaf_index); -} - -function fromAppendOnlyTreeSnapshot(o: AppendOnlyTreeSnapshot): MsgpackAppendOnlyTreeSnapshot { - if (o.root === undefined) { - throw new Error('Expected root in AppendOnlyTreeSnapshot serialization'); - } - if (o.nextAvailableLeafIndex === undefined) { - throw new Error('Expected nextAvailableLeafIndex in AppendOnlyTreeSnapshot serialization'); - } - return { - root: toBuffer(o.root), - next_available_leaf_index: o.nextAvailableLeafIndex, - }; -} - -interface MsgpackNullifierLeafPreimage { - leaf_value: Buffer; - next_value: Buffer; - next_index: number; -} - -function fromNullifierLeafPreimage(o: NullifierLeafPreimage): MsgpackNullifierLeafPreimage { - if (o.leafValue === undefined) { - throw new Error('Expected leafValue in NullifierLeafPreimage serialization'); - } - if (o.nextValue === undefined) { - throw new Error('Expected nextValue in NullifierLeafPreimage serialization'); - } - if (o.nextIndex === undefined) { - throw new Error('Expected nextIndex in NullifierLeafPreimage serialization'); - } - return { - leaf_value: toBuffer(o.leafValue), - next_value: toBuffer(o.nextValue), - next_index: o.nextIndex, - }; -} - -interface MsgpackMembershipWitness20 { - leaf_index: Buffer; - sibling_path: Tuple; -} - -function fromMembershipWitness20(o: MembershipWitness20): MsgpackMembershipWitness20 { - if (o.leafIndex === undefined) { - throw new Error('Expected leafIndex in MembershipWitness20 serialization'); - } - if (o.siblingPath === undefined) { - throw new Error('Expected siblingPath in MembershipWitness20 serialization'); - } - return { - leaf_index: toBuffer(o.leafIndex), - sibling_path: mapTuple(o.siblingPath, (v: Fr) => toBuffer(v)), - }; -} - -interface MsgpackConstantRollupData { - start_historic_blocks_tree_roots_snapshot: MsgpackAppendOnlyTreeSnapshot; - private_kernel_vk_tree_root: Buffer; - public_kernel_vk_tree_root: Buffer; - base_rollup_vk_hash: Buffer; - merge_rollup_vk_hash: Buffer; - global_variables: MsgpackGlobalVariables; -} - -function toConstantRollupData(o: MsgpackConstantRollupData): ConstantRollupData { - if (o.start_historic_blocks_tree_roots_snapshot === undefined) { - throw new Error('Expected start_historic_blocks_tree_roots_snapshot in ConstantRollupData deserialization'); - } - if (o.private_kernel_vk_tree_root === undefined) { - throw new Error('Expected private_kernel_vk_tree_root in ConstantRollupData deserialization'); - } - if (o.public_kernel_vk_tree_root === undefined) { - throw new Error('Expected public_kernel_vk_tree_root in ConstantRollupData deserialization'); - } - if (o.base_rollup_vk_hash === undefined) { - throw new Error('Expected base_rollup_vk_hash in ConstantRollupData deserialization'); - } - if (o.merge_rollup_vk_hash === undefined) { - throw new Error('Expected merge_rollup_vk_hash in ConstantRollupData deserialization'); - } - if (o.global_variables === undefined) { - throw new Error('Expected global_variables in ConstantRollupData deserialization'); - } - return new ConstantRollupData( - toAppendOnlyTreeSnapshot(o.start_historic_blocks_tree_roots_snapshot), - Fr.fromBuffer(o.private_kernel_vk_tree_root), - Fr.fromBuffer(o.public_kernel_vk_tree_root), - Fr.fromBuffer(o.base_rollup_vk_hash), - Fr.fromBuffer(o.merge_rollup_vk_hash), - toGlobalVariables(o.global_variables), - ); -} - -function fromConstantRollupData(o: ConstantRollupData): MsgpackConstantRollupData { - if (o.startHistoricBlocksTreeRootsSnapshot === undefined) { - throw new Error('Expected startHistoricBlocksTreeRootsSnapshot in ConstantRollupData serialization'); - } - if (o.privateKernelVkTreeRoot === undefined) { - throw new Error('Expected privateKernelVkTreeRoot in ConstantRollupData serialization'); - } - if (o.publicKernelVkTreeRoot === undefined) { - throw new Error('Expected publicKernelVkTreeRoot in ConstantRollupData serialization'); - } - if (o.baseRollupVkHash === undefined) { - throw new Error('Expected baseRollupVkHash in ConstantRollupData serialization'); - } - if (o.mergeRollupVkHash === undefined) { - throw new Error('Expected mergeRollupVkHash in ConstantRollupData serialization'); - } - if (o.globalVariables === undefined) { - throw new Error('Expected globalVariables in ConstantRollupData serialization'); - } - return { - start_historic_blocks_tree_roots_snapshot: fromAppendOnlyTreeSnapshot(o.startHistoricBlocksTreeRootsSnapshot), - private_kernel_vk_tree_root: toBuffer(o.privateKernelVkTreeRoot), - public_kernel_vk_tree_root: toBuffer(o.publicKernelVkTreeRoot), - base_rollup_vk_hash: toBuffer(o.baseRollupVkHash), - merge_rollup_vk_hash: toBuffer(o.mergeRollupVkHash), - global_variables: fromGlobalVariables(o.globalVariables), - }; -} - -interface MsgpackBaseRollupInputs { - kernel_data: Tuple; - start_note_hash_tree_snapshot: MsgpackAppendOnlyTreeSnapshot; - start_nullifier_tree_snapshot: MsgpackAppendOnlyTreeSnapshot; - start_contract_tree_snapshot: MsgpackAppendOnlyTreeSnapshot; - start_public_data_tree_root: Buffer; - start_historic_blocks_tree_snapshot: MsgpackAppendOnlyTreeSnapshot; - low_nullifier_leaf_preimages: Tuple; - low_nullifier_membership_witness: Tuple; - new_commitments_subtree_sibling_path: Tuple; - new_nullifiers_subtree_sibling_path: Tuple; - new_contracts_subtree_sibling_path: Tuple; - new_public_data_update_requests_sibling_paths: Tuple, 32>; - new_public_data_reads_sibling_paths: Tuple, 32>; - historic_blocks_tree_root_membership_witnesses: Tuple; - constants: MsgpackConstantRollupData; -} - -function fromBaseRollupInputs(o: BaseRollupInputs): MsgpackBaseRollupInputs { - if (o.kernelData === undefined) { - throw new Error('Expected kernelData in BaseRollupInputs serialization'); - } - if (o.startNoteHashTreeSnapshot === undefined) { - throw new Error('Expected startNoteHashTreeSnapshot in BaseRollupInputs serialization'); - } - if (o.startNullifierTreeSnapshot === undefined) { - throw new Error('Expected startNullifierTreeSnapshot in BaseRollupInputs serialization'); - } - if (o.startContractTreeSnapshot === undefined) { - throw new Error('Expected startContractTreeSnapshot in BaseRollupInputs serialization'); - } - if (o.startPublicDataTreeRoot === undefined) { - throw new Error('Expected startPublicDataTreeRoot in BaseRollupInputs serialization'); - } - if (o.startHistoricBlocksTreeSnapshot === undefined) { - throw new Error('Expected startHistoricBlocksTreeSnapshot in BaseRollupInputs serialization'); - } - if (o.lowNullifierLeafPreimages === undefined) { - throw new Error('Expected lowNullifierLeafPreimages in BaseRollupInputs serialization'); - } - if (o.lowNullifierMembershipWitness === undefined) { - throw new Error('Expected lowNullifierMembershipWitness in BaseRollupInputs serialization'); - } - if (o.newCommitmentsSubtreeSiblingPath === undefined) { - throw new Error('Expected newCommitmentsSubtreeSiblingPath in BaseRollupInputs serialization'); - } - if (o.newNullifiersSubtreeSiblingPath === undefined) { - throw new Error('Expected newNullifiersSubtreeSiblingPath in BaseRollupInputs serialization'); - } - if (o.newContractsSubtreeSiblingPath === undefined) { - throw new Error('Expected newContractsSubtreeSiblingPath in BaseRollupInputs serialization'); - } - if (o.newPublicDataUpdateRequestsSiblingPaths === undefined) { - throw new Error('Expected newPublicDataUpdateRequestsSiblingPaths in BaseRollupInputs serialization'); - } - if (o.newPublicDataReadsSiblingPaths === undefined) { - throw new Error('Expected newPublicDataReadsSiblingPaths in BaseRollupInputs serialization'); - } - if (o.historicBlocksTreeRootMembershipWitnesses === undefined) { - throw new Error('Expected historicBlocksTreeRootMembershipWitnesses in BaseRollupInputs serialization'); - } - if (o.constants === undefined) { - throw new Error('Expected constants in BaseRollupInputs serialization'); - } - return { - kernel_data: mapTuple(o.kernelData, (v: PreviousKernelData) => fromPreviousKernelData(v)), - start_note_hash_tree_snapshot: fromAppendOnlyTreeSnapshot(o.startNoteHashTreeSnapshot), - start_nullifier_tree_snapshot: fromAppendOnlyTreeSnapshot(o.startNullifierTreeSnapshot), - start_contract_tree_snapshot: fromAppendOnlyTreeSnapshot(o.startContractTreeSnapshot), - start_public_data_tree_root: toBuffer(o.startPublicDataTreeRoot), - start_historic_blocks_tree_snapshot: fromAppendOnlyTreeSnapshot(o.startHistoricBlocksTreeSnapshot), - low_nullifier_leaf_preimages: mapTuple(o.lowNullifierLeafPreimages, (v: NullifierLeafPreimage) => - fromNullifierLeafPreimage(v), - ), - low_nullifier_membership_witness: mapTuple(o.lowNullifierMembershipWitness, (v: MembershipWitness20) => - fromMembershipWitness20(v), - ), - new_commitments_subtree_sibling_path: mapTuple(o.newCommitmentsSubtreeSiblingPath, (v: Fr) => toBuffer(v)), - new_nullifiers_subtree_sibling_path: mapTuple(o.newNullifiersSubtreeSiblingPath, (v: Fr) => toBuffer(v)), - new_contracts_subtree_sibling_path: mapTuple(o.newContractsSubtreeSiblingPath, (v: Fr) => toBuffer(v)), - new_public_data_update_requests_sibling_paths: mapTuple( - o.newPublicDataUpdateRequestsSiblingPaths, - (v: Tuple) => mapTuple(v, (v: Fr) => toBuffer(v)), - ), - new_public_data_reads_sibling_paths: mapTuple(o.newPublicDataReadsSiblingPaths, (v: Tuple) => - mapTuple(v, (v: Fr) => toBuffer(v)), - ), - historic_blocks_tree_root_membership_witnesses: mapTuple( - o.historicBlocksTreeRootMembershipWitnesses, - (v: MembershipWitness16) => fromMembershipWitness16(v), - ), - constants: fromConstantRollupData(o.constants), - }; -} - -interface MsgpackBaseOrMergeRollupPublicInputs { - rollup_type: number; - rollup_subtree_height: Buffer; - end_aggregation_object: MsgpackNativeAggregationState; - constants: MsgpackConstantRollupData; - start_note_hash_tree_snapshot: MsgpackAppendOnlyTreeSnapshot; - end_note_hash_tree_snapshot: MsgpackAppendOnlyTreeSnapshot; - start_nullifier_tree_snapshot: MsgpackAppendOnlyTreeSnapshot; - end_nullifier_tree_snapshot: MsgpackAppendOnlyTreeSnapshot; - start_contract_tree_snapshot: MsgpackAppendOnlyTreeSnapshot; - end_contract_tree_snapshot: MsgpackAppendOnlyTreeSnapshot; - start_public_data_tree_root: Buffer; - end_public_data_tree_root: Buffer; - calldata_hash: Tuple; -} - -function toBaseOrMergeRollupPublicInputs(o: MsgpackBaseOrMergeRollupPublicInputs): BaseOrMergeRollupPublicInputs { - if (o.rollup_type === undefined) { - throw new Error('Expected rollup_type in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.rollup_subtree_height === undefined) { - throw new Error('Expected rollup_subtree_height in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.end_aggregation_object === undefined) { - throw new Error('Expected end_aggregation_object in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.constants === undefined) { - throw new Error('Expected constants in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.start_note_hash_tree_snapshot === undefined) { - throw new Error('Expected start_note_hash_tree_snapshot in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.end_note_hash_tree_snapshot === undefined) { - throw new Error('Expected end_note_hash_tree_snapshot in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.start_nullifier_tree_snapshot === undefined) { - throw new Error('Expected start_nullifier_tree_snapshot in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.end_nullifier_tree_snapshot === undefined) { - throw new Error('Expected end_nullifier_tree_snapshot in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.start_contract_tree_snapshot === undefined) { - throw new Error('Expected start_contract_tree_snapshot in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.end_contract_tree_snapshot === undefined) { - throw new Error('Expected end_contract_tree_snapshot in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.start_public_data_tree_root === undefined) { - throw new Error('Expected start_public_data_tree_root in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.end_public_data_tree_root === undefined) { - throw new Error('Expected end_public_data_tree_root in BaseOrMergeRollupPublicInputs deserialization'); - } - if (o.calldata_hash === undefined) { - throw new Error('Expected calldata_hash in BaseOrMergeRollupPublicInputs deserialization'); - } - return new BaseOrMergeRollupPublicInputs( - o.rollup_type, - Fr.fromBuffer(o.rollup_subtree_height), - toNativeAggregationState(o.end_aggregation_object), - toConstantRollupData(o.constants), - toAppendOnlyTreeSnapshot(o.start_note_hash_tree_snapshot), - toAppendOnlyTreeSnapshot(o.end_note_hash_tree_snapshot), - toAppendOnlyTreeSnapshot(o.start_nullifier_tree_snapshot), - toAppendOnlyTreeSnapshot(o.end_nullifier_tree_snapshot), - toAppendOnlyTreeSnapshot(o.start_contract_tree_snapshot), - toAppendOnlyTreeSnapshot(o.end_contract_tree_snapshot), - Fr.fromBuffer(o.start_public_data_tree_root), - Fr.fromBuffer(o.end_public_data_tree_root), - mapTuple(o.calldata_hash, (v: Buffer) => Fr.fromBuffer(v)), - ); -} - -export function baseRollupSim(wasm: IWasmModule, arg0: BaseRollupInputs): CircuitError | BaseOrMergeRollupPublicInputs { - return ((v: [number, MsgpackCircuitError | MsgpackBaseOrMergeRollupPublicInputs]) => - v[0] == 0 - ? toCircuitError(v[1] as MsgpackCircuitError) - : toBaseOrMergeRollupPublicInputs(v[1] as MsgpackBaseOrMergeRollupPublicInputs))( - callCbind(wasm, 'base_rollup__sim', [fromBaseRollupInputs(arg0)]), - ); -} diff --git a/yarn-project/circuits.js/src/cbind/types.ts b/yarn-project/circuits.js/src/cbind/types.ts deleted file mode 100644 index fadb9715add..00000000000 --- a/yarn-project/circuits.js/src/cbind/types.ts +++ /dev/null @@ -1,114 +0,0 @@ -// TODO: Can be deleted once circuits.gen.ts is gone. -// Type mappings for cbinds -// Can either export things directly or handle -// naming differences with the 'as' syntax -import { toBufferBE } from '@aztec/foundation/bigint-buffer'; -import { Fr } from '@aztec/foundation/fields'; -import { Tuple } from '@aztec/foundation/serialize'; - -import { MembershipWitness } from '../structs/membership_witness.js'; - -/** - * Alias for msgpack which expects a MembershipWitness + N name. - */ -export class MembershipWitness20 extends MembershipWitness<20> { - constructor( - /** - * Index of a leaf in the Merkle tree. - */ - leafIndex: Fr, - /** - * Sibling path of the leaf in the Merkle tree. - */ - siblingPath: Tuple, - ) { - super(20, leafIndex.toBigInt(), siblingPath); - } -} - -/** - * Alias for msgpack which expects a MembershipWitness + N name. - */ -export class MembershipWitness16 extends MembershipWitness<16> { - constructor( - /** - * Index of a leaf in the Merkle tree. - */ - leafIndex: Fr, - /** - * Sibling path of the leaf in the Merkle tree. - */ - siblingPath: Tuple, - ) { - super(16, leafIndex.toBigInt(), siblingPath); - } -} - -/** - * Coerce a variety of types to a buffer. - * Makes msgpack output easier to manage as this can handle a few cases. - * @param bufferable - The value to coerce. - */ -export function toBuffer(bufferable: { toBuffer(): Buffer } | bigint | Buffer) { - if (typeof bufferable === 'bigint') { - return toBufferBE(bufferable, 32); - } else if (bufferable instanceof Buffer) { - return bufferable; - } else { - return bufferable.toBuffer(); - } -} - -export { - AggregationObject as NativeAggregationState, - AztecAddress as Address, - VerificationKey as VerificationKeyData, - Fr, - Fq, - G1AffineElement, - NewContractData, - FunctionData, - OptionallyRevealedData, - PublicDataRead, - PublicDataUpdateRequest, - ReadRequestMembershipWitness, - CombinedAccumulatedData, - FinalAccumulatedData, - HistoricBlockData, - ContractDeploymentData, - TxContext, - CombinedConstantData, - CompleteAddress, - KernelCircuitPublicInputs, - KernelCircuitPublicInputsFinal, - Proof, - PreviousKernelData, - CallContext, - ContractStorageUpdateRequest, - ContractStorageRead, - PublicCircuitPublicInputs, - PublicCallStackItem, - PublicCallData, - PublicKernelInputs, - CircuitError, - Point, - Coordinate, - GlobalVariables, - PrivateKernelInputsOrdering, - PrivateCallData, - PrivateCallStackItem, - PrivateCircuitPublicInputs, - PrivateKernelInputsInit, - PrivateKernelInputsInner, - TxRequest, - PreviousRollupData, - AppendOnlyTreeSnapshot, - BaseRollupInputs, - NullifierLeafPreimage, - BaseOrMergeRollupPublicInputs, - ConstantRollupData, - MergeRollupInputs, - RootRollupInputs, - RootRollupPublicInputs, -} from '../structs/index.js'; -export { FunctionSelector } from '@aztec/foundation/abi'; diff --git a/yarn-project/circuits.js/src/contract/contract_tree/contract_tree.ts b/yarn-project/circuits.js/src/contract/contract_tree/contract_tree.ts index f8da811530e..2f9c9a7a8b4 100644 --- a/yarn-project/circuits.js/src/contract/contract_tree/contract_tree.ts +++ b/yarn-project/circuits.js/src/contract/contract_tree/contract_tree.ts @@ -8,7 +8,6 @@ import { FunctionSelector, FunctionType } from '@aztec/foundation/abi'; * Returns a Promise that resolves to a Buffer containing the hash of the verification key. * * @param vk - The hex-encoded string representing the verification key. - * @param wasm - An instance of CircuitsWasm class used for hashing. * @returns A Promise resolving to a Buffer containing the hash of the verification key. */ export function hashVKStr(vk: string) { @@ -61,7 +60,6 @@ export function isConstrained({ * Each function leaf is computed from its selector, privacy flag, hashed verification key, and hashed bytecode. * * @param functions - Array of ContractFunctionDao objects representing the functions in a contract. - * @param wasm - CircuitsWasm instance used for hashing and computations. * @returns An array of Fr instances representing the generated function leaves. */ export function generateFunctionLeaves(functions: ContractFunctionDao[]) { diff --git a/yarn-project/circuits.js/src/crs/index.ts b/yarn-project/circuits.js/src/crs/index.ts deleted file mode 100644 index 48b4f85ad39..00000000000 --- a/yarn-project/circuits.js/src/crs/index.ts +++ /dev/null @@ -1,225 +0,0 @@ -import { createDebugLogger } from '@aztec/foundation/log'; -import { fileURLToPath } from '@aztec/foundation/url'; - -import isNode from 'detect-node'; -import { existsSync } from 'fs'; -import { mkdir, open } from 'fs/promises'; -import { dirname, join } from 'path'; - -/** - * Downloader for CRS from the web or local. - */ -export class NetCrs { - private data!: Uint8Array; - private g2Data!: Uint8Array; - - constructor( - /** - * The number of circuit gates. - */ - public readonly numPoints: number, - ) {} - - /** - * Download the data. - */ - async init() { - // We need numPoints number of g1 points. - const g1Start = 28; - const g1End = g1Start + this.numPoints * 64 - 1; - // Download required range of data. - const response = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/monomial/transcript00.dat', { - headers: { - Range: `bytes=${g1Start}-${g1End}`, - }, - }); - - this.data = new Uint8Array(await response.arrayBuffer()); - - await this.downloadG2Data(); - } - - /** - * Download the G2 points data. - */ - async downloadG2Data() { - const g2Start = 28 + 5_040_001 * 64; // = 322_560_092 - - const g2End = g2Start + 128 - 1; - - const response2 = await fetch('https://aztec-ignition.s3.amazonaws.com/MAIN%20IGNITION/monomial/transcript00.dat', { - headers: { - Range: `bytes=${g2Start}-${g2End}`, - }, - }); - - this.g2Data = new Uint8Array(await response2.arrayBuffer()); - } - - /** - * Verification key data. - * @returns The verification key. - */ - getG1Data(): Uint8Array { - return this.data; - } - - /** - * G2 points data. - * @returns The points data. - */ - getG2Data(): Uint8Array { - return this.g2Data; - } -} - -/** - * Downloader for CRS from a local file (for Node). - */ -export class FileCrs { - private data!: Uint8Array; - private g2Data!: Uint8Array; - - constructor( - /** - * The number of circuit gates. - */ - public readonly numPoints: number, - private path: string, - private readonly offsetStart = true, - ) {} - - /** - * Read the data file. - */ - async init() { - // We need numPoints number of g1 points. - const g1Start = this.offsetStart ? 28 : 0; - const g1Length = this.numPoints * 64; - - const g2Start = 28 + 5_040_001 * 64; // = 322_560_092 - const g2Length = 128; - // Lazily seek our data - const fileHandle = await open(this.path, 'r'); - try { - this.data = Buffer.alloc(g1Length); - await fileHandle.read(this.data, 0, g1Length, g1Start); - - this.g2Data = Buffer.alloc(g2Length); - await fileHandle.read(this.g2Data, 0, g2Length, this.offsetStart ? g2Start : g1Start + g1Length); - } finally { - await fileHandle.close(); - } - } - - /** - * Verification key data. - * @returns The verification key. - */ - getG1Data(): Uint8Array { - return this.data; - } - - /** - * G2 points data. - * @returns The points data. - */ - getG2Data(): Uint8Array { - return this.g2Data; - } -} - -/** - * Generic CRS finder utility class. - */ -export class Crs { - private crs: FileCrs | NetCrs; - private logger = createDebugLogger('circuits:crs'); - /** - * The path to our SRS object, assuming that we are in the aztec3-packages folder structure. - */ - private devPath = '/../../../../barretenberg/cpp/srs_db/ignition/monomial/transcript00.dat'; - /** - * The path of our SRS object, if we downloaded on init. - */ - private localPath = `/../../resources/ignition/monomial/transcript00.dat`; - - constructor( - /** - * The number of circuit gates. - */ - public readonly numPoints: number, - - /** - * Option to save downloaded SRS on file. - */ - private readonly saveOnFile = true, - ) { - if (isNode) { - const devPath = join(fileURLToPath(import.meta.url), this.devPath); - const localPath = join(dirname(fileURLToPath(import.meta.url)), this.localPath); - const existsDev = existsSync(devPath); - const existsLocal = existsSync(localPath); - - if (existsDev) { - this.crs = new FileCrs(numPoints, devPath); - } else if (existsLocal) { - this.crs = new FileCrs(numPoints, localPath, false); - } else { - this.crs = new NetCrs(numPoints); - } - } else { - this.crs = new NetCrs(numPoints); - } - } - - /** - * Read CRS from our chosen source. - */ - async init() { - await this.crs.init(); - if (isNode) { - const localPath = dirname(fileURLToPath(import.meta.url)) + this.localPath; - const devPath = join(fileURLToPath(import.meta.url), this.devPath); - // save downloaded CRS on file if we don't have a local or dev version - if (this.saveOnFile && !existsSync(localPath) && !existsSync(devPath)) { - const dir = localPath.substring(0, localPath.lastIndexOf('/')); - await mkdir(dir, { recursive: true }); - - const fileHandle = await open(localPath, 'w'); - const g1Data = Buffer.from(this.crs.getG1Data()); - try { - await fileHandle.write(g1Data); - } catch (err: any) { - this.logger.warn('Failed to save CRS data: ', err.message); - } - - const g2Data = Buffer.from(this.crs.getG2Data()); - try { - await fileHandle.write(g2Data, 0, g2Data.length, g1Data.length); - // appendFileSync(localPath, Buffer.from(g2Data)); - } catch (err: any) { - this.logger.warn('Failed to append G2 data: ', err.message); - } finally { - await fileHandle.close(); - } - } - } - } - - /** - * Verification key data. - * @returns The verification key. - */ - getG1Data(): Uint8Array { - return this.crs.getG1Data(); - } - - /** - * G2 points data. - * @returns The points data. - */ - getG2Data(): Uint8Array { - return this.crs.getG2Data(); - } -} diff --git a/yarn-project/circuits.js/src/index.ts b/yarn-project/circuits.js/src/index.ts index c1b39962458..ed17d138f99 100644 --- a/yarn-project/circuits.js/src/index.ts +++ b/yarn-project/circuits.js/src/index.ts @@ -1,6 +1,4 @@ export * from './structs/index.js'; -export * from './wasm/index.js'; -export * from './rollup/index.js'; export * from './utils/jsUtils.js'; export * from './contract/index.js'; export * from './types/index.js'; diff --git a/yarn-project/circuits.js/src/rollup/index.ts b/yarn-project/circuits.js/src/rollup/index.ts deleted file mode 100644 index 9c505b9e337..00000000000 --- a/yarn-project/circuits.js/src/rollup/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { baseRollupSim } from '../cbind/circuits.gen.js'; diff --git a/yarn-project/circuits.js/src/structs/circuit_error.ts b/yarn-project/circuits.js/src/structs/circuit_error.ts deleted file mode 100644 index d8357f30200..00000000000 --- a/yarn-project/circuits.js/src/structs/circuit_error.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { BufferReader } from '@aztec/foundation/serialize'; - -import { serializeToBuffer } from '../utils/serialize.js'; - -/** - * A class representing a circuit error. - * - * Used to make C++ errors more readable on the TS side. - */ -export class CircuitError extends Error { - constructor( - /** - * Code identifying the error. - */ - public code: number, - /** - * Message describing the error. - */ - public message: string, - ) { - super(message); - } - - toBuffer() { - return serializeToBuffer(this.code, this.message); - } - - static fromBuffer(buffer: Buffer | BufferReader): CircuitError { - const reader = BufferReader.asReader(buffer); - return new CircuitError(reader.readUInt16(), reader.readString()); - } -} diff --git a/yarn-project/circuits.js/src/structs/index.ts b/yarn-project/circuits.js/src/structs/index.ts index 1b23387e994..c8ed1585aea 100644 --- a/yarn-project/circuits.js/src/structs/index.ts +++ b/yarn-project/circuits.js/src/structs/index.ts @@ -17,7 +17,6 @@ export * from './kernel/public_inputs.js'; export * from './kernel/public_inputs_final.js'; export * from './private_circuit_public_inputs.js'; export * from './public_circuit_public_inputs.js'; -export * from './circuit_error.js'; export * from './call_request.js'; export * from './call_stack_item.js'; export * from './shared.js'; diff --git a/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts b/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts index 0a02fa3d858..efbef8864c7 100644 --- a/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts +++ b/yarn-project/circuits.js/src/structs/kernel/private_kernel.ts @@ -23,7 +23,6 @@ import { PreviousKernelData } from './previous_kernel_data.js'; /** * Private call data. - * @see circuits/cpp/src/aztec3/circuits/abis/call_stack_item.hpp */ export class PrivateCallData { constructor( diff --git a/yarn-project/circuits.js/src/structs/kernel/public_inputs.ts b/yarn-project/circuits.js/src/structs/kernel/public_inputs.ts index 7c0ef83f164..9c712dd11cc 100644 --- a/yarn-project/circuits.js/src/structs/kernel/public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/kernel/public_inputs.ts @@ -6,7 +6,6 @@ import { CombinedConstantData } from './combined_constant_data.js'; /** * Public inputs of the public and private kernel circuits. - * @see circuits/cpp/src/aztec3/circuits/abis/kernel_circuit_public_inputs.hpp */ export class KernelCircuitPublicInputs { constructor( diff --git a/yarn-project/circuits.js/src/structs/kernel/public_inputs_final.ts b/yarn-project/circuits.js/src/structs/kernel/public_inputs_final.ts index dd1a1339e23..60d7a3d2a18 100644 --- a/yarn-project/circuits.js/src/structs/kernel/public_inputs_final.ts +++ b/yarn-project/circuits.js/src/structs/kernel/public_inputs_final.ts @@ -6,7 +6,6 @@ import { CombinedConstantData } from './combined_constant_data.js'; /** * Public inputs of the final ordering private kernel circuit. - * @see circuits/cpp/src/aztec3/circuits/abis/kernel_circuit_public_inputs_final.hpp */ export class KernelCircuitPublicInputsFinal { constructor( diff --git a/yarn-project/circuits.js/src/structs/proof.ts b/yarn-project/circuits.js/src/structs/proof.ts index 86c1871e6c0..a1abedf33c1 100644 --- a/yarn-project/circuits.js/src/structs/proof.ts +++ b/yarn-project/circuits.js/src/structs/proof.ts @@ -3,11 +3,10 @@ import { BufferReader } from '@aztec/foundation/serialize'; import { serializeToBuffer } from '../utils/serialize.js'; /** - * The Proof class is a wrapper around the circuits C++ proof class. + * The Proof class is a wrapper around the circuits proof. * Underlying it is a buffer of proof data in a form a barretenberg prover understands. * It provides methods to easily create, serialize, and deserialize the proof data for efficient * communication and storage. - * The class supports both Msgpack and custom buffer serialization formats. */ export class Proof { // Make sure this type is not confused with other buffer wrappers @@ -19,17 +18,6 @@ export class Proof { public buffer: Buffer, ) {} - /** - * Create a Proof from a Buffer. - * Interpreted differently for proof than fromBuffer, as msgpack handles length-encodings. - * - * @param buffer - A Buffer or BufferReader containing the length-encoded proof data. - * @returns A Proof instance containing the decoded proof data. - */ - static fromMsgpackBuffer(buffer: Buffer) { - return new Proof(buffer); - } - /** * Create a Proof from a Buffer or BufferReader. * Expects a length-encoding. @@ -43,16 +31,7 @@ export class Proof { const buf = reader.readBytes(size); return new Proof(buf); } - /** - * Convert the Proof instance to a Msgpack Buffer format. - * This function directly uses the underlying buffer, as Msgpack handles length-encodings. - * - * @returns A Buffer containing the serialized proof data in Msgpack format. - */ - public toMsgpackBuffer() { - // Interpreted differently for proof than toBuffer - return this.buffer; - } + /** * Convert the Proof instance to a custom Buffer format. * This function serializes the Proof's buffer length and data sequentially into a new Buffer. diff --git a/yarn-project/circuits.js/src/utils/call_wasm.ts b/yarn-project/circuits.js/src/utils/call_wasm.ts deleted file mode 100644 index 4214b9b42a9..00000000000 --- a/yarn-project/circuits.js/src/utils/call_wasm.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { IWasmModule } from '@aztec/foundation/wasm'; - -import { CircuitError } from '../index.js'; -import { uint8ArrayToNum } from './serialize.js'; - -const CIRCUIT_FAILURE_ERROR_CODE_LENGTH_IN_BYTES = 2; -const CIRCUIT_FAILURE_ERROR_MESSAGE_SIZE_LENGTH_IN_BYTES = 4; - -/** - * Call a wasm method. - * @param wasm - The wasm module. - * @param method - The name of the exported wasm method to call. - * @param input - The input to the wasm method (a buffer or an object serializable to a buffer). - * @param outputType - The type of the output of the wasm method. - * - */ -export function callWasm( - wasm: IWasmModule, - method: string, - input: - | Buffer - | { - /** - * Signature of the target serialization function. - */ - toBuffer: () => Buffer; - }, - outputType: { - /** - * Signature of the target deserialization function which the output type has to implement. - */ - fromBuffer: (b: Buffer) => T; - }, -): T { - const inputBuf: Buffer = input instanceof Buffer ? input : input.toBuffer(); - - // Allocate memory for the input buffer and the pointer to the pointer to the output buffer - const inputBufPtr = wasm.call('bbmalloc', inputBuf.length); - wasm.writeMemory(inputBufPtr, inputBuf); - const outputBufSizePtr = wasm.call('bbmalloc', 4); - const outputBufPtrPtr = wasm.call('bbmalloc', 4); - // Run and read outputs - const circuitFailureBufPtr = wasm.call(method, inputBufPtr, outputBufSizePtr, outputBufPtrPtr); - - // Handle wasm output and ensure memory is correctly freed even when an error occurred. - try { - const output = handleCircuitOutput(wasm, outputBufSizePtr, outputBufPtrPtr, circuitFailureBufPtr, outputType); - return output; - } finally { - // Free memory - wasm.call('bbfree', inputBufPtr); - wasm.call('bbfree', outputBufSizePtr); - wasm.call('bbfree', outputBufPtrPtr); - wasm.call('bbfree', circuitFailureBufPtr); - } -} - -/** - * Tries to deserialize the circuit output into the output type and throws a CircuitError if there was an error. - * @param wasm - The wasm wrapper. - * @param outputBufSizePtr - The pointer to the output buffer size. - * @param outputBufPtrPtr - The pointer to the pointer to the output buffer. - * @param circuitFailureBufPtr - The pointer to the circuit failure buffer. - * @param outputType - The type of the output of the wasm method. - * @returns The deserialized output. - */ -export function handleCircuitOutput( - wasm: IWasmModule, - outputBufSizePtr: number, - outputBufPtrPtr: number, - circuitFailureBufPtr: number, - outputType: { - /** - * Signature of the target deserialization function which the output type has to implement. - */ - fromBuffer: (b: Buffer) => T; - }, -): T { - if (circuitFailureBufPtr != 0) { - // there is an error: CircuitError struct is structured as: - // 1st 16 bits (2 bytes) after the `circuitFailureBufPtr` - error code (enum uint16) - // Next 32 bits (4 bytes) - error message size - // Next `error message size` bytes - error message. - // So need to first extract the error message size so we know how much memory to read for the entire error struct. - const errorMessageSizeBuffer = Buffer.from( - wasm.getMemorySlice( - circuitFailureBufPtr + CIRCUIT_FAILURE_ERROR_CODE_LENGTH_IN_BYTES, - circuitFailureBufPtr + - CIRCUIT_FAILURE_ERROR_CODE_LENGTH_IN_BYTES + - CIRCUIT_FAILURE_ERROR_MESSAGE_SIZE_LENGTH_IN_BYTES, - ), - ); - const errorMessageSize = errorMessageSizeBuffer.readUint32BE(); - // Now extract the entire `CircuitError` struct: - const errorBuf = Buffer.from( - wasm.getMemorySlice( - circuitFailureBufPtr, - circuitFailureBufPtr + - CIRCUIT_FAILURE_ERROR_CODE_LENGTH_IN_BYTES + - CIRCUIT_FAILURE_ERROR_MESSAGE_SIZE_LENGTH_IN_BYTES + - errorMessageSize, - ), - ); - const err = CircuitError.fromBuffer(errorBuf); - err.message += '\nRefer to https://docs.aztec.network/aztec/protocol/errors for more information.'; - throw err; - } - // C++ returned a null pointer i.e. circuit didn't have an error - const outputBufSize = uint8ArrayToNum(wasm.getMemorySlice(outputBufSizePtr, outputBufSizePtr + 4)); - const outputBufPtr = uint8ArrayToNum(wasm.getMemorySlice(outputBufPtrPtr, outputBufPtrPtr + 4)); - const outputBuf = Buffer.from(wasm.getMemorySlice(outputBufPtr, outputBufPtr + outputBufSize)); - const output = outputType.fromBuffer(outputBuf); - return output; -} diff --git a/yarn-project/circuits.js/src/utils/serialize.ts b/yarn-project/circuits.js/src/utils/serialize.ts index fd75c700d37..8fbe39e1879 100644 --- a/yarn-project/circuits.js/src/utils/serialize.ts +++ b/yarn-project/circuits.js/src/utils/serialize.ts @@ -97,7 +97,7 @@ export function uint8ArrayToNum(array: Uint8Array): number { } /** - * Serializes booleans in structs for calling into wasm. + * Serializes a boolean to a buffer. * @param value - Value to serialize. * @returns The serialized boolean. */ @@ -160,7 +160,7 @@ function isSerializableToBuffer32(obj: object): obj is { } /** - * Serializes a list of objects contiguously for calling into wasm. + * Serializes a list of objects contiguously. * @param objs - Objects to serialize. * @returns A buffer list with the concatenation of all fields. */ @@ -168,7 +168,6 @@ export function serializeToBufferArray(...objs: Bufferable[]): Buffer[] { let ret: Buffer[] = []; for (const obj of objs) { if (Array.isArray(obj)) { - // Note: These must match the length of the C++ structs ret = [...ret, ...serializeToBufferArray(...obj)]; } else if (Buffer.isBuffer(obj)) { ret.push(obj); @@ -190,7 +189,7 @@ export function serializeToBufferArray(...objs: Bufferable[]): Buffer[] { } /** - * Serializes a list of objects contiguously for calling into wasm. + * Serializes a list of objects contiguously. * @param objs - Objects to serialize. * @returns A single buffer with the concatenation of all fields. */ diff --git a/yarn-project/circuits.js/src/wasm/circuits_wasm.test.ts b/yarn-project/circuits.js/src/wasm/circuits_wasm.test.ts deleted file mode 100644 index d61795f9474..00000000000 --- a/yarn-project/circuits.js/src/wasm/circuits_wasm.test.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CircuitsWasm } from './circuits_wasm.js'; - -describe('basic barretenberg smoke test', () => { - let wasm: CircuitsWasm; - - beforeAll(async () => { - wasm = await CircuitsWasm.get(); - }); - - it('should new malloc, transfer and slice mem', () => { - const length = 1024; - const ptr = wasm.call('bbmalloc', length); - const buf = Buffer.alloc(length, 128); - wasm.writeMemory(ptr, buf); - const result = Buffer.from(wasm.getMemorySlice(ptr, ptr + length)); - wasm.call('bbfree', ptr); - expect(result).toStrictEqual(buf); - }); -}); diff --git a/yarn-project/circuits.js/src/wasm/circuits_wasm.ts b/yarn-project/circuits.js/src/wasm/circuits_wasm.ts deleted file mode 100644 index 29a7663e0fd..00000000000 --- a/yarn-project/circuits.js/src/wasm/circuits_wasm.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { numToUInt32BE } from '@aztec/foundation/serialize'; -import { fileURLToPath } from '@aztec/foundation/url'; -import { IWasmModule, WasmModule } from '@aztec/foundation/wasm'; - -import isNode from 'detect-node'; -import { readFile } from 'fs/promises'; -import { dirname, join } from 'path'; - -import { Crs } from '../crs/index.js'; - -const NAME = '/aztec3-circuits'; -const CODE_PATH = isNode - ? join(dirname(fileURLToPath(import.meta.url)), `../../resources/${NAME}.wasm`) - : `${NAME}.wasm`; -const MAX_SRS_POINTS = 50000; - -/** - * Get the text of a binary file, either locally or on the web. - * @param path - Path to the WASM binary. - * @returns The binary buffer. - */ -async function fetchBinary(path: string) { - if (isNode) { - return await readFile(path); - } else { - const res = await fetch(path); - return Buffer.from(await res.arrayBuffer()); - } -} -const BB_JS_NYI_ERROR = - 'NOT YET IMPLEMENTED - needed for proofs, plan is to use barretenberg.js from NPM for proofs. See https://github.com/AztecProtocol/aztec-packages/issues/781'; -/** - * A low-level wrapper for an instance of Aztec3 Circuits WASM. - */ -export class CircuitsWasm implements IWasmModule { - static instance: Promise; - - /** - * Creates a Circuits module from a properly configured WasmModule. - * Not meant for public use. - * - * @param wasm - The module configured in CircuitsWasm.new(). - */ - private constructor(private wasm: WasmModule) {} - - /** - * Get a singleton instance of the module. - * @returns The singleton. - */ - public static get(): Promise { - if (!this.instance) { - this.instance = CircuitsWasm.new(); - } - return this.instance; - } - - /** - * Create and initialize a Circuits module. Not meant for public use. - * - * Has 30 pages by default. 30*2**16 \> 1mb stack size plus other overheads. - * 8192 maximum by default. 512mb. - * @param initial - Initial memory pages. - * @param maximum - Max memory pages. - * @param loggerName - The logger name. - * @returns The wrapper. - */ - private static async new(initial = 30, maximum = 8192, loggerName = 'aztec:wasm'): Promise { - const wasm = new WasmModule( - await fetchBinary(CODE_PATH), - module => ({ - /** - * Log a string from wasm. - * @param addr - The string address to log. - */ - logstr(addr: number) { - const rawStr = wasm.getMemoryAsString(addr); - const m = wasm.getMemory(); - const str = `${rawStr} (mem: ${(m.length / (1024 * 1024)).toFixed(2)}MB)`; - if (str.startsWith('abort: ') || str.startsWith('important: ')) { - // we explicitly want to route to console.log for every abort message to not miss them: - // eslint-disable-next-line no-console - console.log(str); - } - wasm.getLogger()(str); - }, - memory: module.getRawMemory(), - // eslint-disable-next-line camelcase - set_data: () => { - wasm.getLogger()('set_data: NYI'); - }, - // eslint-disable-next-line camelcase - get_data: () => { - throw new Error(BB_JS_NYI_ERROR); - }, - }), - loggerName, - ); - await wasm.init(initial, maximum); - await CircuitsWasm.initializeSrs(wasm); - return new CircuitsWasm(wasm); - } - - /** - * Ensures the global SRS is initialized. - * Currently used in VK serialization and will be used in proofs. - * TODO(AD): proof should use external bb.js - * TODO(AD): revisit when SRS should be initialized - * @param wasm - The WASM module. - */ - private static async initializeSrs(wasm: WasmModule) { - const crs = new Crs(MAX_SRS_POINTS); - await crs.init(); - const g1Buf = wasm.call('bbmalloc', crs.getG1Data().length); - wasm.writeMemory(g1Buf, crs.getG1Data()); - const g1SizeBuf = wasm.call('bbmalloc', 4); - wasm.writeMemory(g1SizeBuf, numToUInt32BE(crs.numPoints)); - const g2Buf = wasm.call('bbmalloc', crs.getG2Data().length); - wasm.writeMemory(g2Buf, crs.getG2Data()); - wasm.call('srs_init_srs', g1Buf, g1SizeBuf, g2Buf); - wasm.call('bbfree', g1Buf); - wasm.call('bbfree', g1SizeBuf); - wasm.call('bbfree', g2Buf); - } - - /** - * Retrieve the exports object of the CircuitsWasm module. - * - * @returns An object containing exported functions and properties. - */ - public exports(): any { - return this.wasm.exports(); - } - - /** - * Get a slice of memory between two addresses. - * @param start - The start address. - * @param end - The end address. - * @returns A Uint8Array view of memory. - */ - public getMemorySlice(start: number, end: number) { - return this.wasm.getMemorySlice(start, end); - } - - /** - * Write data into the heap. - * @param arr - The data to write. - * @param offset - The address to write data at. - */ - public writeMemory(offset: number, arr: Uint8Array) { - this.wasm.writeMemory(offset, arr); - } - - /** - * Get memory as string. - * @param offset - The address to get null-terminated string data from. - * @returns JS string. - */ - public getMemoryAsString(offset: number) { - return this.wasm.getMemoryAsString(offset); - } - - /** - * Calls into the WebAssembly. - * @param name - The method name. - * @param args - The arguments to the method. - * @returns The numeric integer or address result. - */ - public call(name: string, ...args: any): number { - return this.wasm.call(name, ...args); - } -} diff --git a/yarn-project/circuits.js/src/wasm/index.ts b/yarn-project/circuits.js/src/wasm/index.ts deleted file mode 100644 index 4925d897180..00000000000 --- a/yarn-project/circuits.js/src/wasm/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { CircuitsWasm } from './circuits_wasm.js'; diff --git a/yarn-project/end-to-end/Dockerfile b/yarn-project/end-to-end/Dockerfile index e98e80c1d65..3b3a3772dfd 100644 --- a/yarn-project/end-to-end/Dockerfile +++ b/yarn-project/end-to-end/Dockerfile @@ -24,9 +24,7 @@ RUN apk update && apk add --no-cache \ ENV CHROME_BIN="/usr/bin/chromium-browser" PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true" COPY --from=builder /usr/src /usr/src -RUN rm /usr/src/yarn-project/end-to-end/src/web/aztec3-circuits.wasm RUN rm /usr/src/yarn-project/end-to-end/src/web/main.js -COPY --from=builder /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm /usr/src/yarn-project/end-to-end/src/web/aztec3-circuits.wasm COPY --from=builder /usr/src/yarn-project/aztec.js/dest/main.js /usr/src/yarn-project/end-to-end/src/web/main.js WORKDIR /usr/src/yarn-project/end-to-end diff --git a/yarn-project/end-to-end/src/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/integration_l1_publisher.test.ts index e06d67bbbb8..533bf66783a 100644 --- a/yarn-project/end-to-end/src/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/integration_l1_publisher.test.ts @@ -26,8 +26,8 @@ import { DecoderHelperAbi, InboxAbi, OutboxAbi, RollupAbi } from '@aztec/l1-arti import { EmptyRollupProver, L1Publisher, + RealRollupCircuitSimulator, SoloBlockBuilder, - WasmRollupCircuitSimulator, getHistoricBlockData, getL1Publisher, getVerificationKeys, @@ -133,7 +133,7 @@ describe('L1Publisher integration', () => { builderDb = await MerkleTrees.new(levelup((memdown as any)())).then(t => t.asLatest()); const vks = getVerificationKeys(); - const simulator = new WasmRollupCircuitSimulator(); + const simulator = new RealRollupCircuitSimulator(); const prover = new EmptyRollupProver(); builder = new SoloBlockBuilder(builderDb, vks, simulator, prover); diff --git a/yarn-project/foundation/src/serialize/free_funcs.ts b/yarn-project/foundation/src/serialize/free_funcs.ts index 20391615cb3..26bbd410108 100644 --- a/yarn-project/foundation/src/serialize/free_funcs.ts +++ b/yarn-project/foundation/src/serialize/free_funcs.ts @@ -271,7 +271,6 @@ export function to2Fields(buf: Buffer): [Fr, Fr] { throw new Error('Buffer must be 32 bytes'); } - // TS version of https://github.com/AztecProtocol/aztec-packages/blob/e2e3bf1dbeda5199060fb1711200d20414557cd4/circuits/cpp/src/aztec3/circuits/hash.hpp#L330 // Split the hash into two fields, a high and a low const buf1 = Buffer.concat([Buffer.alloc(16), buf.subarray(0, 16)]); const buf2 = Buffer.concat([Buffer.alloc(16), buf.subarray(16, 32)]); diff --git a/yarn-project/pxe/src/index.ts b/yarn-project/pxe/src/index.ts index 3aa2f478b0b..dff67ffbda4 100644 --- a/yarn-project/pxe/src/index.ts +++ b/yarn-project/pxe/src/index.ts @@ -4,7 +4,7 @@ export * from './config/index.js'; export { Tx, TxHash } from '@aztec/types'; -export { TxRequest, CircuitsWasm, PartialAddress } from '@aztec/circuits.js'; +export { TxRequest, PartialAddress } from '@aztec/circuits.js'; export * from '@aztec/foundation/fields'; export * from '@aztec/foundation/eth-address'; export * from '@aztec/foundation/aztec-address'; diff --git a/yarn-project/pxe/src/kernel_prover/proof_creator.ts b/yarn-project/pxe/src/kernel_prover/proof_creator.ts index acb29674a29..3d17fe44dd1 100644 --- a/yarn-project/pxe/src/kernel_prover/proof_creator.ts +++ b/yarn-project/pxe/src/kernel_prover/proof_creator.ts @@ -85,10 +85,10 @@ export interface ProofCreator { /** * The KernelProofCreator class is responsible for generating siloed commitments and zero-knowledge proofs - * for private kernel circuit. It leverages Barretenberg and Circuits Wasm libraries - * to perform cryptographic operations and proof creation. The class provides methods to compute commitments - * based on the given public inputs and to generate proofs based on signed transaction requests, previous kernel - * data, private call data, and a flag indicating whether it's the first iteration or not. + * for private kernel circuit. It leverages Barretenberg to perform cryptographic operations and proof creation. + * The class provides methods to compute commitments based on the given public inputs and to generate proofs based on + * signed transaction requests, previous kernel data, private call data, and a flag indicating whether it's the first + * iteration or not. */ export class KernelProofCreator implements ProofCreator { constructor(private log = createDebugLogger('aztec:kernel_proof_creator')) {} diff --git a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts index b76c03f88ef..ea943c69120 100644 --- a/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts +++ b/yarn-project/sequencer-client/src/block_builder/solo_block_builder.test.ts @@ -59,7 +59,7 @@ import { } from '../sequencer/processed_tx.js'; import { getHistoricBlockData } from '../sequencer/utils.js'; import { RollupSimulator } from '../simulator/index.js'; -import { WasmRollupCircuitSimulator } from '../simulator/rollup.js'; +import { RealRollupCircuitSimulator } from '../simulator/rollup.js'; import { SoloBlockBuilder } from './solo_block_builder.js'; export const createMemDown = () => (memdown as any)() as MemDown; @@ -284,7 +284,7 @@ describe('sequencer/solo_block_builder', () => { describe('circuits simulator', () => { beforeEach(() => { - const simulator = new WasmRollupCircuitSimulator(); + const simulator = new RealRollupCircuitSimulator(); const prover = new EmptyRollupProver(); builder = new SoloBlockBuilder(builderDb, vks, simulator, prover); }); @@ -382,7 +382,7 @@ describe('sequencer/solo_block_builder', () => { // This test specifically tests nullifier values which previously caused e2e_private_token test to fail it('e2e_private_token edge case regression test on nullifier values', async () => { - const simulator = new WasmRollupCircuitSimulator(); + const simulator = new RealRollupCircuitSimulator(); const prover = new EmptyRollupProver(); builder = new SoloBlockBuilder(builderDb, vks, simulator, prover); // update the starting tree diff --git a/yarn-project/sequencer-client/src/client/sequencer-client.ts b/yarn-project/sequencer-client/src/client/sequencer-client.ts index 3db4afbb563..ea0261c07e6 100644 --- a/yarn-project/sequencer-client/src/client/sequencer-client.ts +++ b/yarn-project/sequencer-client/src/client/sequencer-client.ts @@ -8,7 +8,7 @@ import { getGlobalVariableBuilder } from '../global_variable_builder/index.js'; import { Sequencer, SequencerConfig, getL1Publisher, getVerificationKeys } from '../index.js'; import { EmptyRollupProver } from '../prover/empty.js'; import { PublicProcessorFactory } from '../sequencer/public_processor.js'; -import { WasmRollupCircuitSimulator } from '../simulator/rollup.js'; +import { RealRollupCircuitSimulator } from '../simulator/rollup.js'; /** * Encapsulates the full sequencer and publisher. @@ -41,7 +41,7 @@ export class SequencerClient { const blockBuilder = new SoloBlockBuilder( merkleTreeDb, getVerificationKeys(), - new WasmRollupCircuitSimulator(), + new RealRollupCircuitSimulator(), new EmptyRollupProver(), ); diff --git a/yarn-project/sequencer-client/src/index.ts b/yarn-project/sequencer-client/src/index.ts index f95eed98741..c2c445dd1da 100644 --- a/yarn-project/sequencer-client/src/index.ts +++ b/yarn-project/sequencer-client/src/index.ts @@ -9,7 +9,7 @@ export * from './sequencer/public_processor.js'; export * from './global_variable_builder/index.js'; // Used by publisher test in e2e -export { WasmRollupCircuitSimulator } from './simulator/rollup.js'; +export { RealRollupCircuitSimulator } from './simulator/rollup.js'; export { EmptyRollupProver } from './prover/empty.js'; export { SoloBlockBuilder } from './block_builder/solo_block_builder.js'; export { makeProcessedTx, makeEmptyProcessedTx } from './sequencer/processed_tx.js'; diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts index 6f981a34d67..621018a0459 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.test.ts @@ -44,7 +44,7 @@ import times from 'lodash.times'; import { PublicProver } from '../prover/index.js'; import { PublicKernelCircuitSimulator } from '../simulator/index.js'; import { ContractsDataSourcePublicDB, WorldStatePublicDB } from '../simulator/public_executor.js'; -import { WasmPublicKernelCircuitSimulator } from '../simulator/public_kernel.js'; +import { RealPublicKernelCircuitSimulator } from '../simulator/public_kernel.js'; import { PublicProcessor } from './public_processor.js'; describe('public_processor', () => { @@ -133,7 +133,7 @@ describe('public_processor', () => { beforeEach(() => { const path = times(PUBLIC_DATA_TREE_HEIGHT, i => Buffer.alloc(32, i)); db.getSiblingPath.mockResolvedValue(new SiblingPath(PUBLIC_DATA_TREE_HEIGHT, path)); - publicKernel = new WasmPublicKernelCircuitSimulator(); + publicKernel = new RealPublicKernelCircuitSimulator(); processor = new PublicProcessor( db, publicExecutor, diff --git a/yarn-project/sequencer-client/src/sequencer/public_processor.ts b/yarn-project/sequencer-client/src/sequencer/public_processor.ts index fbb3ab7e8ad..e243f5c82e5 100644 --- a/yarn-project/sequencer-client/src/sequencer/public_processor.ts +++ b/yarn-project/sequencer-client/src/sequencer/public_processor.ts @@ -50,7 +50,7 @@ import { EmptyPublicProver } from '../prover/empty.js'; import { PublicProver } from '../prover/index.js'; import { PublicKernelCircuitSimulator } from '../simulator/index.js'; import { ContractsDataSourcePublicDB, WorldStateDB, WorldStatePublicDB } from '../simulator/public_executor.js'; -import { WasmPublicKernelCircuitSimulator } from '../simulator/public_kernel.js'; +import { RealPublicKernelCircuitSimulator } from '../simulator/public_kernel.js'; import { FailedTx, ProcessedTx, makeEmptyProcessedTx, makeProcessedTx } from './processed_tx.js'; import { getHistoricBlockData } from './utils.js'; @@ -83,7 +83,7 @@ export class PublicProcessorFactory { return new PublicProcessor( this.merkleTree, publicExecutor, - new WasmPublicKernelCircuitSimulator(), + new RealPublicKernelCircuitSimulator(), new EmptyPublicProver(), globalVariables, blockData, diff --git a/yarn-project/sequencer-client/src/simulator/public_kernel.ts b/yarn-project/sequencer-client/src/simulator/public_kernel.ts index 54cf4263118..dbbbe9fc268 100644 --- a/yarn-project/sequencer-client/src/simulator/public_kernel.ts +++ b/yarn-project/sequencer-client/src/simulator/public_kernel.ts @@ -7,9 +7,9 @@ import { CircuitSimulationStats } from '@aztec/types/stats'; import { PublicKernelCircuitSimulator } from './index.js'; /** - * Implements the PublicKernelCircuitSimulator by calling the wasm implementations of the circuits. + * Implements the PublicKernelCircuitSimulator. */ -export class WasmPublicKernelCircuitSimulator implements PublicKernelCircuitSimulator { +export class RealPublicKernelCircuitSimulator implements PublicKernelCircuitSimulator { private log = createDebugLogger('aztec:public-kernel-simulator'); /** diff --git a/yarn-project/sequencer-client/src/simulator/rollup.ts b/yarn-project/sequencer-client/src/simulator/rollup.ts index 127703b6a69..6737626253d 100644 --- a/yarn-project/sequencer-client/src/simulator/rollup.ts +++ b/yarn-project/sequencer-client/src/simulator/rollup.ts @@ -13,9 +13,16 @@ import { CircuitSimulationStats } from '@aztec/types/stats'; import { RollupSimulator } from './index.js'; /** - * Implements the rollup circuit simulator using the wasm circuits implementation. + * */ -export class WasmRollupCircuitSimulator implements RollupSimulator { +function executeBaseRollup(_input: BaseRollupInputs): Promise { + return {} as any; +} + +/** + * Implements the rollup circuit simulator. + */ +export class RealRollupCircuitSimulator implements RollupSimulator { private log = createDebugLogger('aztec:rollup-simulator'); /** diff --git a/yarn-project/world-state/src/world-state-db/merkle_trees.ts b/yarn-project/world-state/src/world-state-db/merkle_trees.ts index 33baba1e72e..16275724b9b 100644 --- a/yarn-project/world-state/src/world-state-db/merkle_trees.ts +++ b/yarn-project/world-state/src/world-state-db/merkle_trees.ts @@ -66,7 +66,6 @@ export class MerkleTrees implements MerkleTreeDb { /** * initializes the collection of Merkle Trees. - * @param optionalWasm - WASM instance to use for hashing (if not provided PrimitivesWasm will be used). * @param fromDbOptions - Options to initialize the trees from the database. */ public async init(fromDbOptions?: FromDbOptions) { @@ -135,7 +134,6 @@ export class MerkleTrees implements MerkleTreeDb { /** * Method to asynchronously create and initialize a MerkleTrees instance. * @param db - The db instance to use for data persistance. - * @param wasm - WASM instance to use for hashing (if not provided PrimitivesWasm will be used). * @returns - A fully initialized MerkleTrees instance. */ public static async new(db: levelup.LevelUp) { diff --git a/yarn-project/yarn-project-base/Dockerfile b/yarn-project/yarn-project-base/Dockerfile index 0ce208ab3d3..9d49c6d980e 100644 --- a/yarn-project/yarn-project-base/Dockerfile +++ b/yarn-project/yarn-project-base/Dockerfile @@ -1,7 +1,7 @@ # This base Dockerfile is for: # - Caching the workspace dependencies. # - Running workspace checks (package.json inheritance, tsconfig.json project references). -# - Bringing in any upstream artifacts such as circuits.wasm and L1 contracts. +# - Bringing in any upstream resources such as L1 contract artifacts and bb.js. # - Performing any code generation that doesn't require the workspace code to do so (generate L1 artifacts). # # When installing workspace dependencies, there are issues with doing this naively: @@ -40,17 +40,12 @@ # RUN yarn cache clean && yarn workspaces focus --production # - Create final slim image by copying /usr/src into a fresh image. # -FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/circuits-wasm-linux-clang as circuits FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/l1-contracts as contracts FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/bb.js as bb.js FROM node:18-alpine RUN apk update && apk add --no-cache bash jq curl -# Bring in circuits wasms. -COPY --from=circuits /usr/src/circuits/cpp/build-wasm/bin /usr/src/circuits/cpp/build-wasm/bin -# Copy ignition download script. -COPY --from=circuits /usr/src/barretenberg/cpp/srs_db/download_ignition.sh /usr/src/barretenberg/cpp/srs_db/download_ignition.sh # Copy L1 contracts. COPY --from=contracts /usr/src/l1-contracts /usr/src/l1-contracts # Copy in bb.js diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index 310ecc555ab..8a903eec12a 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -348,26 +348,15 @@ __metadata: "@aztec/bb.js": "portal:../../barretenberg/ts" "@aztec/foundation": "workspace:^" "@jest/globals": ^29.5.0 - "@msgpack/msgpack": ^3.0.0-beta2 - "@noble/curves": ^1.0.0 - "@types/detect-node": ^2.0.0 "@types/jest": ^29.5.0 - "@types/lodash.camelcase": ^4.3.7 "@types/lodash.chunk": ^4.2.7 - "@types/lodash.mapvalues": ^4.6.7 "@types/lodash.times": ^4.3.7 "@types/node": ^18.7.23 - cross-fetch: ^3.1.5 - detect-node: ^2.1.0 eslint: ^8.35.0 jest: ^29.5.0 - lodash.capitalize: ^4.2.1 lodash.chunk: ^4.2.0 - lodash.mapvalues: ^4.6.0 - lodash.snakecase: ^4.1.1 lodash.times: ^4.3.2 prettier: ^2.8.4 - ts-dedent: ^2.2.0 ts-jest: ^29.1.0 ts-node: ^10.9.1 tslib: ^2.4.0 @@ -3428,13 +3417,6 @@ __metadata: languageName: node linkType: hard -"@msgpack/msgpack@npm:^3.0.0-beta2": - version: 3.0.0-beta2 - resolution: "@msgpack/msgpack@npm:3.0.0-beta2" - checksum: d86e5d48146051952d6bea35a6cf733a401cf65ad5614d79689aa48c7076021737ca2c782978dd1b6c0c9c45888b246e379e45ae906179e3a0e8ef4ee6f221c1 - languageName: node - linkType: hard - "@multiformats/mafmt@npm:^12.1.2": version: 12.1.6 resolution: "@multiformats/mafmt@npm:12.1.6" @@ -4825,15 +4807,6 @@ __metadata: languageName: node linkType: hard -"@types/lodash.mapvalues@npm:^4.6.7": - version: 4.6.7 - resolution: "@types/lodash.mapvalues@npm:4.6.7" - dependencies: - "@types/lodash": "*" - checksum: f28db2c0629ddff44f42ee545c35a6079ab7619d14e41eea6963a014da535346b13595391787570267b9c20457a2cc5f6d2c390e87e40f12a7618e4b7b5d6682 - languageName: node - linkType: hard - "@types/lodash.omit@npm:^4.5.7": version: 4.5.7 resolution: "@types/lodash.omit@npm:4.5.7" @@ -8636,7 +8609,7 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:^3.1.4, cross-fetch@npm:^3.1.5": +"cross-fetch@npm:^3.1.4": version: 3.1.8 resolution: "cross-fetch@npm:3.1.8" dependencies: @@ -14333,13 +14306,6 @@ __metadata: languageName: node linkType: hard -"lodash.mapvalues@npm:^4.6.0": - version: 4.6.0 - resolution: "lodash.mapvalues@npm:4.6.0" - checksum: 0ff1b252fda318fc36e47c296984925e98fbb0fc5a2ecc4ef458f3c739a9476d47e40c95ac653e8314d132aa59c746d4276527b99d6e271940555c6e12d2babd - languageName: node - linkType: hard - "lodash.memoize@npm:4.x": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" @@ -19072,13 +19038,6 @@ __metadata: languageName: node linkType: hard -"ts-dedent@npm:^2.2.0": - version: 2.2.0 - resolution: "ts-dedent@npm:2.2.0" - checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af - languageName: node - linkType: hard - "ts-essentials@npm:^7.0.3": version: 7.0.3 resolution: "ts-essentials@npm:7.0.3" From a7a831fbfbc63121f2b7942820117e1baaac6672 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Fri, 24 Nov 2023 18:04:45 +0000 Subject: [PATCH 07/11] Cleanup. --- yarn-project/sequencer-client/src/simulator/rollup.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/yarn-project/sequencer-client/src/simulator/rollup.ts b/yarn-project/sequencer-client/src/simulator/rollup.ts index 6737626253d..f83015f2d4d 100644 --- a/yarn-project/sequencer-client/src/simulator/rollup.ts +++ b/yarn-project/sequencer-client/src/simulator/rollup.ts @@ -12,13 +12,6 @@ import { CircuitSimulationStats } from '@aztec/types/stats'; import { RollupSimulator } from './index.js'; -/** - * - */ -function executeBaseRollup(_input: BaseRollupInputs): Promise { - return {} as any; -} - /** * Implements the rollup circuit simulator. */ From 483ac15a2531335bc860ef5fe7aae30b9ed38ba9 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Sat, 25 Nov 2023 11:10:36 +0000 Subject: [PATCH 08/11] Add identifier for docs. --- yarn-project/aztec-nr/aztec/src/constants_gen.nr | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/yarn-project/aztec-nr/aztec/src/constants_gen.nr b/yarn-project/aztec-nr/aztec/src/constants_gen.nr index 0fa89a3eee6..aaef6490e4d 100644 --- a/yarn-project/aztec-nr/aztec/src/constants_gen.nr +++ b/yarn-project/aztec-nr/aztec/src/constants_gen.nr @@ -1,5 +1,7 @@ global ARGS_LENGTH: Field = 16; global RETURN_VALUES_LENGTH: Field = 4; + +// docs:start:constants global MAX_NEW_COMMITMENTS_PER_CALL: Field = 16; global MAX_NEW_NULLIFIERS_PER_CALL: Field = 16; global MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL: Field = 4; @@ -22,6 +24,8 @@ global MAX_READ_REQUESTS_PER_TX: Field = 128; global MAX_PENDING_READ_REQUESTS_PER_TX: Field = 128; global NUM_ENCRYPTED_LOGS_HASHES_PER_TX: Field = 1; global NUM_UNENCRYPTED_LOGS_HASHES_PER_TX: Field = 1; +// docs:end:constants + global NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP: Field = 16; global KERNELS_PER_BASE_ROLLUP: Field = 2; global MAX_NEW_NULLIFIERS_PER_BASE_ROLLUP: Field = 128; From 92033d413a28fd463dbb2b1194eedcb3cd040529 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Sat, 25 Nov 2023 11:22:18 +0000 Subject: [PATCH 09/11] Copy over comments for constants. --- .../aztec-nr/aztec/src/constants_gen.nr | 63 +++++++++++++++++++ .../circuits.js/src/scripts/constants.in.ts | 2 +- 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/yarn-project/aztec-nr/aztec/src/constants_gen.nr b/yarn-project/aztec-nr/aztec/src/constants_gen.nr index aaef6490e4d..368810a0a42 100644 --- a/yarn-project/aztec-nr/aztec/src/constants_gen.nr +++ b/yarn-project/aztec-nr/aztec/src/constants_gen.nr @@ -1,7 +1,28 @@ global ARGS_LENGTH: Field = 16; global RETURN_VALUES_LENGTH: Field = 4; +/** + * Convention for constant array lengths are mainly divided in 2 classes: + * - FUNCTION CALL + * - TRANSACTION + * + * Agreed convention is to use MAX_XXX_PER_CALL resp. MAX_XXX_PER_TX, where XXX denotes a type of element such as + * commitment, or nullifier, e.g.,: + * - MAX_NEW_NULLIFIERS_PER_CALL + * - MAX_NEW_COMMITMENTS_PER_TX + * + * In the kernel circuits, we accumulate elements such as commitments and the nullifiers from all functions calls in a + * transaction. Therefore, we always must have: + * MAX_XXX_PER_TX ≥ MAX_XXX_PER_CALL + * + * For instance: + * MAX_NEW_COMMITMENTS_PER_TX ≥ MAX_NEW_COMMITMENTS_PER_CALL + * MAX_NEW_NULLIFIERS_PER_TX ≥ MAX_NEW_NULLIFIERS_PER_CALL + * + */ + // docs:start:constants +// "PER CALL" CONSTANTS global MAX_NEW_COMMITMENTS_PER_CALL: Field = 16; global MAX_NEW_NULLIFIERS_PER_CALL: Field = 16; global MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL: Field = 4; @@ -11,6 +32,8 @@ global MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL: Field = 16; global MAX_PUBLIC_DATA_READS_PER_CALL: Field = 16; global MAX_READ_REQUESTS_PER_CALL: Field = 32; global MAX_PENDING_READ_REQUESTS_PER_CALL: Field = 32; + +// "PER TRANSACTION" CONSTANTS global MAX_NEW_COMMITMENTS_PER_TX: Field = 64; global MAX_NEW_NULLIFIERS_PER_TX: Field = 64; global MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX: Field = 8; @@ -26,11 +49,15 @@ global NUM_ENCRYPTED_LOGS_HASHES_PER_TX: Field = 1; global NUM_UNENCRYPTED_LOGS_HASHES_PER_TX: Field = 1; // docs:end:constants +// ROLLUP CONTRACT CONSTANTS - constants used only in l1-contracts global NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP: Field = 16; +// TODO(961): Use this constant everywhere instead of hard-coded "2". global KERNELS_PER_BASE_ROLLUP: Field = 2; global MAX_NEW_NULLIFIERS_PER_BASE_ROLLUP: Field = 128; global MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_BASE_ROLLUP: Field = 32; global MAX_PUBLIC_DATA_READS_PER_BASE_ROLLUP: Field = 32; + +// TREES RELATED CONSTANTS global VK_TREE_HEIGHT: Field = 3; global FUNCTION_TREE_HEIGHT: Field = 4; global CONTRACT_TREE_HEIGHT: Field = 16; @@ -39,6 +66,8 @@ global PUBLIC_DATA_TREE_HEIGHT: Field = 254; global NULLIFIER_TREE_HEIGHT: Field = 20; global L1_TO_L2_MSG_TREE_HEIGHT: Field = 16; global ROLLUP_VK_TREE_HEIGHT: Field = 8; + +// SUB-TREES RELATED CONSTANTS global CONTRACT_SUBTREE_HEIGHT: Field = 1; global CONTRACT_SUBTREE_SIBLING_PATH_LENGTH: Field = 15; global NOTE_HASH_SUBTREE_HEIGHT: Field = 7; @@ -48,22 +77,37 @@ global HISTORIC_BLOCKS_TREE_HEIGHT: Field = 16; global NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH: Field = 13; global L1_TO_L2_MSG_SUBTREE_HEIGHT: Field = 4; global L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH: Field = 12; + +// MISC CONSTANTS global FUNCTION_SELECTOR_NUM_BYTES: Field = 4; global MAPPING_SLOT_PEDERSEN_SEPARATOR: Field = 4; global NUM_FIELDS_PER_SHA256: Field = 2; + +// NOIR CONSTANTS - constants used only in yarn-packages/noir-contracts +// Some are defined here because Noir doesn't yet support globals referencing other globals yet. +// Move these constants to a noir file once the issue bellow is resolved: +// https://github.com/noir-lang/noir/issues/1734 global L1_TO_L2_MESSAGE_LENGTH: Field = 8; global L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH: Field = 26; global MAX_NOTE_FIELDS_LENGTH: Field = 20; +// GET_NOTE_ORACLE_RETURN_LENGT = MAX_NOTE_FIELDS_LENGTH + 1 + 2 +// The plus 1 is 1 extra field for nonce. +// + 2 for EXTRA_DATA: [number_of_return_notes, contract_address] global GET_NOTE_ORACLE_RETURN_LENGTH: Field = 23; global MAX_NOTES_PER_PAGE: Field = 10; +// VIEW_NOTE_ORACLE_RETURN_LENGTH = MAX_NOTES_PER_PAGE * (MAX_NOTE_FIELDS_LENGTH + 1) + 2; global VIEW_NOTE_ORACLE_RETURN_LENGTH: Field = 212; global CALL_CONTEXT_LENGTH: Field = 7; global HISTORIC_BLOCK_DATA_LENGTH: Field = 7; global FUNCTION_DATA_LENGTH: Field = 4; global CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6; +// Change this ONLY if you have changed the PrivateCircuitPublicInputs structure. +// In other words, if the structure/size of the public inputs of a function call changes then we +// should change this constant as well as the offsets in private_call_stack_item.nr global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 155; global CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3; global CONTRACT_STORAGE_READ_LENGTH: Field = 2; +// Change this ONLY if you have changed the PublicCircuitPublicInputs structure. global PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 142; global GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674; global EMPTY_NULLIFIED_COMMITMENT: Field = 1000000; @@ -78,6 +122,23 @@ global CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP: Field = 128; global CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP_UNPADDED: Field = 104; global L2_TO_L1_MSGS_NUM_BYTES_PER_BASE_ROLLUP: Field = 128; global LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP: Field = 128; + +/** + * Enumerate the hash_indices which are used for pedersen hashing. + * We start from 1 to avoid the default generators. The generator indices are listed + * based on the number of elements each index hashes. The following conditions must be met: + * + * +-----------+-------------------------------+----------------------+ + * | Hash size | Number of elements hashed (n) | Condition to use | + * |-----------+-------------------------------+----------------------| + * | LOW | n ≤ 8 | 0 < hash_index ≤ 32 | + * | MID | 8 < n ≤ 16 | 32 < hash_index ≤ 40 | + * | HIGH | 16 < n ≤ 48 | 40 < hash_index ≤ 48 | + * +-----------+-------------------------------+----------------------+ + * + * Note: When modifying, modify `GeneratorIndexPacker` in packer.hpp accordingly. + */ +// Indices with size ≤ 8 global GENERATOR_INDEX__COMMITMENT = 1; global GENERATOR_INDEX__COMMITMENT_NONCE = 2; global GENERATOR_INDEX__UNIQUE_COMMITMENT = 3; @@ -106,8 +167,10 @@ global GENERATOR_INDEX__SIGNED_TX_REQUEST = 25; global GENERATOR_INDEX__GLOBAL_VARIABLES = 26; global GENERATOR_INDEX__PARTIAL_ADDRESS = 27; global GENERATOR_INDEX__BLOCK_HASH = 28; +// Indices with size ≤ 16 global GENERATOR_INDEX__TX_REQUEST = 33; global GENERATOR_INDEX__SIGNATURE_PAYLOAD = 34; +// Indices with size ≤ 44 global GENERATOR_INDEX__VK = 41; global GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS = 42; global GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS = 43; diff --git a/yarn-project/circuits.js/src/scripts/constants.in.ts b/yarn-project/circuits.js/src/scripts/constants.in.ts index c74a728e36d..123bea6ffce 100644 --- a/yarn-project/circuits.js/src/scripts/constants.in.ts +++ b/yarn-project/circuits.js/src/scripts/constants.in.ts @@ -119,7 +119,7 @@ function parseNoirFile(fileContent: string): ParsedContent { fileContent.split('\n').forEach(l => { const line = l.trim(); - if (!line || line.startsWith('//')) { + if (!line || line.match(/^\/\/|\/?\*/)) { return; } From 7e3cf4bdc6e7b6a38f6660919fd42f499c3f4ba4 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Sat, 25 Nov 2023 11:24:00 +0000 Subject: [PATCH 10/11] Update test name in snapshot. --- .../src/abis/__snapshots__/abis.test.ts.snap | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap index 61ad9e089cd..f297d6a2a49 100644 --- a/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap +++ b/yarn-project/circuits.js/src/abis/__snapshots__/abis.test.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`abis wasm bindings compute globals hash 1`] = ` +exports[`abis compute globals hash 1`] = ` Fr { "asBigInt": 19996198784166720428914107076917074510032365849254400404611644441094528984289n, "asBuffer": { @@ -43,7 +43,7 @@ Fr { } `; -exports[`abis wasm bindings compute private call stack item hash 1`] = ` +exports[`abis compute private call stack item hash 1`] = ` Fr { "asBigInt": 3230879723118793997125108252427471059552102155544558929105689542823769599571n, "asBuffer": { @@ -86,7 +86,7 @@ Fr { } `; -exports[`abis wasm bindings compute public call stack item hash 1`] = ` +exports[`abis compute public call stack item hash 1`] = ` Fr { "asBigInt": 1369626479296628599511967895314683808250163038382688147156251959177959447826n, "asBuffer": { @@ -129,7 +129,7 @@ Fr { } `; -exports[`abis wasm bindings compute secret message hash 1`] = ` +exports[`abis compute secret message hash 1`] = ` Fr { "asBigInt": 6220068662483113241527007349428551778669520744131373768997518428761948042030n, "asBuffer": { @@ -172,7 +172,7 @@ Fr { } `; -exports[`abis wasm bindings compute tx hash 1`] = ` +exports[`abis compute tx hash 1`] = ` Fr { "asBigInt": 11028384086470399424960241201065432836500251313078792361310973684322431200173n, "asBuffer": { @@ -215,7 +215,7 @@ Fr { } `; -exports[`abis wasm bindings computes a complete address 1`] = ` +exports[`abis computes a complete address 1`] = ` CompleteAddress { "address": AztecAddress { "asBigInt": 11147987456032716744065611270804907827731877483785437429582589518717493164615n, @@ -383,7 +383,7 @@ CompleteAddress { } `; -exports[`abis wasm bindings computes a contract address from partial 1`] = ` +exports[`abis computes a contract address from partial 1`] = ` AztecAddress { "asBigInt": 15451914702384811781262267264665450579243110288870049455159710794697789874663n, "asBuffer": { @@ -426,7 +426,7 @@ AztecAddress { } `; -exports[`abis wasm bindings computes a function leaf 1`] = ` +exports[`abis computes a function leaf 1`] = ` Fr { "asBigInt": 8957681167943973616438847631514238173699549883609341685749385526208761312950n, "asBuffer": { @@ -469,7 +469,7 @@ Fr { } `; -exports[`abis wasm bindings computes a function selector 1`] = ` +exports[`abis computes a function selector 1`] = ` { "data": [ 169, @@ -481,7 +481,7 @@ exports[`abis wasm bindings computes a function selector 1`] = ` } `; -exports[`abis wasm bindings computes block hash with globals 1`] = ` +exports[`abis computes block hash with globals 1`] = ` Fr { "asBigInt": 7177915431153102916601456081755280584460785548870192083974540199919775120827n, "asBuffer": { @@ -524,7 +524,7 @@ Fr { } `; -exports[`abis wasm bindings computes commitment nonce 1`] = ` +exports[`abis computes commitment nonce 1`] = ` Fr { "asBigInt": 7653394882992289714855533169019502055399179742531912347686813547951736946253n, "asBuffer": { @@ -567,7 +567,7 @@ Fr { } `; -exports[`abis wasm bindings computes contract leaf 1`] = ` +exports[`abis computes contract leaf 1`] = ` Fr { "asBigInt": 16936439505140127403707082829495438425474294111732402569080458144683824428771n, "asBuffer": { @@ -610,7 +610,7 @@ Fr { } `; -exports[`abis wasm bindings computes function tree root 1`] = ` +exports[`abis computes function tree root 1`] = ` Fr { "asBigInt": 21090938391652199999535994101952511109725456907725564751008805452452294036010n, "asBuffer": { @@ -653,7 +653,7 @@ Fr { } `; -exports[`abis wasm bindings computes public data tree index 1`] = ` +exports[`abis computes public data tree index 1`] = ` Fr { "asBigInt": 9076808949980998475110411569159266589807853958487763065147292518713994520820n, "asBuffer": { @@ -696,7 +696,7 @@ Fr { } `; -exports[`abis wasm bindings computes public data tree value 1`] = ` +exports[`abis computes public data tree value 1`] = ` Fr { "asBigInt": 3n, "asBuffer": { @@ -739,7 +739,7 @@ Fr { } `; -exports[`abis wasm bindings computes siloed commitment 1`] = ` +exports[`abis computes siloed commitment 1`] = ` Fr { "asBigInt": 7262347077404413274044670947879391583109741657896097604752287127491776887739n, "asBuffer": { @@ -782,7 +782,7 @@ Fr { } `; -exports[`abis wasm bindings computes siloed nullifier 1`] = ` +exports[`abis computes siloed nullifier 1`] = ` Fr { "asBigInt": 10521714890263159342521589827909786073566333899903358017581007142888032736115n, "asBuffer": { @@ -825,7 +825,7 @@ Fr { } `; -exports[`abis wasm bindings computes unique commitment 1`] = ` +exports[`abis computes unique commitment 1`] = ` Fr { "asBigInt": 13000121189816960667906065043973697710794195579570622293955220571859166513128n, "asBuffer": { @@ -868,7 +868,7 @@ Fr { } `; -exports[`abis wasm bindings computes zero contract leaf 1`] = ` +exports[`abis computes zero contract leaf 1`] = ` Fr { "asBigInt": 0n, "asBuffer": { @@ -911,7 +911,7 @@ Fr { } `; -exports[`abis wasm bindings hashes VK 1`] = ` +exports[`abis hashes VK 1`] = ` { "data": [ 4, @@ -951,7 +951,7 @@ exports[`abis wasm bindings hashes VK 1`] = ` } `; -exports[`abis wasm bindings hashes a tx request 1`] = ` +exports[`abis hashes a tx request 1`] = ` { "data": [ 24, @@ -991,7 +991,7 @@ exports[`abis wasm bindings hashes a tx request 1`] = ` } `; -exports[`abis wasm bindings hashes constructor info 1`] = ` +exports[`abis hashes constructor info 1`] = ` Fr { "asBigInt": 8554563246648466207128694080427818093826588702256491720155365584899927973422n, "asBuffer": { @@ -1034,7 +1034,7 @@ Fr { } `; -exports[`abis wasm bindings hashes empty function args 1`] = ` +exports[`abis hashes empty function args 1`] = ` Fr { "asBigInt": 0n, "asBuffer": { @@ -1077,7 +1077,7 @@ Fr { } `; -exports[`abis wasm bindings hashes function args 1`] = ` +exports[`abis hashes function args 1`] = ` Fr { "asBigInt": 11839099223661714814196842233383119055519657007373713796026764119292399532830n, "asBuffer": { @@ -1120,7 +1120,7 @@ Fr { } `; -exports[`abis wasm bindings hashes many function args 1`] = ` +exports[`abis hashes many function args 1`] = ` Fr { "asBigInt": 9368119665570837995905174888524883816390941475336228173888734493993721486827n, "asBuffer": { From f32e46432003a8968b21efe290e6024c3724cc21 Mon Sep 17 00:00:00 2001 From: Leila Wang Date: Mon, 27 Nov 2023 17:38:01 +0000 Subject: [PATCH 11/11] Recover copying assets. --- yarn-project/boxes/blank-react/webpack.config.js | 12 ++++++++++++ yarn-project/boxes/blank/webpack.config.js | 9 +++++++++ yarn-project/boxes/token/webpack.config.js | 12 ++++++++++++ 3 files changed, 33 insertions(+) diff --git a/yarn-project/boxes/blank-react/webpack.config.js b/yarn-project/boxes/blank-react/webpack.config.js index 153f7afe596..592483d3115 100644 --- a/yarn-project/boxes/blank-react/webpack.config.js +++ b/yarn-project/boxes/blank-react/webpack.config.js @@ -1,3 +1,4 @@ +import CopyWebpackPlugin from 'copy-webpack-plugin'; import { createRequire } from 'module'; import { dirname, resolve } from 'path'; import ResolveTypeScriptPlugin from 'resolve-typescript-plugin'; @@ -67,6 +68,17 @@ export default (_, argv) => ({ }, }), new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }), + new CopyWebpackPlugin({ + patterns: [ + { + from: './src/assets', + }, + { + from: './src/app/index.html', + to: 'index.html', + }, + ], + }), ], resolve: { plugins: [new ResolveTypeScriptPlugin()], diff --git a/yarn-project/boxes/blank/webpack.config.js b/yarn-project/boxes/blank/webpack.config.js index ce529b670e1..c62534fd7c2 100644 --- a/yarn-project/boxes/blank/webpack.config.js +++ b/yarn-project/boxes/blank/webpack.config.js @@ -1,3 +1,4 @@ +import CopyWebpackPlugin from 'copy-webpack-plugin'; import { createRequire } from 'module'; import { dirname, resolve } from 'path'; import ResolveTypeScriptPlugin from 'resolve-typescript-plugin'; @@ -39,6 +40,14 @@ export default (_, argv) => ({ }, }), new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }), + new CopyWebpackPlugin({ + patterns: [ + { + from: './src/index.html', + to: 'index.html', + }, + ], + }), ], resolve: { plugins: [new ResolveTypeScriptPlugin()], diff --git a/yarn-project/boxes/token/webpack.config.js b/yarn-project/boxes/token/webpack.config.js index 153f7afe596..592483d3115 100644 --- a/yarn-project/boxes/token/webpack.config.js +++ b/yarn-project/boxes/token/webpack.config.js @@ -1,3 +1,4 @@ +import CopyWebpackPlugin from 'copy-webpack-plugin'; import { createRequire } from 'module'; import { dirname, resolve } from 'path'; import ResolveTypeScriptPlugin from 'resolve-typescript-plugin'; @@ -67,6 +68,17 @@ export default (_, argv) => ({ }, }), new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }), + new CopyWebpackPlugin({ + patterns: [ + { + from: './src/assets', + }, + { + from: './src/app/index.html', + to: 'index.html', + }, + ], + }), ], resolve: { plugins: [new ResolveTypeScriptPlugin()],